Use o Ansible com tabelas PyEZ do Junos para recuperar informações operacionais dos dispositivos Junos
RESUMO Use tabelas e visualizações do Junos PyEZ em seus playbooks Ansible para recuperar informações operacionais dos dispositivos Junos.
Visão geral do módulo
Tabelas operacionais (op) Junos PyEZ oferecem uma maneira simples e eficiente de extrair informações da complexa saída de comando operacional. A Juniper Networks oferece um módulo Ansible que permite que você aproveite as tabelas de op do Junos PyEZ de dentro de playbooks ansible. A Tabela 1 descreve o módulo.
| Conjunto de conteúdo |
Nome do módulo |
|---|---|
|
|
O table módulo não oferece suporte ao uso de tabelas e visualizações de configuração.
Entendendo as tabelas do Junos PyEZ
O Junos PyEZ é uma microframetra para Python que permite que você gerencie e automatize dispositivos Junos. O Junos PyEZ oferece suporte ao uso de definições YAML simples, que são conhecidas como Tabelas e Visualizações, para recuperar e filtrar dados de saída de comando operacional e configuração dos dispositivos Junos.
Tabelas operacionais (op) Junos PyEZ extraem informações da saída de comandos operacionais ou RPCs. Os módulos Junos PyEZ jnpr.junos.op contêm definições predefinidas de Tabela e Visualização para alguns RPCs comuns. Você também pode criar tabelas e visualizações personalizadas.
Quando você usa o Ansible para gerenciar dispositivos Junos, o módulo pode usar o table Junos PyEZ Tables para recuperar dados de um dispositivo. O módulo pode fazer referência às tabelas e visualizações operacionais predefinidas que estão incluídas na distribuição do Junos PyEZ, ou pode fazer referência a tabelas e visualizações definidas pelo usuário que residem no nó de controle Ansible.
Para obter informações gerais sobre tabelas e visualizações do Junos PyEZ, veja as seguintes seções e documentação relacionadas no Junos PyEZ Developer Guide:
Como usar os módulos ansíveis da Juniper Networks com tabelas Junos PyEZ
O juniper.device.table módulo pode incluir os seguintes argumentos para especificar a Tabela a ser usada:
-
file— Nome de arquivo do arquivo YAML que define a tabela e a visualização do Junos PyEZ. -
path— (Opcional) Caminho para o diretório que contém o arquivo YAML com as definições de Tabela e visualização. O caminho de arquivo padrão é a localização das tabelas op Do Junos PyEZ predefinidas, que residem no caminho de instalação do Junos PyEZ sob o diretório jnpr/junos/op . -
table—(Opcional) Nome da Tabela que será usada para recuperar os dados. Essa opção só é necessária quando um arquivo contém várias definições de Tabela ou o arquivo contém uma única Tabela que não inclui "Tabela" em seu nome.
Por exemplo, a tarefa a seguir recupera dados usando uma tabela personalizada nomeada FPCTable, que é definida no arquivo fpc.yaml localizado no diretório de playbook:
tasks:
- name: Get FPC info
juniper.device.table:
file: "fpc.yaml"
path: "{{ playbook_dir }}"
table: "FPCTable"
A resposta do módulo inclui a resource chave, que contém uma lista de itens devolvidos pela Tabela. Cada item da lista é um nívem que contém os nomes de campo definidos pela Visualização e o valor extraído dos dados para cada um dos campos correspondentes.
Considere a tabela e a visualização predefinidas a seguir eArpView, ArpTable no arquivo arp.yml da distribuição Junos PyEZ. ArpTable executa o <get-arp-table-information> RPC com a opção, o <no-resolve/> que equivale ao show arp no-resolve comando CLI. A visualização correspondente extrai o endereço MAC, endereço IP e nome da interface para cada <arp-table-entry> item na resposta.
---
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
O manual ansible a seguir executa o table módulo, que usa para recuperar informações do Protocolo de Resolução de Endereços ArpTable (ARP) dos dispositivos Junos. Como ArpTable está incluído com a distribuição Junos PyEZ e reside no diretório padrão para as tabelas op Do Junos PyEZ predefinidas, o argumento do path módulo não é necessário para especificar a localização do arquivo. Além disso, como ArpTable é a única Tabela definida no arquivo e inclui "Tabela" em seu nome, o table argumento não é necessário para especificar a Tabela.
---
- 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
A saída de manual, que é truncada para brevidade, inclui os campos correspondentes, conforme definido pelo ArpView, para cada <arp-table-entry> item devolvido pelo 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"
}
]
}
}
O manual ansível a seguir aproveita a tabela OspfInterfaceTableoperacional Junos PyEZ predefinida para recuperar informações sobre interfaces OSPF em dispositivos Junos. O arquivo ospf.yml define várias Tabelas e visualizações, de modo que a chamada do módulo inclui o table argumento para especificar qual Tabela 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
Especifique os argumentos do RPC
As Tabelas operacionais do Junos PyEZ têm uma chave opcional args que define as opções de comando padrão e os argumentos para o RPC executado por essa Tabela. O aplicativo executa o RPC com as opções padrão a menos que o usuário substitua os padrões. Nos aplicativos Junos PyEZ, você pode substituir as opções padrão ou passar opções e argumentos adicionais para o RPC ao chamar o get() método.
O juniper.device.table módulo também permite substituir as opções padrão definidas na Tabela ou passar opções e argumentos adicionais ao RPC usando o kwargs argumento. O kwargs valor é um grande valor e opções de comando, que devem ser suportados pelo RPC e pelo dispositivo no qual o RPC é executado.
Por exemplo, a tabela EthPortTable de operações predefinida do Junos PyEZ no arquivo ethport.yml executa o <get-interface-information> RPC com a opção media de comando. Por padrão, o RPC retorna informações para todas as interfaces que correspondem à expressão regular dada para o nome da interface.
EthPortTable:
rpc: get-interface-information
args:
media: true
interface_name: '[afgxe][et]-*'
args_key: interface_name
item: physical-interface
view: EthPortView
A cartilha Ansible a seguir usa EthPortTable para extrair informações sobre as interfaces em dispositivos Junos. O kwargs argumento inclui interface_name: "ge-1/0/0", o que substitui o EthPortTable padrão interface_name e instrui o módulo a recuperar os campos solicitados apenas para a interface 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 obter mais informações sobre as opções e argumentos de comando padrão e fornecidos pelo usuário nas Tabelas PyEZ do Junos, veja como definir as tabelas operacionais do Junos PyEZ e use tabelas operacionais e visualizações do Junos PyEZ que analisam a saída estruturada.