Use Ansible para recuperar fatos dos dispositivos Junos
A Juniper Networks oferece suporte ao uso do Ansible para gerenciar dispositivos Junos e fornece módulos Ansible que permitem que você execute tarefas operacionais e de configuração nos dispositivos. Os módulos não exigem Python no dispositivo gerenciado porque usam o Junos PyEZ e a API Junos XML sobre NETCONF para interface com o dispositivo. Portanto, quando você usa o Ansible para realizar operações em dispositivos Junos, você deve executar os módulos Ansible localmente no nó de controle. Como resultado, a Ansible está inadimplente em coletar fatos do nó de controle Ansible em vez do nó gerenciado.
A Juniper Networks fornece módulos que permitem que você reúna fatos do dispositivo, incluindo a configuração ativa, a partir de dispositivos Junos. A Tabela 1 descreve os módulos disponíveis. Os módulos usam o sistema de coleta de fatos Junos PyEZ para recuperar os fatos do dispositivo. Para obter mais informações sobre o sistema de coleta de fatos Junos PyEZ e a lista completa de chaves de dicionário devolvidas, veja jnpr.junos.facts.
Conjunto de conteúdo |
Nome do módulo |
---|---|
|
|
|
Os facts
módulos e juniper_junos_facts
os módulos devolvem os fatos do dispositivo no insumos ansible_facts.junos
. Os módulos também permitem que você economize os dados devolvidos em um arquivo no nó de controle ansível local. Para especificar o diretório no qual salvar as informações recuperadas, inclua o argumento do savedir
módulo e defina o caminho para o diretório alvo. Quando você inclui o savedir
argumento, o manual gera os seguintes arquivos para cada dispositivo, onde hostname está o valor do hostname
fato recuperado do dispositivo, que pode ser diferente do nome de host passado para o módulo:
-
hostname-facts.json — Fatos do dispositivo no formato JSON
-
hostname-inventory.xml — Inventário de hardware do dispositivo em formato XML
Por exemplo, a playbook a seguir recupera os fatos do dispositivo para cada dispositivo no grupo de inventário e economiza os dados para cada dispositivo em arquivos separados no diretório de playbook no nó de controle Ansible. Como o manual executa o módulo da Juniper Networks localmente, a Ansible é padrão para coletar fatos do nó de controle. O manual inclui o gather_facts: no
argumento para evitar que Ansible reúna fatos do nó de controle e, em vez disso, usa o facts
módulo na juniper.device
coleção para recuperar os fatos do dispositivo gerenciado. Para autenticar com o dispositivo, o exemplo usa as chaves SSH existentes no local padrão e, portanto, não fornece credenciais explicitamente para o facts
módulo no manual.
--- - name: Get device facts hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and save to file juniper.device.facts: savedir: "{{ playbook_dir }}"
Por padrão, os módulos e juniper_junos_facts
os facts
módulos não retornam a configuração do dispositivo. Para devolver a configuração ativa para um dispositivo, além dos fatos do dispositivo, inclua a opção config_format
e especifique o formato em que devolver a configuração. Valores de formato aceitáveis são'json'
, 'set'
'text'
e'xml'
. O formato solicitado deve ser suportado pela versão do Junos OS em execução no dispositivo.
Quando você inclui a opção config_format
, o ansible_facts.junos
níquete na resposta do módulo inclui a config
chave com a configuração no formato especificado em uma única corda multi-linha. Se a opção savedir
estiver incluída, os dados de configuração não estiverem escritos no arquivo.
Usar o Ansible para recuperar dados de configuração de um dispositivo Junos e salvar os dados em um arquivo, usar o config
ou juniper_junos_config
módulo em vez do facts
módulo. juniper_junos_facts
Para obter mais informações, consulte Use Ansible para recuperar ou comparar as configurações do Junos OS.
O manual do próximo exemplo executa as seguintes operações:
-
Recupera os fatos do dispositivo e a configuração ativa para cada dispositivo no grupo de inventário
-
Salva os fatos e o inventário de hardware para cada dispositivo em arquivos separados no diretório de playbook no nó de controle Ansible
-
Imprime a configuração de cada dispositivo à saída padrão
--- - name: Get device facts and configuration hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and configuration and save facts to file juniper.device.facts: savedir: "{{ playbook_dir }}" config_format: "xml" register: result - name: Print configuration debug: var: result.ansible_facts.junos.config
user@ansible-cn:~$ ansible-playbook facts.yaml PLAY [Get device facts and configurations] ********************************** TASK [Retrieve device facts and configuration and save facts to file] ******* ok: [dc1a.example.net] TASK [Print configuration] ************************************************** ok: [dc1a.example.net] => { "result.ansible_facts.junos.config": "<configuration commit-seconds=\"1605564153\" commit-localtime=\"2020-11-16 14:02:33 PST\" commit-user=\"admin\">\n <version>20191212.201431_builder.r1074901</version>\n [...output truncated...] </configuration>\n" } PLAY RECAP ****************************************************************** dc1a.example.net : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0