Usar Ansible con tablas PyEZ de Junos para recuperar información operativa de dispositivos Junos
RESUMEN Use las tablas y vistas de PyEZ de Junos en sus manuales de estrategia de Ansible para recuperar información operativa de dispositivos Junos.
Descripción general del módulo
Las tablas operacionales (op) de Junos PyEZ proporcionan una manera sencilla y eficiente de extraer información de resultados de comandos operativos complejos. Juniper Networks ofrece un módulo de Ansible que le permite aprovechar las tablas de operaciones de Junos PyEZ desde los manuales de estrategia de Ansible. La Tabla 1 describe el módulo.
Conjunto de contenido |
Nombre del módulo |
---|---|
|
El table
módulo no admite el uso de tablas y vistas de configuración.
Descripción de las tablas de PyEZ de Junos
Junos PyEZ es un microframework para Python que le permite administrar y automatizar dispositivos Junos. Junos PyEZ admite el uso de definiciones simples de YAML, que se denominan tablas y vistas, para recuperar y filtrar los datos de configuración y salida de comandos operativos de los dispositivos Junos.
Las tablas operacionales (op) de Junos PyEZ extraen información de la salida de los comandos operativos o RPC. Los módulos de Junos PyEZ jnpr.junos.op
contienen definiciones predefinidas de tabla y vista para algunos RPC comunes. También puede crear tablas y vistas personalizadas.
Cuando utiliza Ansible para administrar dispositivos Junos, el módulo puede utilizar tablas table
PyEZ de Junos para recuperar datos de un dispositivo. El módulo puede hacer referencia a las tablas y vistas operativas predefinidas que se incluyen con la distribución Junos PyEZ, o puede hacer referencia a tablas y vistas definidas por el usuario que residen en el nodo de control de Ansible.
Para obtener información general acerca de las tablas y vistas de Junos PyEZ, consulte las siguientes secciones y la documentación relacionada en la Guía para desarrolladores de Junos PyEZ:
Cómo utilizar los módulos Ansible de Juniper Networks con tablas PyEZ de Junos
El juniper.device.table
módulo puede incluir los siguientes argumentos para especificar la tabla que se va a utilizar:
-
file
: nombre de archivo del archivo YAML que define la tabla y vista de Junos PyEZ. -
path
—(Opcional) Ruta al directorio que contiene el archivo YAML con las definiciones Tabla y Vista. La ruta de archivo predeterminada es la ubicación de las tablas op de Junos PyEZ predefinidas, que residen en la ruta de instalación de Junos PyEZ en el directorio jnpr/junos/op . -
table
—(Opcional) Nombre de la tabla que se utilizará para recuperar los datos. Esta opción sólo es necesaria cuando un archivo contiene varias definiciones de tabla o el archivo contiene una sola tabla que no incluye "Tabla" en su nombre.
Por ejemplo, la siguiente tarea recupera datos mediante una tabla personalizada denominada FPCTable
, que se define en el archivo fpc.yaml ubicado en el directorio del playbook:
tasks: - name: Get FPC info juniper.device.table: file: "fpc.yaml" path: "{{ playbook_dir }}" table: "FPCTable"
La respuesta del módulo incluye la resource
clave, que contiene una lista de elementos devueltos por la tabla. Cada elemento de lista es un diccionario que contiene los nombres de campo definidos por la Vista y el valor extraído de los datos para cada uno de los campos correspondientes.
Considere la siguiente tabla y vista predefinidas, ArpTable
y ArpView
, en el archivo arp.yml de la distribución Junos PyEZ. ArpTable
ejecuta la <get-arp-table-information>
RPC con la <no-resolve/>
opción, que es equivalente al comando de la show arp no-resolve
CLI. La vista correspondiente extrae la dirección MAC, la dirección IP y el nombre de interfaz de cada <arp-table-entry>
elemento de la respuesta.
--- ArpTable: rpc: get-arp-table-information args: no-resolve: true item: arp-table-entry key: mac-address view: ArpView ArpView: fields: mac_address: mac-address ip_address: ip-address interface_name: interface-name
En el siguiente manual de Ansible se ejecuta el table
módulo, que se utiliza ArpTable
para recuperar información del Protocolo de resolución de direcciones (ARP) de los dispositivos Junos. Dado que ArpTable
se incluye con la distribución Junos PyEZ y reside en el directorio predeterminado de las tablas op de Junos PyEZ predefinidas, el argumento module path
no es necesario para especificar la ubicación del archivo. Además, dado que ArpTable
es la única tabla definida en el archivo e incluye "tabla" en su nombre, el table
argumento no es necesario para especificar la tabla.
--- - name: Get ARP information hosts: dc1 connection: local gather_facts: no tasks: - name: Get ARP information using Junos PyEZ Table juniper.device.table: file: "arp.yml" register: result - name: Print response ansible.builtin.debug: var: result
La salida del manual, que se trunca por brevedad, incluye los campos correspondientes, definidos por ArpView, para cada <arp-table-entry>
elemento devuelto por el dispositivo.
PLAY [Get ARP information] **************************************************** TASK [Get ARP information using Junos PyEZ Table] ***************************** ok: [dc1a.example.net] TASK [Print response] ********************************************************* ok: [dc1a.example.net] => { "result": { "changed": false, "failed": false, "msg": "Successfully retrieved 2 items from ArpTable.", "resource": [ { "interface_name": "em0.0", "ip_address": "10.0.0.5", "mac_address": "02:01:00:00:00:05" }, { "interface_name": "fxp0.0", "ip_address": "198.51.100.10", "mac_address": "30:7c:5e:48:4b:40" } ] } }
El siguiente manual de estrategias de Ansible aprovecha la tabla operativa predefinida de Junos PyEZ, OspfInterfaceTable
, para recuperar información sobre las interfaces OSPF en dispositivos Junos. El archivo ospf.yml define varias tablas y vistas, por lo que la llamada al módulo incluye el table
argumento para especificar qué tabla usar.
--- - name: Get OSPF information hosts: dc1 connection: local gather_facts: no tasks: - name: Get OSPF interface information juniper.device.table: file: "ospf.yml" table: "OspfInterfaceTable" register: result - name: Print response ansible.builtin.debug: var: result
Especificar argumentos RPC
Las tablas operativas de Junos PyEZ tienen una clave opcional args
que define las opciones de comando y los argumentos predeterminados para el RPC ejecutado por esa tabla. La aplicación ejecuta el RPC con las opciones predeterminadas, a menos que el usuario invalide las predeterminadas. En las aplicaciones de Junos PyEZ, puede invalidar las opciones predeterminadas o pasar opciones y argumentos adicionales al RPC al llamar al get()
método.
El juniper.device.table
módulo también permite invalidar las opciones predeterminadas definidas en la tabla o pasar opciones y argumentos adicionales al RPC mediante el kwargs
argumento. El kwargs
valor es un diccionario de opciones y valores de comando, que deben ser compatibles con la RPC y el dispositivo en el que se ejecuta la RPC.
Por ejemplo, la tabla EthPortTable
op predefinida de Junos PyEZ en el archivo ethport.yml ejecuta la <get-interface-information>
RPC con la media
opción de comando. De forma predeterminada, la RPC devuelve información para todas las interfaces que coinciden con la expresión regular especificada para el nombre de interfaz.
EthPortTable: rpc: get-interface-information args: media: true interface_name: '[afgxe][et]-*' args_key: interface_name item: physical-interface view: EthPortView
El siguiente manual de estrategias de Ansible sirve EthPortTable
para extraer información sobre las interfaces de los dispositivos Junos. El kwargs
argumento incluye interface_name: "ge-1/0/0"
, que anula el EthPortTable
valor predeterminado para interface_name
e indica al módulo que recupere los campos solicitados sólo para la interfaz ge-1/0/0.
--- - name: Get interface information hosts: dc1 connection: local gather_facts: no tasks: - name: Get interface information for Ethernet interfaces juniper.device.table: file: "ethport.yml" kwargs: interface_name: "ge-1/0/0" register: result - name: Print response ansible.builtin.debug: var: result
Para obtener más información acerca de las opciones y argumentos de comando predeterminados y proporcionados por el usuario en las tablas de Junos PyEZ, consulte Definir tablas operativas de Junos PyEZ y Usar tablas y vistas operativas de Junos PyEZ que analizan resultados estructurados.