Use o Ansible com tabelas PyEZ do Junos para recuperar informações operacionais de dispositivos Junos
Use tabelas e visualizações do Junos PyEZ em seus playbooks do Ansible para recuperar informações operacionais de dispositivos Junos.
Visão geral do módulo
As tabelas operacionais (op) do Junos PyEZ oferecem uma maneira simples e eficiente de extrair informações de comandos operacionais complexos. A Juniper Networks oferece um módulo Ansible que permite que você aproveite as tabelas de operações do Junos PyEZ a partir dos playbooks do Ansible. A Tabela 1 descreve o módulo.
|
Coleção de Emoji |
Conjunto de módulos |
Nome do módulo |
|---|---|---|
|
|
O table módulo não suporta o uso de tabelas e exibições de configuração.
Entendendo as tabelas PyEZ do Junos
O Junos PyEZ é um microframework para Python que permite gerenciar e automatizar dispositivos Junos. O Junos PyEZ oferece suporte ao uso de definições YAML simples, que são chamadas de tabelas e visualizações, para recuperar e filtrar dados de saída e configuração de comandos operacionais dos dispositivos Junos.
As tabelas operacionais (op) do Junos PyEZ extraem informações da saída de comandos operacionais ou RPCs. Os módulos do Junos PyEZ jnpr.junos.op contêm definições de tabela e visualização predefinidas para alguns RPCs comuns. Você também pode criar tabelas e exibições personalizadas.
Quando você usa o Ansible para gerenciar dispositivos Junos, o módulo pode usar tabelas table PyEZ do Junos 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. O módulo também pode fazer referência a tabelas e visualizações definidas pelo usuário que residem no nó de controle do Ansible.
Para obter informações gerais sobre tabelas e visualizações do Junos PyEZ, consulte as seções a seguir e a documentação relacionada no Guia do desenvolvedor do Junos PyEZ:
Como usar os módulos Ansible da Juniper Networks com tabelas PyEZ do Junos
O juniper.device.table módulo pode incluir os seguintes argumentos para especificar a tabela PyEZ do Junos a ser usada:
-
file— Nome 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 Vista. O caminho de arquivo padrão é a localização das tabelas de op predefinidas do Junos PyEZ, que residem no caminho de instalação do Junos PyEZ no diretório jnpr/junos/op . -
table— (Opcional) Nome da tabela. Você só precisa fornecer essa opção quando um arquivo contiver várias definições de tabela ou quando um arquivo contiver uma única definição de tabela que não use "Tabela" em seu nome.
Por exemplo, a tarefa a seguir recupera dados usando uma tabela personalizada chamada FPCTable, que é definida no arquivo fpc.yaml localizado no diretório do playbook:
tasks:
- name: Get FPC info
juniper.device.table:
file: "fpc.yaml"
path: "{{ playbook_dir }}"
table: "FPCTable"
A juniper.device.table resposta do módulo inclui a resource chave, que contém uma lista de itens retornados pela Tabela. Cada item de lista é um dicionário que contém os nomes de campo definidos pela Exibição e o valor extraído dos dados para cada um dos campos correspondentes.
Considere a Tabela e a Exibição ArpTable predefinidas a seguir e ArpView, no arquivo arp.yml da distribuição Junos PyEZ. ArpTable executa o <get-arp-table-information> RPC com a <no-resolve/> opção, que é equivalente ao show arp no-resolve comando CLI. A exibição correspondente extrai o endereço MAC, o endereço IP e o 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 playbook do Ansible a seguir executa o juniper.device.table módulo, que usa ArpTable para recuperar informações do protocolo de resolução de endereços (ARP) de dispositivos Junos. A distribuição do Junos PyEZ inclui ArpTable como uma tabela de operações predefinida no diretório padrão. Portanto, os argumentos do módulo não precisam ser incluídos path para especificar o local do arquivo. Além disso, o table argumento não é necessário porque ArpTable inclui "Table" em seu nome e é a única Table definida no arquivo.
---
- 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 do guia estratégico, que é truncada para brevidade, inclui os campos correspondentes, conforme definido por ArpView, para cada <arp-table-entry> item retornado 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 playbook do Ansible a seguir aproveita a tabela operacional predefinida do Junos PyEZ, OspfInterfaceTable, para recuperar informações sobre interfaces OSPF em dispositivos Junos. O arquivo ospf.yml define várias Tabelas e Exibições, portanto, a chamada de 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
Especificar argumentos RPC
As tabelas operacionais do Junos PyEZ têm uma chave opcional args que define as opções de comando e os argumentos padrão 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. Em 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 que você substitua as opções padrão definidas na Tabela ou passe opções e argumentos adicionais para o RPC usando o kwargs argumento. O kwargs valor é um dicionário de opções e valores de comando. Os argumentos fornecidos devem ser suportados pelo RPC e pelo dispositivo no qual você executa o RPC.
Por exemplo, o Junos PyEZ op Table EthPortTable predefinido no arquivo ethport.yml executa o <get-interface-information> RPC com a media opção de comando. Por padrão, o RPC retorna informações para todas as interfaces que correspondem à expressão regular fornecida 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
O manual do Ansible a seguir é usado EthPortTable para extrair informações sobre as interfaces nos dispositivos gerenciados. O kwargs argumento inclui interface_name: "ge-1/0/0". Esse argumento substitui o EthPortTable padrão e interface_name instrui o módulo a recuperar os campos solicitados somente 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 de comando e argumentos padrão e fornecidos pelo usuário nas tabelas do Junos PyEZ, consulte: