Use Ansible con tablas PyEZ de Junos para recuperar información operativa de dispositivos Junos
Utilice las tablas y vistas de PyEZ de Junos en sus manuales de estrategia de Ansible para recuperar información operativa de los dispositivos Junos.
Descripción general del módulo
Las tablas operativas (op) de Junos PyEZ proporcionan una manera sencilla y eficiente de extraer información de la salida de comandos operativos complejos. Juniper Networks ofrece un módulo de Ansible que le permite aprovechar las tablas operativas de Junos PyEZ desde los manuales de estrategia de Ansible. En la Tabla 1 se describe el módulo.
|
Colección |
Conjunto de módulos |
Nombre del módulo |
|---|---|---|
|
|
El table módulo no admite el uso de tablas y vistas de configuración.
Descripción de las tablas PyEZ de Junos
Junos PyEZ es un micromarco para Python que le permite administrar y automatizar dispositivos de Junos. Junos PyEZ admite el uso de definiciones simples de YAML, que se conocen como tablas y vistas, para recuperar y filtrar la salida de comandos operativos y los datos de configuración de los dispositivos Junos.
Las tablas operativas (op) de Junos PyEZ extraen información de la salida de comandos operativos o RPC. Los módulos PyEZ jnpr.junos.op de Junos contienen definiciones predefinidas de tabla y vista para algunas RPC comunes. También puede crear tablas y vistas personalizadas.
Cuando se usa Ansible para administrar dispositivos Junos, el table módulo puede usar Junos tablas PyEZ 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 de Junos PyEZ. El módulo también 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 documentación relacionada en la Guía para desarrolladores de Junos PyEZ:
Cómo usar los módulos de Ansible de Juniper Networks con las tablas PyEZ de Junos
El juniper.device.table módulo puede incluir los siguientes argumentos para especificar la tabla PyEZ de Junos que se va a utilizar:
-
file: nombre de archivo del archivo YAML que define la tabla y la vista de PyEZ de Junos. -
path: (Opcional) Ruta al directorio que contiene el archivo YAML con las definiciones de tabla y vista. La ruta de archivo predeterminada es la ubicación de las tablas de operaciones 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. Solo necesita proporcionar esta opción cuando un archivo contiene varias definiciones de tabla o cuando un archivo contiene una sola definición de tabla que no usa "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 libro de estrategias:
tasks:
- name: Get FPC info
juniper.device.table:
file: "fpc.yaml"
path: "{{ playbook_dir }}"
table: "FPCTable"
La juniper.device.table 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 show arp no-resolve comando 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
El siguiente manual de estrategia de Ansible ejecuta el módulo, que utiliza ArpTable para recuperar información del Protocolo de resolución de direcciones (ARP) de los juniper.device.table dispositivos Junos. La distribución de Junos PyEZ incluye ArpTable como una tabla de operaciones predefinida en el directorio predeterminado. Por lo tanto, no es necesario incluir path los argumentos del módulo para especificar la ubicación del archivo. Además, el table argumento no es necesario porque ArpTable incluye "Tabla" en su nombre y es la única Tabla definida en el archivo.
---
- 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, según lo definido 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 estrategia de Ansible aprovecha la tabla operativa predefinida de OspfInterfaceTableJunos PyEZ para recuperar información sobre las interfaces de 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 predeterminadas y los argumentos para el RPC ejecutado por esa tabla. La aplicación ejecuta la RPC con las opciones predeterminadas, a menos que el usuario anule los valores predeterminados. En las aplicaciones de Junos PyEZ, puede anular las opciones predeterminadas o pasar opciones y argumentos adicionales a la RPC al llamar al get() método.
El juniper.device.table módulo también permite alterar temporalmente las opciones predeterminadas definidas en la tabla o pasar opciones y argumentos adicionales a la RPC mediante el kwargs argumento. El kwargs valor es un diccionario de opciones y valores de comando. Los argumentos proporcionados deben ser compatibles con la RPC y el dispositivo en el que se ejecuta la RPC.
Por ejemplo, la tabla EthPortTable de operaciones Junos PyEZ predefinida en el archivo ethport.yml ejecuta la <get-interface-information> RPC con la opción de media comando. De forma predeterminada, la RPC devuelve información para todas las interfaces que coinciden 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 estrategia de Ansible se utiliza EthPortTable para extraer información sobre las interfaces de los dispositivos administrados. El kwargs argumento incluye interface_name: "ge-1/0/0". Este argumento anula el EthPortTable valor predeterminado for 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
ansible.builtin.debug:
var: result
Para obtener más información sobre las opciones de comando y los argumentos predeterminados y proporcionados por el usuario en las tablas PyEZ de Junos, consulte: