Cambiar la configuración mediante scripts SLAX y XSLT
Los scripts de eventos y operativos SLAX y XSLT pueden usar 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 pidan 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 describe cómo usar la jcs:load-configuration
plantilla para modificar la configuración.
descripción general de la plantilla jcs:load-configuration
La jcs:load-configuration
plantilla se incluye en el archivo de importación junos.xsl . La plantilla puede:
Cargar datos de configuración XML de Junos en la configuración candidata mediante una
load merge
load replace
, oload override
operación y confirmar 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 durante el tiempo que la secuencia de comandos acceda a la base de datos compartida y realice cambios en la configuración. La llamada de la plantilla puede fallar si la base de datos de configuración ya está bloqueada o si existen cambios no comprometidos en la configuración del candidato cuando se llama a la plantilla. Si la plantilla carga correctamente los datos de configuración, pero la confirmación falla, Junos OS descarta los cambios no comprometidos 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>
Debe proporcionar argumentos a la jcs:load-configuration
plantilla para especificar:
el controlador de conexión al dispositivo en el que se realizarán los cambios
los cambios que se harán 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 controlador 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 llama 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 anteriormente o puede especificar el rescue
parámetro para cargar y confirmar la configuración de rescate.
Carga y compromiso 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 cargarán y el action
parámetro especifica cómo cargar los datos. El commit-options
parámetro define las opciones que se deben usar durante la operación de confirmación.
El siguiente script operativo 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 llamada de plantilla jcs:load-configuration
a una variable temporal y ejecuta la node-set
función en esa variable. El :=
operador se asegura de que la disable-results
variable sea un conjunto de nodos en lugar de un fragmento de árbol de resultados para que la secuencia de comandos pueda tener acceso al contenido.
Sintaxis SLAX:
version 1.0; 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 acerca de 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 compromiso de la configuración de Rescate
Una configuración de rescate le permite definir una configuración en funcionamiento 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 operativo SLAX carga y confirma la configuración de rescate existente.
version 1.0; 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. La siguiente secuencia de comandos de operación SLAX solicita el número de devolución y, a continuación, carga la configuración de devolución solicitada y la confirma.
version 1.0; 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