Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Usar la utilidad de configuración de Junos PyEZ para configurar dispositivos Junos

Junos PyEZ le permite realizar cambios de configuración estructurados y no estructurados en dispositivos Junos. En este tema se explica cómo usar la jnpr.junos.utils.config.Config utilidad para realizar cambios de configuración no estructurados, que consisten en datos de configuración estáticos o con plantillas con formato de texto ASCII, elementos XML de Junos, comandos de Junos OS set o notación de objetos JavaScript (JSON). La Config utilidad también le permite revertir a una configuración previamente confirmada o revertir a una configuración de rescate.

Descripción general del proceso de configuración

Después de conectarse correctamente a un dispositivo Junos, para configurar el dispositivo mediante la Config utilidad, cree primero un Config objeto y asócielo a la Device instancia. Por ejemplo:

De forma predeterminada, Junos PyEZ actualiza la configuración global candidata (también conocida como base de datos de configuración compartida). El proceso básico para realizar cambios en la configuración consiste en bloquear la base de datos de configuración, cargar los cambios de configuración, confirmar la configuración para activarla y, a continuación, desbloquear la base de datos de configuración. Cuando utilice la utilidad Junos PyEZ Config para realizar cambios de configuración no estructurados en la base de datos de configuración compartida, puede realizar estas acciones llamando a los métodos de instancia adecuados que se describen aquí:

  1. Bloquear la configuración mediante lock()

  2. Modifique la configuración realizando una de las siguientes acciones:

  3. Confirme la configuración mediante commit() , como se describe en Confirmar la configuración y utilizar Junos PyEZ para confirmar la configuración

  4. Desbloquee la configuración mediante unlock()

También puede utilizar un administrador de contexto (with ... as sintaxis) para crear una Config instancia de objeto, y ciertos modos de configuración requieren que utilice uno. Para estos modos, Junos PyEZ bloquea y desbloquea automáticamente la configuración. Para obtener más información, consulte Especificar el modo de configuración.

Cuando utilice el load() método para modificar la configuración, además de especificar el modo de configuración, también puede especificar el tipo de operación de carga, el formato de los cambios de configuración y el origen de los datos de configuración. La Config utilidad admite muchas de las mismas operaciones y formatos de carga que están disponibles en la CLI de Junos. Para obtener más información, consulte:

Puede especificar el origen de los datos de configuración como un archivo en el servidor local, un archivo en el dispositivo de destino o un archivo en una dirección URL accesible desde el dispositivo de destino, o como una cadena, un objeto XML o una plantilla Jinja2. Para obtener información acerca de cómo especificar el origen de datos de configuración, consulte las siguientes secciones:

Especificar el modo de configuración

De forma predeterminada, cuando se crea un Config objeto y no se especifica explícitamente un modo de configuración, Junos PyEZ actualiza la configuración global candidata. También puede especificar un modo de configuración diferente para utilizarlo al modificar la base de datos de configuración. Para especificar un modo distinto del predeterminado, debe crear el Config objeto mediante un administrador de contexto y establecer el mode argumento en el modo deseado. Los modos admitidos incluyen private, exclusive, dynamic, batch, y ephemeral.

Nota:

Puede utilizar Junos PyEZ para actualizar la base de datos de configuración efímera en dispositivos compatibles con esta base de datos. La base de datos efímera es una base de datos de configuración alternativa que proporciona una interfaz programática rápida para realizar actualizaciones de configuración en dispositivos Junos. Es una característica avanzada que, si se usa incorrectamente, puede tener un grave impacto negativo en el funcionamiento del dispositivo. Para obtener más información, vea Descripción de la base de datos de configuración efímera.

Cuando se especifica un modo distinto del predeterminado, el administrador de contexto se encarga de abrir, bloquear, cerrar y desbloquear la base de datos. Esto garantiza que no abandone involuntariamente la base de datos en un estado bloqueado. En estos casos, solo necesita llamar a los load() métodos y commit() para configurar el dispositivo.

Por ejemplo, el código siguiente realiza cambios de configuración mediante el configure private modo, que abre una copia privada de la configuración candidata:

Para obtener más información acerca de los distintos modos de configuración, consulte la Guía del usuario de CLI y Uso de Junos PyEZ para configurar dispositivos Junos.

Especificar la operación de carga

Junos PyEZ admite la carga de cambios de configuración mediante el uso de muchas de las mismas operaciones de carga que se admiten en la CLI de Junos. La operación de carga deseada se especifica incluyendo u omitiendo los parámetros apropiados en el Config load() método.

En la tabla 1 se describen las operaciones de carga admitidas y el argumento del método correspondiente load() . De forma predeterminada, Junos PyEZ realiza una load replace operación. Para utilizar una operación de carga diferente, establezca el parámetro correspondiente en True en el load() método.

Tabla 1: Parámetros para especificar el tipo de operación de carga en los métodos load() y set()

Operación de carga

Argumento

Descripción

Primera versión compatible de Junos PyEZ

load merge

merge=True

Combine la configuración cargada con la configuración existente.

1.0

load override

overwrite=True

Reemplace toda la configuración por la configuración cargada.

1.0

load patch

patch=True

Cargue los datos de configuración desde un archivo de revisión.

2.4.0

load replace (predeterminado)

Combine la configuración cargada con la configuración existente, pero reemplace las instrucciones de la configuración existente por aquellas que especifican la replace: etiqueta en la configuración cargada. Si no hay ninguna instrucción en la configuración existente, se agrega la instrucción en la configuración cargada.

1.0

load update

update=True

Cargue una configuración completa y compárela con la configuración existente. Cada elemento de configuración que es diferente en la configuración cargada reemplaza su elemento correspondiente en la configuración existente. Durante la operación de confirmación, solo los procesos del sistema que se ven afectados por los elementos de configuración modificados analizan la nueva configuración.

2.1.0

En el ejemplo siguiente se realiza una load override operación, que reemplaza toda la configuración candidata por la configuración cargada y, a continuación, confirma la configuración candidata para activarla.

Especifique el formato de los datos de configuración que se van a cargar

La utilidad Junos PyEZ Config le permite configurar dispositivos Junos mediante uno de los formatos estándar compatibles. Puede proporcionar datos de configuración como cadenas, archivos, objetos XML u objetos de plantilla Jinja2. Los archivos pueden contener fragmentos de datos de configuración o plantillas Jinja2. Al proporcionar datos de configuración dentro de una cadena, archivo o plantilla Jinja2, los formatos admitidos para los datos incluyen texto ASCII, elementos XML de Junos, comandos de Junos OS set y JSON. Puede especificar el formato de los datos de configuración incluyendo explícitamente el format parámetro en el método de Config utilidad load() o agregando la extensión adecuada al archivo de datos de configuración. Si no especifica un formato, el valor predeterminado es XML.

Nota:

A partir de Junos PyEZ versión 1.2, Junos PyEZ detecta automáticamente el formato cuando proporciona los datos de configuración como una cadena.

En la tabla 2 se resumen los formatos admitidos para los datos de configuración y el valor correspondiente para la extensión format y el parámetro del archivo. Cuando utilice el formato XML de Junos para los datos de configuración, debe encerrar los datos en la etiqueta de nivel <configuration> superior.

Nota:

No es necesario incluir datos de configuración con formato de texto ASCII, comandos de Junos OS set o JSON en <configuration-text>, ni <configuration-json> etiquetas, <configuration-set>según sea necesario, al configurar el dispositivo directamente dentro de una sesión de NETCONF.

Tabla 2: Especificar el formato de los datos de configuración

Formato de datos de configuración

Extensión de archivo

parámetro format

Texto ASCII

.conf, .text .txt

Texto

Notación de objetos JavaScript (JSON)

.Json

Json

Comandos de Junos OS set

.Establecer

Establecer

Elementos XML de Junos

.Xml

Xml

Nota:

Cuando el overwrite parámetro or update se establece en True, no puede utilizar el formato de comando de Junos OS set .

Nota:

Los dispositivos que ejecutan Junos OS versión 16.1R1 o posterior admiten la carga de datos de configuración en formato JSON.

Especifique la ubicación de los datos de configuración

Junos PyEZ permite cargar datos de configuración como cadenas, archivos, objetos XML u objetos de plantilla Jinja2. Los archivos pueden contener fragmentos de datos de configuración o plantillas Jinja2.

En la tabla 3 se resumen los parámetros del load() método que se utilizan para pasar los datos de configuración o hacer referencia a su ubicación. Siempre debe especificar el formato de los datos incluyendo el format parámetro en la llamada al método, excepto cuando se utilizan cadenas, objetos XML o archivos que tienen el formato indicado por la extensión de archivo. Cuando utilice plantillas Jinja2, incluya el template_vars parámetro que desea pasar en el diccionario de variables de plantilla requeridas.

Tabla 3: Referencia a datos de configuración en el método load()

Parámetro

Origen de datos de configuración

Descripción

format Requisitos de parámetros

path

Archivo local

Ruta a un archivo en el servidor de administración de configuración local que contiene datos de configuración formateados como texto ASCII, elementos XML de Junos, comandos de Junos OS set o JSON.

Debe incluir el format parámetro cuando la extensión del archivo no indica el formato de los datos.

template

Jinja2 Objeto Template

Objeto de plantilla Jinja2 precargado.

Incluya el template_vars parámetro en la lista de argumentos del load() método para hacer referencia a un diccionario que contenga cualquier variable de plantilla Jinja2 necesaria.

Debe incluir el format parámetro cuando la extensión del archivo no indica el formato de los datos.

template_path

Archivo de plantilla Jinja2 local

Ruta a un archivo en el servidor de administración de configuración local que contiene una plantilla Jinja2 con formato de texto ASCII, elementos XML de Junos, comandos de Junos OS set o JSON.

Incluya el template_vars parámetro en la lista de argumentos del load() método para hacer referencia a un diccionario que contenga cualquier variable de plantilla Jinja2 necesaria.

Debe incluir el format parámetro cuando la extensión del archivo no indica el formato de los datos.

url

Archivo remoto

Ruta a un archivo ubicado en el dispositivo Junos o en una URL remota a la que se puede acceder desde el dispositivo Junos mediante una dirección URL FTP o de Protocolo de transferencia de hipertexto (HTTP).

Debe incluir el format parámetro cuando la extensión del archivo no indica el formato de los datos.

vargs[0]

Objeto XML

Cadena

Objeto XML o una cadena que contenga datos de configuración con formato de texto ASCII, elementos XML de Junos, comandos de Junos OS set o JSON.

Junos PyEZ detecta automáticamente el formato de los datos de configuración en este caso, y el format parámetro no es necesario.

Cargar datos de configuración desde un archivo local o remoto

Junos PyEZ le permite cargar datos de configuración formateados como texto ASCII, elementos XML de Junos, comandos de Junos OS set o JSON desde un archivo local o remoto.

Para cargar datos de configuración desde un archivo local en el servidor de administración de configuración, establezca el load() parámetro del path método en la ruta absoluta o relativa del archivo. Por ejemplo:

También puede cargar datos de configuración desde un archivo ubicado en el dispositivo Junos o en una URL accesible desde el dispositivo Junos. Para cargar datos de configuración desde un archivo en el dispositivo Junos, establezca el url parámetro en la ruta absoluta o relativa del archivo en el dispositivo de destino e incluya cualquier otro parámetro necesario para la operación de carga. Por ejemplo:

Para cargar datos de configuración desde un archivo en una dirección URL remota, establezca el url parámetro en la ubicación FTP o la dirección URL del Protocolo de transferencia de hipertexto (HTTP) de un archivo remoto e incluya cualquier otro parámetro necesario para la operación de carga. Por ejemplo:

Para obtener información detallada acerca de cómo especificar la dirección URL, consulte el atributo de url la operación del protocolo XML de Junos <load-configuration> .

Si el archivo no indica el formato de los datos de configuración mediante una de las extensiones de archivo aceptadas enumeradas en Especificar el formato de los datos de configuración que se van a cargar, debe especificar el formato incluyendo el format parámetro en la load() lista de parámetros del método. Por ejemplo:

