Uso de Ansible con tablas de Junos PyEZ para recuperar información operativa de dispositivos que ejecutan Junos OS
Descripción general del módulo
Las tablas operativas (op) de Junos PyEZ proporcionan una forma simple y eficiente de extraer información a partir de resultados de comandos operativos complejos. Juniper Networks ofrece módulos de Ansible que le permiten aprovechar las tablas de operaciones de Junos PyEZ desde los libros de jugadas de Ansible. En la tabla 1 se describen los módulos.
Conjunto de contenido |
Nombre del módulo |
---|---|
|
|
|
A partir de Juniper.junos
la versión 2.0.0, el juniper_junos_table
módulo reemplaza la funcionalidad del junos_get_table
módulo.
Los módulos no funcionan con tablas y vistas de configuración.
Descripción de las tablas de Junos PyEZ
Junos PyEZ es un microframework para Python que le permite administrar y automatizar dispositivos que ejecutan Junos OS. 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 de salida de comandos operativos de dispositivos que ejecutan Junos OS.
Las tablas operativas (op) de Junos PyEZ extraen información de la salida de los comandos operativos o RPCs. Los módulos Junos PyEZ jnpr.junos.op
contienen definiciones predefinidas de tabla y vista para algunas RPC comunes. También puede crear tablas y vistas personalizadas.
Cuando usa Ansible para administrar dispositivos que ejecutan Junos OS, los módulos y juniper_junos_table
las table
tablas de Junos PyEZ pueden usar las tablas de Junos PyEZ para recuperar datos de un dispositivo. Los módulos pueden hacer referencia a las tablas y vistas operativas predefinidas que se incluyen con la distribución Junos PyEZ, o pueden 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 usar los módulos de Juniper Networks Ansible con tablas de Junos PyEZ
Los table
módulos y juniper_junos_table
pueden incluir los siguientes argumentos para especificar la tabla que se va a usar:
file
—Nombre del archivo YAML que define la vista y la tabla Junos PyEZ.path
—(Opcional) Ruta al directorio que contiene el archivo YAML con las definiciones de Table and View. La ruta predeterminada del archivo es la ubicación de las tablas operativos predefinidas de Junos PyEZ, 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 solo es necesaria cuando un archivo contiene varias definiciones de tabla o el archivo contiene una sola Tabla que no incluye "Table" 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 de libros de jugadas:
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 de 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 el <get-arp-table-information>
RPC con la <no-resolve/>
opción, que es equivalente al show arp no-resolve
comando cli. La vista correspondiente extrae la dirección MAC, la dirección IP y el nombre de la 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
El siguiente manual de Ansible ejecuta el módulo, que table
utiliza ArpTable
para recuperar información del Protocolo de resolución de direcciones (ARP) de dispositivos que ejecutan Junos OS. Dado que ArpTable
se incluye con la distribución Junos PyEZ y reside en el directorio predeterminado de las tablas op predefinidas de Junos PyEZ, el argumento módulo 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 "Table" 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 debug: var: result
La salida del libro de jugadas, que se trunca para la brevedad, incluye los campos correspondientes, tal y como se define en la Vista, para cada <arp-table-entry>
elemento devuelto por el dispositivo.
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 Ansible aprovecha la tabla OspfInterfaceTable
operativa predefinida de Junos PyEZ para recuperar información acerca de las interfaces OSPF en dispositivos que ejecutan Junos OS. 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 debug: var: result
Especificación de argumentos de 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 la RPC con las opciones predeterminadas a menos que el usuario invalide los valores predeterminados. En las aplicaciones de Junos PyEZ, puede invalidar las opciones de comando predeterminadas o pasar opciones y argumentos adicionales al RPC al llamar al get()
método.
Los table
módulos y juniper_junos_table
también le permiten invalidar las opciones de comando predeterminadas definidas en la tabla o pasar opciones y argumentos adicionales al RPC mediante el uso del 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
de operaciones predefinida Junos PyEZ en el archivo ethport.yml ejecuta el RPC con la <get-interface-information>
media
opción de comando y devuelve información para todas las interfaces que coincidan con la expresión regular dada 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 Ansible utiliza EthPortTable
para extraer información sobre las interfaces en dispositivos que ejecutan Junos OS. El kwargs
argumento incluye interface_name: "ge-1/0/0"
, que invalida el EthPortTable
valor predeterminado para interface_name
e indica al módulo que recupere los campos solicitados solo 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 debug: var: result
Para obtener más información acerca de las opciones de comando predeterminadas y suministradas por el usuario en las tablas de Junos PyEZ, consulte Definición de tablas operativas de Junos PyEZ y Uso de vistas y tablas operativas de Junos PyEZ.