Solucionar problemas de coleção e erros de módulo do Ansible ao gerenciar dispositivos Junos
As seções a seguir discutem erros que você pode encontrar ao usar a coleção Ansible para gerenciar dispositivos que executam o Junos OS e dispositivos que executam o juniper.device Junos OS Evolved.
Problema
Descrição
Durante a execução de um playbook do Ansible, o nó de controle gera um erro informando que não foi possível resolver um juniper.device módulo ou junipernetworks.junos módulo ou que nenhuma ação foi detectada na tarefa. Por exemplo:
ERROR! couldn't resolve module/action 'juniper.device.facts'. This often indicates a misspelling, missing collection, or incorrect module path.
[ERROR]: couldn't resolve module/action 'junipernetworks.junos.junos_facts'. This often indicates a misspelling, missing collection, or incorrect module path.
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
Causa
O nó de controle do Ansible não pode localizar a coleção e os juniper.device módulos associados. A partir da juniper.device versão 2.0.0, a coleção inclui os junipernetworks.junos módulos além dos módulos originais juniper.device .
Solução
A juniper.device coleção está hospedada no site do Ansible Galaxy. Para usar os módulos na coleção, você deve instalar a coleção no nó de controle do Ansible e também referenciá-la em seu playbook.
Para instalar a juniper.device coleção no nó de controle do Ansible, execute o ansible-galaxy collection install comando e especifique juniper.device.
user@ansible-cn:~$ ansible-galaxy collection install juniper.device
Se você não instalar a coleção no local padrão, talvez seja necessário definir o caminho para ela na configuração do Ansible. Para obter mais informações sobre como instalar coleções e especificar o caminho, consulte a documentação oficial do Ansible.
Para usar os módulos na juniper.device coleção, faça referência ao nome da coleção totalmente qualificada ao executar um módulo. Você também deve definir as variáveis apropriadas de conexão e sistema operacional de rede para o conjunto de módulos que você usa. Você pode definir as variáveis em locais diferentes, por exemplo, em seu arquivo de inventário, em seus arquivos de variáveis de host ou grupo, em seu manual ou como argumentos de linha de comando. Para obter mais informações sobre os juniper.device conjuntos de módulos, consulte Entender o Ansible para coleções e módulos do Junos OS.
O guia estratégico de exemplo a seguir faz referência ao arquivo de inventário fornecido e executa o juniper.device.facts módulo.
# Inventory [junos] host1.example.com [junos:vars] ansible_connection=local
---
- name: Get Device Facts
hosts: junos
gather_facts: no
tasks:
- name: Get device facts
juniper.device.facts:
savedir: "{{ playbook_dir }}"
Se você estiver usando os junipernetworks.junos módulos da coleção mesclada juniper.device e seu playbook ainda fizer referência ao junipernetworks.junos namespace:
-
Em seu manual, atualize o nome da coleção totalmente qualificado para usar
juniper.device. -
No arquivo de inventário, defina
ansible_network_oscomojuniper.device.junos.
O guia estratégico a seguir faz referência ao arquivo de inventário fornecido e executa o juniper.device.junos_facts módulo.
# Inventory [junos] host2.example.com [junos:vars] ansible_connection=ansible.netcommon.netconf ansible_network_os=juniper.device.junos
---
- name: Get Device Facts
hosts: junos
gather_facts: no
tasks:
- name: Get device facts
juniper.device.junos_facts:
junipernetworks.junos namespace, você pode instalar as coleções e junipernetworks.junos .juniper.device No entanto, você ainda precisa atualizar a variável do sistema operacional de rede do Ansible em seu arquivo de inventário.