Para obtener información sobre cómo cargar datos de configuración desde plantillas Jinja2 o archivos de plantilla , consulte Cargar datos de configuración mediante plantillas Jinja2.

Cargar datos de configuración desde una cadena

Para cargar datos de configuración con formato de texto ASCII, elementos XML de Junos, comandos de Junos OS set o JSON desde una cadena, incluya la cadena como primer argumento en la lista de argumentos de método load() . Junos PyEZ detecta automáticamente el formato de los datos de configuración en cadenas, por lo que el format parámetro es opcional en este caso.

Los siguientes fragmentos de código presentan cadenas multilínea de ejemplo que contienen datos de configuración en los distintos formatos y las llamadas correspondientes al load() método. El parámetro opcional format se incluye explícitamente en cada ejemplo para mayor claridad. En los ejemplos, cu es una instancia de la Config utilidad, que funciona en el dispositivo Junos de destino.

  • Para datos de configuración formateados como texto ASCII:

    Cargue los datos de configuración proporcionando la cadena como primer argumento de la lista y, opcionalmente, especifique format="text".

  • Para datos de configuración con formato Junos XML:

    Cargue los datos de configuración proporcionando la cadena como primer argumento de la lista y, opcionalmente, especifique format="xml".

  • Para los datos de configuración formateados como comandos de Junos OS set :

    Cargue los datos de configuración proporcionando la cadena como primer argumento de la lista y, opcionalmente, especifique format="set".

  • Para datos de configuración formateados con JSON:

    Cargue los datos de configuración proporcionando la cadena como primer argumento de la lista y, opcionalmente, especifique format="json".

Cargar datos de configuración formateados como un objeto XML

Para cargar datos de configuración con formato de objeto XML, incluya el objeto como primer argumento en la lista de argumentos de método load() y proporcione cualquier otro parámetro necesario. Dado que el formato predeterminado para los datos de configuración es XML, no es necesario incluir explícitamente el format parámetro en la llamada al método.

El código siguiente presenta un objeto XML y la llamada correspondiente al load() método:

Cargar datos de configuración con plantillas Jinja2

Junos PyEZ admite el uso de plantillas Jinja2 para representar los datos de configuración de Junos. Jinja es un motor de plantillas para Python que le permite generar documentos a partir de plantillas predefinidas. Las plantillas, que son archivos de texto en el idioma deseado, proporcionan flexibilidad mediante el uso de expresiones y variables. Puede crear datos de configuración de Junos mediante plantillas Jinja2 en uno de los formatos de configuración compatibles, que incluyen texto ASCII, elementos XML de Junos, comandos de Junos OS set y JSON. Junos PyEZ utiliza la plantilla Jinja2 y un diccionario de variables suministrado para representar los datos de configuración.

Las plantillas Jinja2 proporcionan un método eficaz para generar datos de configuración, especialmente para estrofas de configuración similares. Por ejemplo, en lugar de agregar manualmente las mismas instrucciones de configuración para cada interfaz de un dispositivo, puede crear una plantilla que recorra en iteración una lista de interfaces y cree las instrucciones de configuración necesarias para cada una. En Jinja, los bloques están delimitados por '{%' y '' y las%} variables están encerradas dentro de '{{' y '}}'.

La siguiente plantilla Jinja2 de ejemplo genera datos de configuración que habilitan MPLS en la unidad lógica 0 para cada interfaz en una lista determinada y también configura la interfaz bajo los protocolos MPLS y RSVP.

En el código de Junos PyEZ, el diccionario correspondiente de variables de plantilla Jinja2 es:

Para cargar la plantilla Jinja2 en el código de Junos PyEZ, establezca el template_path parámetro en la ruta del archivo de plantilla y establezca el template_vars parámetro en el diccionario de variables de plantilla. Si no utiliza una de las extensiones de archivo aceptadas para indicar el formato de los datos de configuración, debe incluir el format parámetro en la lista de parámetros del load() método.

Nota:

Si va a proporcionar un objeto Template Jinja2 precargado, debe utilizar el template parámetro en lugar del parámetro de la lista de load() argumentos del template_path método.

Junos PyEZ utiliza la plantilla Jinja2 y el diccionario de variables para representar los siguientes datos de configuración, que luego se cargan en la configuración candidata y se confirman en el dispositivo:

El siguiente video presenta una breve sesión de Python que muestra cómo usar una plantilla Jinja2 para configurar un dispositivo Junos.

Para obtener información adicional acerca de Jinja2, consulte la documentación de Jinja2 en https://jinja.pocoo.org/docs/.

Revertir la configuración

Los dispositivos Junos almacenan una copia de la configuración confirmada más reciente y hasta 49 configuraciones anteriores, dependiendo de la plataforma. Puede revertir a cualquiera de las configuraciones almacenadas. Esto resulta útil cuando los cambios en la configuración provocan resultados no deseados y desea volver a una configuración de trabajo conocida. La reversión de la configuración es similar al proceso para realizar cambios de configuración en el dispositivo, pero en lugar de cargar los datos de configuración, se realiza una reversión, que reemplaza toda la configuración candidata por una configuración confirmada anteriormente.

El método de clase rollback() PyEZ jnpr.junos.utils.config.Config de Junos permite revertir la configuración en un dispositivo Junos. Para revertir la configuración, llame rollback() al método y establezca el rb_id argumento en el identificador de la configuración de reversión. Los valores de ID válidos son 0 (cero, para la configuración confirmada más recientemente) a través de uno menos que el número de configuraciones anteriores almacenadas (el máximo es 49). Si omite este parámetro en la llamada al método, el valor predeterminado es 0.

En el ejemplo siguiente se solicita el identificador de reversión de la configuración que se va a restaurar, se revierte la configuración, se imprimen las diferencias de configuración y, a continuación, se confirma la configuración para convertirla en la configuración activa en el dispositivo.

Para ver un ejemplo más amplio que incluye el control de errores, consulte Ejemplo: uso de Junos PyEZ para revertir la configuración.

Cargar 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. Utilice la configuración de rescate cuando necesite volver a una configuración conocida o como último recurso si la configuración del enrutador o conmutador y los archivos de configuración de copia de seguridad se dañan sin posibilidad de reparación. Cuando se crea una configuración de rescate, el dispositivo guarda la configuración confirmada más reciente como configuración de rescate.

La utilidad Junos PyEZ jnpr.junos.utils.config.Config le permite administrar la configuración de rescate en dispositivos Junos. Después de crear una instancia de la Config clase, utilice el rescue() método para administrar la configuración de rescate. Para especificar la acción que se va a realizar en la configuración de rescate, establezca el rescue() parámetro method action en la operación deseada.

Para cargar la configuración de rescate existente en la configuración candidata, especifique action="reload". Si no existe ninguna configuración de rescate, la operación de carga devuelve False. Después de cargar la configuración de rescate, debe confirmar la configuración para convertirla en la configuración activa en el dispositivo.

En el ejemplo siguiente se carga y confirma la configuración de rescate, si existe:

Para obtener información sobre cómo crear, recuperar o eliminar la configuración de rescate y ejemplos adicionales, consulte Usar Junos PyEZ para administrar la configuración de rescate en dispositivos Junos.

Confirmar la configuración

Después de modificar la configuración, debe confirmar la configuración para convertirla en la configuración activa en el dispositivo. Cuando se utiliza la Config utilidad para realizar cambios de configuración no estructurados en un dispositivo, se confirma la configuración candidata llamando al commit() método.

Para obtener más información acerca de la operación de confirmación y las opciones de confirmación admitidas en scripts de Junos PyEZ, consulte Uso de Junos PyEZ para confirmar la configuración.

Tabla de historial de cambios

La compatibilidad con las funciones viene determinada por la plataforma y la versión que esté utilizando. Utilice el Explorador de características para determinar si una característica es compatible con su plataforma.

Lanzamiento
Descripción
1.2
A partir de Junos PyEZ versión 1.2, Junos PyEZ detecta automáticamente el formato cuando proporciona los datos de configuración como una cadena.