Cómo funcionan las secuencias de comandos de confirmación
Los scripts de confirmación contienen instrucciones que aplican reglas de configuración personalizadas y se invocan durante el proceso de confirmación antes de que se realicen las comprobaciones de validez estándar de Junos OS. Para habilitar las secuencias de comandos de confirmación, enumera los nombres de uno o más archivos de script de confirmación en el [edit system scripts commit]
nivel de jerarquía. Estos archivos se deben agregar al directorio de secuencia de comandos de confirmación adecuado en el dispositivo.
Cuando se realiza una operación de confirmación, Junos OS ejecuta cada secuencia de comandos a su vez, pasando la información en la configuración del candidato posterior a la sucesión a las secuencias de comandos. El script inspecciona la configuración, realiza las pruebas y validaciones necesarias, y genera un conjunto de instrucciones para realizar determinadas acciones. Después de ejecutar todas las secuencias de comandos de confirmación, Junos OS procesa todas las instrucciones de los scripts. Si una secuencia de comandos de confirmación no detiene el proceso de confirmación, Junos OS aplica todos los cambios en la secuencia de comandos de confirmación y realiza su inspección final de la configuración de pago.
Al confirmar una configuración que es inspeccionada por uno o más scripts de confirmación, es posible que tenga que aumentar la cantidad de memoria asignada a los scripts de confirmación para adaptarse al procesamiento de configuraciones de gran tamaño. De forma predeterminada, la cantidad máxima de memoria asignada para la parte del segmento de datos de una secuencia de comandos ejecutada es la mitad de la memoria total disponible del sistema, hasta un valor máximo de 128 MB. Para aumentar la memoria máxima asignada para cada script de confirmación ejecutado, configure la max-datasize size
instrucción con un límite de memoria adecuado en bytes en el [edit system scripts commit]
nivel de jerarquía antes de confirmar la configuración.
Las acciones de script de confirmación pueden incluir la generación de mensajes de error, advertencia y registro del sistema. Si se generan errores, se produce un error en la operación de confirmación y la configuración del candidato no cambia. Este es el mismo comportamiento que ocurre con errores de confirmación estándar. Las secuencias de comandos de confirmación también pueden generar cambios en la configuración del sistema. Dado que los cambios se cargan antes de que se realicen las comprobaciones de validación estándar, se validan para obtener la sintaxis correcta, al igual que las instrucciones que ya están presentes en la configuración antes de aplicar la secuencia de comandos. Si la sintaxis es correcta, la configuración se activa y se convierte en la configuración activa y operativa del dispositivo.
Las secuencias de comandos de confirmación no pueden realizar cambios de configuración en instrucciones protegidas o dentro de jerarquías protegidas. Si una secuencia de comandos de confirmación intenta modificar o eliminar una instrucción o jerarquía protegidas, Junos OS emite una advertencia de que no se puede realizar el cambio. Si no se modifica un elemento de configuración protegido, no se detiene la secuencia de comandos de confirmación ni el proceso de confirmación.
En las siguientes secciones se analizan varios conceptos importantes relacionados con la entrada y salida de script de confirmación:
Confirmar entrada de script
La entrada para una secuencia de comandos de confirmación es la configuración del candidato posterior a la herencia en formato de API XML de Junos. El término post-herencia significa que todos los valores del grupo de configuración han sido heredados por sus destinos en la configuración candidata y que las partes inactivas de la configuración se han eliminado. Para obtener más información acerca de los grupos de configuración, consulte la Guía del usuario de la CLI.
Cuando se ejecuta el commit
comando, Junos OS genera automáticamente la configuración del candidato en formato XML y la lee en el proceso de administración (mgd), momento en el que cualquier script de confirmación evalúa la entrada.
Para mostrar el formato XML de la configuración del candidato posterior a la herencia en la CLI, ejecute el show | display commit-scripts view
comando.
[edit] user@host# show | display commit-scripts view
Para mostrar todos los datos de los grupos de configuración, incluidos los cambios generados por secuencias de comandos en los grupos, ejecute el show groups | display commit-scripts
comando.
[edit] user@host# show groups | display commit-scripts
Salida de script de confirmación
Durante el proceso de confirmación, los scripts de confirmación habilitados se ejecutan secuencialmente y el resultado de la secuencia de comandos de confirmación, o el conjunto de instrucciones, se proporciona a Junos OS. Después de ejecutar todas las secuencias de comandos de confirmación, Junos OS procesa todas las instrucciones de los scripts.
Las acciones de script de confirmación pueden incluir la generación de mensajes de advertencia, error y registro del sistema, y la realización de cambios persistentes y transitorios en la configuración. La Tabla 1 describe brevemente los distintos elementos, plantillas y funciones que pueden usar las secuencias de comandos de confirmación para indicar a Junos OS que realice varias acciones durante el proceso de confirmación. En algunos casos, hay varias maneras de realizar la misma acción. Dado que las secuencias de comandos SLAX y XSLT devuelven un árbol de resultados, elementos de salida como <syslog><message>
los que están presentes en los scripts SLAX y XSLT se agregan directamente al árbol de resultados.
Salida de script de confirmación |
SLAX /XSLT |
Python |
---|---|---|
Genere un mensaje de advertencia al usuario que confirma. |
|
jcs.emit_warning() |
Genere un mensaje de error y cause un error en la operación de confirmación. |
|
jcs.emit_error() |
Generar un mensaje de registro del sistema. |
jcs:syslog()
|
jcs.syslog() |
Genere un cambio persistente en la configuración. |
|
emit_change(content, 'cambio', format) |
Genere un cambio transitorio en la configuración. |
|
emit_change(content, 'cambio transitorio', format) |
Genere un cambio persistente en relación con el nodo de contexto actual según lo definido por una expresión XPath . |
XSLT <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="content"> SLAX call jcs:emit-change() { with $content = { } } |
– |
Genere un cambio transitorio con respecto al nodo de contexto actual según lo definido por una expresión XPath. |
XSLT <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="tag" select="'transient-change'"/> <xsl:with-param name="content"> SLAX call jcs:emit-change() { with $tag = "transient-change"; with $content = { } } |
– |
Genere un mensaje de advertencia junto con un cambio de configuración. Puede usar este conjunto de etiquetas para generar una notificación de que se ha cambiado la configuración. |
XSLT <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="message"> <xsl:text> SLAX call jcs:emit-change() { with $message = { expr "message"; } } |
jcs.emit_warning() |
Junos OS procesa este resultado y realiza las acciones adecuadas. Los errores y las advertencias se pasan a la CLI de Junos OS o a una aplicación cliente de protocolo XML de Junos. La presencia de un error provoca automáticamente un error en la operación de confirmación. Los cambios persistentes y transitorios se cargan en la base de datos de configuración adecuada.
Para probar el resultado de los mensajes de error, advertencia y registro del sistema desde scripts de confirmación, emita el commit check | display xml
comando.
[edit] user@host# commit check | display xml
Para mostrar un seguimiento detallado del procesamiento de script de confirmación, emita el commit check | display detail
comando.
[edit] user@host# commit check | display detail
Los mensajes de registro del sistema no aparecen en el resultado del seguimiento, por lo que no puede utilizar la operación de comprobación de confirmación para probar los mensajes de registro del sistema generados por secuencias de comandos. Además, los mensajes de registro del sistema se escriben en el registro del sistema durante una operación de confirmación, pero no durante una operación de comprobación de confirmación.
Confirmar scripts y el modelo de confirmación de Junos OS
Junos OS utiliza un modelo de confirmación para actualizar la configuración del dispositivo. Este modelo le permite realizar una serie de cambios en una configuración candidata sin afectar el funcionamiento del dispositivo. Cuando se completen los cambios, puede confirmar la configuración. La operación de confirmación guarda los cambios de configuración del candidato en la configuración actual.
Cuando se confirma un conjunto de cambios en la configuración candidata, se utilizan dos métodos para reenviar estos cambios a la configuración actual:
Modelo de confirmación estándar: se utiliza cuando no hay scripts de confirmación activos en el dispositivo.
Modelo de script de confirmación: incorpora scripts de confirmación en el modelo de confirmación.
Modelo de confirmación estándar
En el modelo de confirmación estándar, el proceso de administración (mgd) valida la configuración del candidato según las reglas de validación estándar de Junos OS. Si el archivo de configuración es válido, se convierte en la configuración activa actual. La Figura 1 y la conversación que acompaña explican cómo funciona el modelo de confirmación estándar.

