EN ESTA PÁGINA
Cómo especificar la base de datos de origen para los datos de configuración
Cómo especificar el ámbito de los datos de configuración que se van a devolver
Cómo especificar el formato de los datos de configuración que se devolverán
Cómo recuperar datos de configuración para modelos de datos YANG de terceros
Cómo especificar opciones que no tienen un argumento de módulo equivalente
Cómo comparar la configuración activa con una configuración anterior
Usar Ansible para recuperar o comparar configuraciones de Junos OS
RESUMEN Utilice los módulos Ansible de Juniper Networks para recuperar o comparar configuraciones en dispositivos Junos.
Juniper Networks proporciona módulos de Ansible que le permiten administrar la configuración en dispositivos Junos. En la tabla 1 se describen los módulos disponibles, que permiten recuperar o comparar configuraciones de Junos OS.
Conjunto de contenido |
Nombre del módulo |
---|---|
|
|
|
A partir Juniper.junos
de la versión 2.0.0, el juniper_junos_config
módulo combina y reemplaza la funcionalidad de los junos_commit
módulos, junos_get_config
, junos_install_config
y junos_rollback
.
Puede utilizar los módulos para solicitar la configuración completa o partes seleccionadas de la configuración tanto para la configuración nativa de Junos OS como para los datos de configuración correspondientes a modelos de datos YANG de terceros que se hayan agregado al dispositivo. Para recuperar la configuración de un dispositivo Junos, ejecute el config
módulo o juniper_junos_config
con el retrieve
parámetro. La respuesta del módulo incluye la configuración en formato de texto en las config
claves y config_lines
, a menos que la return_output
opción esté establecida en false
. También puede comparar la configuración activa con una configuración previamente confirmada.
En las siguientes secciones se explica cómo utilizar los módulos para recuperar o comparar configuraciones de Junos OS.
Cómo especificar la base de datos de origen para los datos de configuración
Cuando utilice el config
módulo o juniper_junos_config
para recuperar la configuración, debe incluir el retrieve
parámetro en la lista de argumentos del módulo y especificar la base de datos de configuración de la que recuperar los datos. Puede recuperar datos de la base de datos de configuración confirmada o de la base de datos de configuración candidata estableciendo retrieve
en 'committed'
o 'candidate'
, respectivamente.
Base de datos de configuración confirmada
El siguiente manual recupera la configuración confirmada completa en formato de texto para cada dispositivo del grupo de inventario:
--- - name: "Get Junos OS configuration" hosts: junos-all connection: local gather_facts: no tasks: - name: "Get committed configuration" juniper.device.config: retrieve: "committed" register: response - name: "Print result" debug: var: response
Base de datos de configuración candidata
En el siguiente manual se recupera la configuración candidata completa en formato de texto para cada dispositivo del grupo de inventario. El módulo devuelve un error si la base de datos está bloqueada o modificada.
--- - name: "Get Junos OS configuration" hosts: junos-all connection: local gather_facts: no tasks: - name: "Get candidate configuration" juniper.device.config: retrieve: "candidate" register: response - name: "Print result" debug: var: response
Cómo especificar el ámbito de los datos de configuración que se van a devolver
Además de recuperar la configuración completa de Junos OS, puede utilizar los config
módulos y juniper_junos_config
para recuperar partes específicas de la configuración incluyendo el parámetro del filter
módulo. El filter
valor del parámetro es una cadena que contiene el filtro de subárbol que selecciona las instrucciones de configuración que se van a devolver. El filtro de subárbol devuelve los datos de configuración que coinciden con los criterios de selección. Cuando se solicitan varias jerarquías, el valor de filter
debe representar todos los niveles de la jerarquía de configuración desde la raíz (representada por el <configuration>
elemento) hasta cada elemento que se va a mostrar.
En el siguiente manual se recupera e imprime la configuración en los niveles jerárquico [edit interfaces]
y [edit protocols]
en la base de datos de configuración confirmada para cada dispositivo:
--- - name: "Get Junos OS configuration hierarchies" hosts: dc1 connection: local gather_facts: no tasks: - name: "Get selected configuration hierarchies" juniper.device.config: retrieve: "committed" filter: "<configuration><interfaces/><protocols/></configuration>" register: response - name: "Print result" debug: var: response
El siguiente manual recupera e imprime la configuración de la interfaz ge-1/0/1:
--- - name: "Get Junos OS configuration hierarchies" hosts: dc1 connection: local gather_facts: no tasks: - name: "Get selected configuration hierarchies" juniper.device.config: retrieve: "committed" filter: "<interfaces><interface> <name>ge-1/0/1</name></interface></interfaces>" register: response - name: "Print result" debug: var: response
El siguiente manual recupera e imprime la configuración confirmada en el nivel de [edit system services]
jerarquía:
--- - name: "Get Junos OS configuration hierarchies." hosts: dc1 connection: local gather_facts: no tasks: - name: "Get selected configuration hierarchies" juniper.device.config: retrieve: "committed" filter: "system/services" register: response - name: "Print result" debug: var: response
Cómo especificar el formato de los datos de configuración que se devolverán
Cuando se utiliza el config
módulo o juniper_junos_config
para recuperar la configuración, el módulo invoca la operación de protocolo <get-configuration>
XML de Junos, que puede devolver datos de configuración de Junos OS como texto con formato, elementos XML de Junos, comandos de Junos OS set
o notación de objetos JavaScript (JSON). De forma predeterminada, el módulo devuelve datos de configuración como texto con formato, que utiliza nuevas líneas, tabulaciones y otros espacios en blanco, llaves y corchetes para indicar las relaciones jerárquicas entre las instrucciones.
Para especificar el formato en el que se devolverán los datos de configuración, establezca el format
parámetro igual al formato deseado. Para solicitar explícitamente el formato de texto o para solicitar elementos XML de Junos, comandos de Junos OS set
o formato JSON, establezca el format
valor en 'text'
, 'xml'
, 'set'
o 'json'
, respectivamente. Las config
claves y config_lines
contienen la configuración en el formato solicitado. Si solicita el formato Junos XML o JSON, la config_parsed
clave contiene la configuración equivalente en formato JSON.
El siguiente manual recupera la configuración confirmada completa para cada dispositivo del grupo de inventario en formato XML:
--- - name: "Get Junos OS configuration." hosts: junos-all connection: local gather_facts: no tasks: - name: "Get configuration in XML format" juniper.device.config: retrieve: "committed" format: "xml" register: response - name: "Print result" debug: var: response
Cómo recuperar datos de configuración para modelos de datos YANG de terceros
Puede cargar módulos YANG estandarizados o personalizados en dispositivos Junos para agregar modelos de datos que no son compatibles de forma nativa con Junos OS pero que pueden ser compatibles con la traducción. Los modelos de datos no nativos se configuran en la configuración candidata mediante la sintaxis definida para dichos modelos. Al confirmar la configuración, los scripts de traducción del modelo de datos traducen esos datos y confirman la configuración correspondiente de Junos OS como un cambio transitorio en la configuración de retirada.
Las configuraciones candidatas y activas contienen los datos de configuración de los modelos de datos de YANG no nativos en la sintaxis definida por esos modelos. Puede utilizar el config
módulo o juniper_junos_config
para recuperar datos de configuración para modelos de datos YANG estándar (IETF, OpenConfig) y personalizados, además de recuperar la configuración nativa de Junos OS incluyendo los argumentos de módulo adecuados. De forma predeterminada, los datos de configuración para modelos de datos YANG de terceros no se incluyen en la respuesta del módulo.
Para recuperar datos de configuración definidos por un modelo de datos de YANG no nativo, además de recuperar la configuración de Junos OS, ejecute el módulo con el model
parámetro e incluya el namespace
parámetro cuando corresponda. El model
argumento toma uno de los siguientes valores:
-
custom
: recupera datos de configuración definidos por modelos de datos YANG personalizados. Debe incluir elnamespace
argumento al recuperar datos para modelos de datos YANG personalizados. -
ietf
: recupera datos de configuración definidos por los modelos de datos de YANG de IETF. -
openconfig
: recupera datos de configuración definidos por los modelos de datos YANG de OpenConfig. -
True
: recupera todos los datos de configuración, incluida la configuración completa de Junos OS y los datos de cualquier modelo de datos de YANG.
Si especifica el ietf
valor o openconfig
para el model
argumento, el módulo utiliza automáticamente el espacio de nombres adecuado. Si recupera datos para un modelo de datos YANG personalizado mediante model: "custom"
, también debe incluir el namespace
argumento con el espacio de nombres correspondiente.
Si incluye el model
argumento con el valor custom
, ietf
o openconfig
también incluye el filter
argumento para devolver un subárbol XML específico, Junos OS solo devuelve la jerarquía coincidente del modelo de datos no nativo. Si la configuración de Junos OS contiene una jerarquía del mismo nombre, por ejemplo "interfaces", no se incluye en la respuesta. La filter
opción no se admite cuando se utiliza model: "True"
.
Cuando utilice el config
módulo o juniper_junos_config
para recuperar datos de configuración no nativos, sólo puede especificar el formato de los datos devueltos si también incluye el filter
parámetro. Si omite el filter
parámetro, debe especificar format: "xml"
.
El siguiente manual recupera la jerarquía de configuración de OpenConfig interfaces
de la configuración confirmada. Si omite el filter
argumento, RPC devuelve las configuraciones completas de Junos OS y OpenConfig.
--- - name: "Retrieve OpenConfig configuration" hosts: dc1 connection: local gather_facts: no tasks: - name: "Retrieve the OpenConfig interfaces configuration" juniper.device.config: retrieve: "committed" model: "openconfig" filter: "interfaces" format: "xml" register: response - name: "Print result" debug: var: response
La siguiente tarea recupera la l2vpn
jerarquía de configuración de la configuración confirmada para un modelo de datos de YANG personalizado con el espacio de nombres especificado:
tasks: - name: "Retrieve custom configuration" juniper.device.config: retrieve: "committed" model: "custom" filter: "l2vpn" remove_ns: False namespace: "http://yang.juniper.net/customyang/l2vpn" format: "xml" register: response
La siguiente tarea recupera la configuración confirmada completa de Junos OS, así como los datos de configuración de otros modelos de datos de YANG que se agregaron al dispositivo:
tasks: - name: "Retrieve Junos OS and all third-party configuration data" juniper.device.config: retrieve: "committed" model: "True" format: "xml" register: response
Cómo especificar opciones que no tienen un argumento de módulo equivalente
Cuando se utiliza el config
módulo o juniper_junos_config
para recuperar la configuración, el módulo invoca la operación del protocolo <get-configuration>
XML de Junos. Los módulos admiten argumentos explícitos para muchos de los <get-configuration>
atributos, por ejemplo, el format
atributo. Los módulos también admiten el options
argumento, que permite incluir cualquier atributo adicional <get-configuration>
que no tenga un argumento de módulo equivalente. El options
argumento toma un diccionario de pares clave/valor de cualquier atributo admitido por la <get-configuration>
operación.
Para obtener la lista completa de atributos admitidos por la operación del protocolo <get-configuration>
XML de Junos, consulte https://www.juniper.net/documentation/en_US/junos/topics/reference/tag-summary/junos-xml-protocol-get-configuration.html.
Por ejemplo, los módulos recuperan datos de la configuración previa a la herencia, en la que las <groups>
etiquetas , <apply-groups>
<apply-groups-except>
, y <interface-range>
son elementos independientes en la salida de la configuración. Para recuperar datos de la configuración posterior a la herencia, que muestra instrucciones heredadas de grupos y rangos definidos por el usuario como elementos secundarios de las instrucciones heredadas, puede incluir el options
argumento con inherit: "inherit"
.
En el siguiente manual se recuperan los datos de configuración en el nivel de jerarquía de la configuración confirmada posterior a la [edit system services]
herencia. En este caso, si la configuración también contiene instrucciones configuradas en el nivel de jerarquía, dichas instrucciones se heredarán [edit system services]
en la configuración posterior a la [edit groups global system services]
herencia y se devolverán en los datos de configuración recuperados.
--- - name: "Get Junos OS configuration hierarchies" hosts: dc1 connection: local gather_facts: no tasks: - name: "Get selected hierarchy from the post-inheritance configuration" juniper.device.config: retrieve: "committed" filter: "system/services" options: inherit: "inherit" register: response - name: "Print result" debug: var: response
Cómo guardar datos de configuración en un archivo
Cuando utilice el config
módulo o juniper_junos_config
para recuperar la configuración, puede guardar los datos de configuración devueltos en un archivo en el nodo de control de Ansible local incluyendo el parámetro o dest_dir
el módulo o dest
. La dest_dir
opción solo especifica un directorio, y la opción puede especificar tanto una ruta como un nombre de dest
archivo. Si ya existe un archivo de salida con el nombre de destino, el módulo sobrescribe el archivo.
Para especificar el directorio en el nodo de control local de Ansible donde se guardan las configuraciones recuperadas, incluya el dest_dir
argumento y defina la ruta al directorio de destino. La configuración de cada dispositivo se almacena en un archivo independiente denominado hostname.config.
En el siguiente manual se recupera la configuración confirmada de todos los dispositivos del grupo de inventario y se guarda cada configuración de dispositivo en un archivo independiente del directorio configs del directorio del manual del nodo de control de Ansible:
--- - name: "Get Junos OS configuration" hosts: junos-all connection: local gather_facts: no tasks: - name: "Save configuration to a file" juniper.device.config: retrieve: "committed" dest_dir: "{{ playbook_dir }}/configs"
Para especificar la ruta de acceso y el nombre de archivo de los archivos de salida, incluya el dest
argumento y defina la ruta de acceso absoluta o relativa del archivo. Si incluye el dest
argumento, pero omite el directorio, los archivos se guardan en el directorio del manual. Si recupera la configuración para varios dispositivos, el dest
argumento debe incluir una variable como {{ inventory_hostname }}
para diferenciar el nombre de archivo de cada dispositivo. Si no diferencia los nombres de archivo, el archivo de configuración de cada dispositivo sobrescribirá el archivo de configuración de los demás dispositivos.
En el siguiente manual se recupera la [edit system services]
jerarquía de la base de datos de configuración confirmada en todos los dispositivos del grupo de inventario y se guarda cada configuración de dispositivo en un archivo independiente del directorio del manual del nodo de control de Ansible. Cada archivo se identifica de forma única por el nombre de host del dispositivo.
--- - name: "Get Junos OS configuration" hosts: junos-all connection: local gather_facts: no tasks: - name: "Get selected configuration hierarchies and save to file" juniper.device.config: retrieve: "committed" filter: "system/services" dest: "{{ inventory_hostname }}-system-config"
Si está guardando los datos de configuración en archivos y no desea duplicar los datos de configuración en la respuesta del módulo, puede incluirlos return_output: false
opcionalmente en la lista de argumentos del módulo. Si se establece return_output
en false
, el módulo omite las config
claves , config_lines
y config_parsed
en su respuesta. Esto puede ser necesario si los dispositivos devuelven una cantidad significativa de datos de configuración.
Cómo comparar la configuración activa con una configuración anterior
Los config
módulos y juniper_junos_config
le permiten comparar la configuración activa con una configuración previamente confirmada o con una configuración de reversión. Para comparar la configuración activa con una configuración anterior, incluya los siguientes argumentos de módulo:
juniper.device.config: diff: true rollback: id check: false commit: false
De forma predeterminada, cuando se incluye el rollback: id
argumento, el módulo revierte la configuración, realiza una comprobación de confirmación y confirma los cambios. Debe incluir el commit: false
argumento para comparar solo las configuraciones y evitar que el módulo cargue y confirme la configuración de reversión. Incluir el check: false
argumento evita la operación de comprobación de confirmación innecesaria.
Los módulos devuelven las diff
claves y diff_lines
, que contienen las diferencias de configuración entre la configuración activa y la anterior en formato diff o patch.
-
diff
— diccionario que contiene una sola clave denominadaprepared
y su valor, que es una sola cadena multilínea que contiene las diferencias.Nota:A partir
Juniper.junos
de la versión 2.2.0, ladiff
clave devuelve un diccionario en lugar de una cadena. -
diff_lines
—Lista de cadenas de una sola línea que contienen las diferencias.
Para guardar las diferencias en un archivo del nodo de control local de Ansible, incluya el diffs_file
argumento y defina la ruta absoluta o relativa del archivo de salida. Si incluye el diffs_file
argumento pero omite el directorio, los archivos se guardan en el directorio del manual. Si compara las configuraciones en varios dispositivos, el diffs_file
argumento debe incluir una variable como {{ inventory_hostname }}
para diferenciar el nombre de archivo de cada dispositivo. Si no diferencia los nombres de archivo, el archivo de salida de cada dispositivo sobrescribirá el archivo de salida de los demás dispositivos.
En el siguiente manual se solicita el ID de reversión de una configuración confirmada anteriormente, se compara la configuración confirmada con la configuración de reversión especificada, se guarda la comparación en un archivo con nombre único y también se imprime la respuesta en el resultado estándar:
--- - name: "Compare configurations" hosts: dc1 connection: local gather_facts: no vars_prompt: - name: "ROLLBACK" prompt: "Rollback ID to compare with active configuration" private: no tasks: - name: "Compare active to previous configuration" juniper.device.config: diff: true rollback: "{{ ROLLBACK }}" check: false commit: false diffs_file: "{{ inventory_hostname }}-diff-rollback-{{ ROLLBACK }}" register: response - name: "Print diff" debug: var: response
user@ansible-cn:~$ ansible-playbook configuration-compare-to-rollback.yaml Rollback ID to compare with active configuration: 2 PLAY [Compare configurations] ************************************************* TASK [Compare active to previous configuration] ****************************** changed: [dc1a.example.net] TASK [Print diff] ************************************************************ ok: [dc1a.example.net] => { "response": { "changed": true, "diff": { "prepared": "\n[edit system services]\n- netconf {\n- ssh;\n- }\n" }, "diff_lines": [ "", "[edit system services]", "- netconf {", "- ssh;", "- }" ], "failed": false, "msg": "Configuration has been: opened, rolled back, checked, diffed, closed." } } PLAY RECAP ******************************************************************** dc1a.example.net : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
user@ansible-cn:~$ cat dc1a.example.net-diff-rollback-2 [edit system services] - netconf { - ssh; - }
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.
Juniper.junos
de la versión 2.2.0, la
diff
clave devuelve un diccionario en lugar de una cadena.
Juniper.junos
de la versión 2.0.0, el
juniper_junos_config
módulo combina y reemplaza la funcionalidad de los
junos_commit
módulos,
junos_get_config
,
junos_install_config
y
junos_rollback
.