Solução de problemas de conexão do Ansible ao gerenciar dispositivos Junos

As seções a seguir descrevem os erros de conexão que você pode encontrar ao usar o Ansible para gerenciar dispositivos Junos. Essas seções também apresentam possíveis causas e soluções para cada erro.

Solucionar problemas de falha de conexão, comando desconhecido ou interpretador não encontrado

Problema

Descrição

Quando você executa um juniper.device módulo ou um junipernetworks.junos módulo da juniper.device coleção, o nó de controle do Ansible gera um erro sobre uma conexão com falha, um comando desconhecido ou não ser capaz de localizar o interpretador Python. Por exemplo:

ou

ou

Causa

Esses erros podem surgir quando o nó de controle do Ansible não executa o módulo localmente.

Normalmente, o Ansible requer Python no nó gerenciado. O nó de controle do Ansible envia o módulo para o nó, onde ele é executado e removido. Os juniper.device módulos não exigem Python no dispositivo gerenciado porque usam a API XML do Junos e o NETCONF para fazer interface com o dispositivo. Portanto, para realizar operações em dispositivos Junos, você deve executar os módulos localmente no nó de controle do Ansible onde o Python está instalado. Se o Ansible tentar executar um módulo diretamente no dispositivo Junos, ele gera um erro.

Solução

Para direcionar o nó de controle do Ansible para executar os módulos localmente, você deve definir os parâmetros de conexão apropriados para o conjunto de módulos. Você pode definir os parâmetros 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. O tipo de conexão varia de acordo com o conjunto de módulos escolhido e, em alguns casos, o módulo individual. Para obter mais informações, consulte:

Solucionar problemas de erros de host desconhecidos

Problema

Descrição

Quando você executa um juniper.device módulo ou um junipernetworks.junos módulo da juniper.device coleção, o nó de controle do Ansible gera um erro sobre um host, padrão de host ou endereço desconhecido.

ou

ou

Causa

Esses erros ocorrem quando o arquivo de inventário do Ansible não define o host ou o nó de controle do Ansible não consegue resolver o nome do host.

Quando você executa um módulo do Ansible diretamente ou de um playbook, qualquer host referenciado nos argumentos do módulo ou no playbook deve ser definido no arquivo de inventário do Ansible. O local padrão para o arquivo de inventário é /etc/ansible/hosts. O nó de controle do Ansible deve ser capaz de resolver os nomes de host de todos os hosts que você definir no arquivo de inventário.

Solução

Atualize o arquivo de inventário do Ansible para incluir o host ausente e verifique se a resolução de DNS está funcionando corretamente.

Para obter informações sobre o arquivo de inventário do Ansible, consulte Noções básicas sobre o arquivo de inventário do Ansible ao gerenciar dispositivos Junos , bem como a documentação oficial do Ansible em https://www.ansible.com/.

Solucionar problemas de erros de conexão recusada e erros de soquete

Problema

Descrição

Quando você executa um juniper.device módulo ou um junipernetworks.junos módulo da juniper.device coleção, o nó de controle do Ansible gera um ConnectRefusedError erro ou um erro de soquete. Por exemplo:

ou

Causa

A causa mais provável para esses erros é que o NETCONF sobre SSH não está habilitado no dispositivo Junos.

Para testar rapidamente se o NETCONF está habilitado, verifique se a conta de usuário que executa o módulo Ansible pode iniciar com êxito uma sessão NETCONF com o dispositivo.

Se o usuário puder estabelecer com êxito uma sessão NETCONF com o dispositivo na porta NETCONF padrão (830) ou em uma porta configurada especificamente para NETCONF em seu dispositivo, o NETCONF será habilitado. Caso contrário, você deve habilitar o NETCONF sobre SSH no dispositivo.

Solução

Habilite o serviço NETCONF-over-SSH no dispositivo Junos.

Solucionar problemas de erros do sistema operacional de rede do host

Problema

Descrição

Quando você executa um junipernetworks.junos módulo da juniper.device coleção (juniper.device.junos_* module), o nó de controle do Ansible gera um host network os erro. Por exemplo:

Causa

Os juniper.device.junos_* módulos exigem que você especifique o sistema operacional de rede Ansible como juniper.device.junos para hosts de destino que executam o Junos OS ou hosts de destino que executam o Junos OS Evolved.

Solução

Defina a ansible_network_os variável no local apropriado para seu ambiente e na sintaxe necessária para o formato do arquivo. Por exemplo, você pode definir a variável em seu arquivo de inventário ou em seus arquivos de variáveis de host ou grupo.

O arquivo de inventário formatado em INI de exemplo a seguir define o sistema operacional de rede Ansible como juniper.device.junos para os hosts no grupo de junos inventário: