Usar Ansible para recuperar datos de dispositivos Junos
Juniper Networks admite el uso de Ansible para administrar dispositivos Junos y proporciona módulos de Ansible que le permiten realizar tareas operativas y de configuración en los dispositivos. Los módulos no requieren Python en el dispositivo administrado porque utilizan Junos PyEZ y la API XML de Junos a través de NETCONF para interactuar con el dispositivo. Por lo tanto, cuando utilice Ansible para realizar operaciones en dispositivos Junos, debe ejecutar los módulos de Ansible localmente en el nodo de control. Como resultado, Ansible recopila de forma predeterminada datos del nodo de control de Ansible en lugar del nodo administrado.
Juniper Networks proporciona módulos que le permiten recopilar datos del dispositivo, incluida la configuración activa, desde dispositivos Junos. En el cuadro 1 se describen los módulos disponibles. Los módulos utilizan el sistema de recopilación de datos Junos PyEZ para recuperar los datos del dispositivo. Para obtener más información sobre el sistema de recopilación de datos Junos PyEZ y la lista completa de claves de diccionario devueltas, consulte jnpr.junos.facts.
Conjunto de contenido |
Nombre del módulo |
---|---|
|
|
|
Los facts
módulos y juniper_junos_facts
devuelven los datos del dispositivo en el ansible_facts.junos
diccionario. Los módulos también le permiten guardar los datos devueltos en un archivo en el nodo de control local de Ansible. Para especificar el directorio en el que guardar la información recuperada, incluya el argumento module savedir
y defina la ruta al directorio de destino. Cuando se incluye el savedir
argumento, el manual genera los siguientes archivos para cada dispositivo, donde hostname es el valor del hostname
hecho recuperado del dispositivo, que puede ser diferente del nombre de host pasado al módulo:
-
hostname-facts.json: datos del dispositivo en formato JSON
-
hostname-inventory.xml: inventario de hardware del dispositivo en formato XML
Por ejemplo, el siguiente manual recupera los datos del dispositivo para cada dispositivo del grupo de inventario y guarda los datos de cada dispositivo en archivos independientes en el directorio del manual del nodo de control de Ansible. Dado que el manual ejecuta el módulo de Juniper Networks localmente, Ansible recopila de forma predeterminada datos del nodo de control. El manual incluye el gather_facts: no
argumento para evitar que Ansible recopile datos del nodo de control y, en su lugar, use el facts
módulo de la juniper.device
colección para recuperar los datos del dispositivo administrado. Para autenticarse con el dispositivo, el ejemplo utiliza claves SSH existentes en la ubicación predeterminada y, por lo tanto, no proporciona explícitamente credenciales para el facts
módulo en el manual.
--- - name: Get device facts hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and save to file juniper.device.facts: savedir: "{{ playbook_dir }}"
De forma predeterminada, los facts
módulos y juniper_junos_facts
no devuelven la configuración del dispositivo. Para devolver la configuración activa de un dispositivo, además de los datos del dispositivo, incluya la config_format
opción y especifique el formato en el que desea devolver la configuración. Los valores de formato aceptables son 'json'
, 'set'
y 'text'
'xml'
. El formato solicitado debe ser compatible con la versión de Junos OS que se ejecuta en el dispositivo.
Cuando se incluye la config_format
opción, el ansible_facts.junos
diccionario en la respuesta del módulo incluye la config
clave con la configuración en el formato especificado en una sola cadena de varias líneas. Si se incluye la savedir
opción, los datos de configuración no se escriben en el archivo.
Para usar Ansible para recuperar datos de configuración de un dispositivo Junos y guardarlos en un archivo, use el config
módulo o juniper_junos_config
en lugar del facts
módulo o juniper_junos_facts
. Para obtener más información, consulte Usar Ansible para recuperar o comparar configuraciones de Junos OS.
En el ejemplo siguiente, el manual de estrategias realiza las siguientes operaciones:
-
Recupera los datos del dispositivo y la configuración activa de cada dispositivo del grupo de inventario.
-
Guarda los datos y el inventario de hardware de cada dispositivo en archivos independientes en el directorio del manual del nodo de control de Ansible.
-
Imprime la configuración de cada dispositivo en la salida estándar
--- - name: Get device facts and configuration hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and configuration and save facts to file juniper.device.facts: savedir: "{{ playbook_dir }}" config_format: "xml" register: result - name: Print configuration debug: var: result.ansible_facts.junos.config
user@ansible-cn:~$ ansible-playbook facts.yaml PLAY [Get device facts and configurations] ********************************** TASK [Retrieve device facts and configuration and save facts to file] ******* ok: [dc1a.example.net] TASK [Print configuration] ************************************************** ok: [dc1a.example.net] => { "result.ansible_facts.junos.config": "<configuration commit-seconds=\"1605564153\" commit-localtime=\"2020-11-16 14:02:33 PST\" commit-user=\"admin\">\n <version>20191212.201431_builder.r1074901</version>\n [...output truncated...] </configuration>\n" } PLAY RECAP ****************************************************************** dc1a.example.net : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0