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 merge
operación ,load replace
oload override
y 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