Cambiar la configuración mediante scripts SLAX y XSLT
Los scripts de eventos y operaciones de SLAX y XSLT pueden utilizar la jcs:load-configuration plantilla para realizar cambios estructurados en la configuración de Junos OS. Los usuarios experimentados que están familiarizados con Junos OS pueden escribir scripts que soliciten la información de configuración relevante y modificar la configuración en consecuencia. Esto permite a los usuarios que tienen menos experiencia con Junos OS modificar la configuración de forma segura mediante el script.
En este tema se explica cómo usar la jcs:load-configuration plantilla para modificar la configuración.
jcs:descripción general de la plantilla de configuración de carga
La jcs:load-configuration plantilla se incluye en el archivo de importación junos.xsl . La plantilla puede:
Cargue los datos de configuración XML de Junos en la configuración candidata mediante una
load mergeoperación ,load replaceoload overridey confirme los cambiosRevertir la configuración activa a una configuración previamente confirmada
Cargar y confirmar la configuración de rescate
Cuando se llama, la jcs:load-configuration plantilla realiza las siguientes acciones en el dispositivo de destino:
Bloquea la base de datos de configuración
Carga los cambios de configuración
Confirma la configuración
Desbloquea la base de datos de configuración
La jcs:load-configuration plantilla realiza cambios en la configuración en configure exclusive modo. En este modo, Junos OS bloquea la configuración global candidata mientras el script acceda a la base de datos compartida y realice cambios en la configuración. La llamada a la plantilla puede fallar si la base de datos de configuración ya está bloqueada o si hay cambios existentes no confirmados en la configuración candidata cuando se llama a la plantilla. Si la plantilla carga correctamente los datos de configuración, pero se produce un error en la confirmación, Junos OS descarta los cambios no confirmados cuando se desbloquea la base de datos.
La sintaxis de la plantilla SLAX es:
call jcs:load-configuration($action="(merge | override | replace)", $commit-options=node-set, $configuration=configuration-data, $connection=connection-handle, $rescue="rescue", $rollback=number);
La sintaxis de la plantilla XSLT es:
<xsl:call-template name="jcs:load-configuration">
<xsl:with-param name="action" select="(merge | override | replace)"/>
<xsl:with-param name="commit-options" select="node-set"/>
<xsl:with-param name="configuration" select="configuration-data"/>
<xsl:with-param name="connection" select="connection-handle"/>
<xsl:with-param name="rescue" select=""rescue""/>
<xsl:with-param name="rollback" select="number"/>
</xsl:call-template>
Proporcione argumentos a la jcs:load-configuration plantilla para especificar:
El identificador de conexión al dispositivo en el que se realizarán los cambios
Los cambios que se deben realizar en la configuración
La acción de carga que define cómo integrar los cambios en la configuración existente
Opciones de confirmación opcionales
Debe establecer una conexión con el dispositivo de destino antes de llamar a la jcs:load-configuration plantilla. Para conectarse a un dispositivo, llame a la jcs:open() función con los argumentos necesarios. A continuación, establezca el jcs:load-configuration connection parámetro en el identificador devuelto por la jcs:open() función.
El siguiente código de ejemplo se conecta al dispositivo local y modifica la configuración:
var $conn = jcs:open();
var $results := {
call jcs:load-configuration($configuration=$config-changes, $connection=$conn);
}
var $close-results = jcs:close($conn);
Cuando llame a la jcs:load-configuration plantilla, puede incluir el configuration parámetro para cargar nuevos datos de configuración en un dispositivo, puede especificar el rollback parámetro para revertir la configuración a una configuración confirmada previamente o puede especificar el rescue parámetro para cargar y confirmar la configuración de rescate.
Carga y confirmación de datos de configuración
Los scripts SLAX y XSLT pueden llamar a la jcs:load-configuration plantilla para modificar la configuración. El configuration parámetro define los datos de configuración XML de Junos que se van a cargar y el action parámetro especifica cómo cargar los datos. El commit-options parámetro define las opciones que se van a utilizar durante la operación de confirmación.
El siguiente script de operación de ejemplo llama a la jcs:load-configuration plantilla para modificar la configuración y deshabilitar una interfaz. Todos los valores necesarios para la jcs:load-configuration plantilla se definen como variables, que luego se pasan a la plantilla como argumentos.
El := operador copia los resultados de la jcs:load-configuration llamada de plantilla a una variable temporal y ejecuta la node-set función en esa variable. El := operador se asegura de que la disable-results variable es un conjunto de nodos en lugar de un fragmento de árbol de resultados para que el script pueda acceder al contenido.
Sintaxis de SLAX:
version 1.2;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
ns ext = "http://xmlsoft.org/XSLT/namespace";
import "../import/junos.xsl";
match / {
<op-script-results> {
var $interface = jcs:get-input("Enter interface to disable: ");
var $config-changes = {
<configuration> {
<interfaces> {
<interface> {
<name> $interface;
<disable>;
}
}
}
}
var $load-action = "merge";
var $options := {
<commit-options> {
<synchronize>;
<log> "disabling interface " _ $interface;
}
}
var $conn = jcs:open();
var $results := {
call jcs:load-configuration($action=$load-action, $commit-options=$options,
$configuration=$config-changes, $connection=$conn);
}
if ($results//xnm:error) {
for-each ($results//xnm:error) {
<output> message;
}
}
var $close-results = jcs:close($conn);
}
}
Para obtener información detallada sobre este script, consulte Ejemplo: Cambiar la configuración mediante scripts operativos SLAX y XSLT.
El código XSLT equivalente para la llamada a la jcs:load-configuration plantilla es:
<xsl:variable name="disable-results-temp">
<xsl:call-template name="jcs:load-configuration">
<xsl:with-param name="action" select="$load-action"/>
<xsl:with-param name="commit-options" select="$options"/>
<xsl:with-param name="configuration" select="$disable"/>
<xsl:with-param name="connection" select="$conn"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable xmlns ext="http:xmlsoft.org/XSLT/namespace" \
name="disable-results" select="ext:node-set($disable-results-temp)"/>
Carga y confirmación de la configuración de rescate
Una configuración de rescate le permite definir una configuración de trabajo conocida o una configuración con un estado conocido que puede restaurar en cualquier momento. Los scripts SLAX y XSLT pueden llamar a la jcs:load-configuration plantilla con el rescue parámetro para cargar la configuración de rescate, si existe.
El siguiente script de operación SLAX carga y confirma la configuración de rescate existente.
version 1.2;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
import "/var/db/scripts/import/junos.xsl";
match / {
<op-script-results> {
/* Open the connection */
var $conn = jcs:open();
/* Load and commit the rescue configuration */
var $results = {
call jcs:load-configuration($connection=$conn, $rescue="rescue");
}
expr jcs:output($results);
/* Close the connection */
expr jcs:close($conn);
}
}
El script XSLT equivalente es:
<?xml version="1.0" standalone="yes"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:junos="http://xml.juniper.net/junos/*/junos"
xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm"
xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0" version="1.0">
<xsl:import href="/var/db/scripts/import/junos.xsl"/>
<xsl:template match="/">
<op-script-results>
<!-- Open the connection -->
<xsl:variable name="conn" select="jcs:open()"/>
<!-- Load and commit the rescue configuration -->
<xsl:variable name="results">
<xsl:call-template name="jcs:load-configuration">
<xsl:with-param name="connection" select="$conn"/>
<xsl:with-param name="rescue" select=""rescue""/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="jcs:output($results)"/>
<!-- Close the connection -->
<xsl:value-of select="jcs:close($conn)"/>
</op-script-results>
</xsl:template>
</xsl:stylesheet>
Revertir la configuración
Los scripts SLAX y XSLT pueden llamar a la jcs:load-configuration plantilla con el rollback parámetro para revertir la configuración a una configuración previamente confirmada. El siguiente script de operación SLAX solicita el número de reversión y, a continuación, carga la configuración de reversión solicitada y la confirma.
version 1.2;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
import "../import/junos.xsl";
match / {
<op-script-results> {
var $rollback_id = jcs:get-input("Rollback id: ");
/* Open the connection */
var $conn = jcs:open();
/* Roll back the configuration and commit it */
var $results = {
call jcs:load-configuration($connection=$conn, $rollback=$rollback_id);
}
/* Close the connection */
expr jcs:close($conn);
}
}
user@host> op load-rollback Rollback id: 1