En el modelo de confirmación estándar, el software realiza los pasos siguientes:
Cuando se confirma la configuración del candidato, se copia para convertirse en la configuración de pago.
El proceso mgd valida la configuración de compra.
Si no se produce ningún error, la configuración de compra se copia como la configuración activa actual.
Confirmar modelo con scripts de confirmación
Cuando se agregan scripts de confirmación al modelo de confirmación estándar, el proceso se vuelve más complejo. El proceso mgd pasa primero una configuración de pago con formato XML a un controlador de secuencia de comandos, que controla la verificación de la configuración de pago por los scripts de confirmación. Cuando se completa la verificación, el controlador de secuencia de comandos devuelve un archivo de acción al proceso mgd. El proceso mgd sigue las instrucciones del archivo de acción para actualizar las configuraciones de candidato y de pago, enviar mensajes a la CLI o la aplicación cliente, y escribir información en el registro del sistema según sea necesario. Después de procesar el archivo de acción, el proceso mgd realiza la validación estándar de Junos OS. La Figura 2 y la conversación que acompaña explican este proceso.

En el modelo de secuencia de comandos de confirmación, Junos OS realiza los siguientes pasos:
Cuando se confirma la configuración del candidato, el proceso mgd envía la configuración de candidato con formato XML al controlador de secuencia de comandos.
Cada secuencia de comandos de confirmación habilitada se invoca contra la configuración del candidato y cada secuencia de comandos puede generar un conjunto de acciones para que el proceso mgd realice. Las acciones se recopilan en un archivo de acción.
El proceso mgd realiza las siguientes acciones para confirmar errores de secuencia de comandos, advertencias y mensajes de registro del sistema en el archivo de acción:
error: el proceso mgd detiene el proceso de confirmación (es decir, se produce un error en la operación de confirmación), devuelve un mensaje de error al cliente del protocolo CLI o Junos XML y no realiza ninguna acción adicional.
advertencia: el proceso mgd reenvía el mensaje a la CLI o al cliente de protocolo XML de Junos.
mensaje de registro del sistema: el proceso mgd reenvía el mensaje al proceso de registro del sistema.
Si el archivo de acción incluye cambios persistentes, el proceso mgd carga los cambios solicitados en la configuración candidata.
La configuración candidata se copia para convertirse en la configuración de pago.
Si el archivo de acción incluye cambios transitorios, el proceso mgd carga los cambios solicitados en la configuración de pago.
El proceso mgd valida la configuración de compra.
Si no hay errores de validación, la configuración de pago se copia para convertirse en la configuración activa actual.
Las secuencias de comandos de confirmación no pueden realizar cambios de configuración en instrucciones protegidas o dentro de jerarquías protegidas. Si una secuencia de comandos de confirmación intenta modificar o eliminar una instrucción o jerarquía protegidas, Junos OS emite una advertencia de que no se puede realizar el cambio. Si no se modifica un elemento de configuración protegido, no se detiene la secuencia de comandos de confirmación ni el proceso de confirmación.
Las reglas personalizadas no evalúan los cambios que se realizan en la configuración del candidato durante la operación de confirmación durante esa operación de confirmación. Sin embargo, los cambios persistentes se mantienen en la configuración del candidato y las reglas personalizadas se evalúan durante las operaciones de confirmación posteriores. Para obtener más información acerca de cómo confirmar scripts cambiar la configuración del candidato, consulte Evitar posibles conflictos cuando se utilizan varios scripts de confirmación.
Las reglas personalizadas de las secuencias de comandos de confirmación nunca evalúan los cambios transitorios, ya que solo se realizan en la configuración de pago después de que las secuencias de comandos de confirmación hayan evaluado la configuración del candidato y el candidato se copie para convertirse en la configuración de pago. Para quitar un cambio transitorio de la configuración, quitar, deshabilitar o desactivar la secuencia de comandos de confirmación (como se explica en control de la ejecución de scripts de confirmación durante las operaciones de confirmación) o comentar el código que genera el cambio transitorio.
Para obtener más información acerca de las diferencias entre cambios persistentes y transitorios, consulte Descripción general de la generación de cambios de configuración persistentes o transitorios mediante scripts de confirmación.