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 OspfInterfaceTable
operacional 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.