Solucione problemas de conexão inviáveis ao gerenciar dispositivos Junos
As seções a seguir descrevem 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.
Resolução de problemas de erros de conexão fracassados ou inválidos
Problema
Descrição
Durante a execução de um juniper.device
módulo em um dispositivo Junos, o nó de controle Ansible gera um erro sobre uma conexão SSH com falha ou um comando desconhecido. Por exemplo:
UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ", "unreachable": true}
ou
unknown command: /bin/sh\r\n
Causa
Esses erros podem surgir quando o módulo não é executado localmente no nó de controle Ansible.
Normalmente, o Ansible requer Python no nó gerenciado, e o nó de controle Ansible envia o módulo para o nó, onde ele é executado e depois removido. Os módulos da Juniper Networks não exigem Python em dispositivos Junos, porque eles usam o Junos PyEZ e a API Junos XML sobre NETCONF para interface com o dispositivo. Portanto, para realizar operações em dispositivos Junos, você deve executar os módulos localmente no nó de controle Ansible onde o Python está instalado. Se a Ansible tentar executar um módulo diretamente no dispositivo Junos, ele gera um erro.
Solução
Para direcionar o nó de controle Ansible para executar os juniper.device
módulos localmente, incluir connection: local
no manual ansible ou incluir o argumento da --connection local
linha de comando ao executar módulos individuais. Por exemplo:
--- - name: Get Device Facts hosts: junos connection: local gather_facts: no
Resolução de problemas de erros desconhecidos do host
Problema
Descrição
Durante a execução de um juniper.device
módulo, o nó de controle Ansible gera um ConnectUnknownHostError
erro.
"msg": "Unable to make a PyEZ connection: ConnectUnknownHostError(dc1a.example.net)"
Causa
O host não está definido no arquivo de inventário Ansible ou o nó de controle Ansible é incapaz de resolver o nome de host.
Ao executar um módulo Ansible diretamente ou a partir de um manual de jogadas, qualquer host mencionado nos argumentos do módulo ou no manual de jogadas deve ser definido no arquivo de inventário Ansible. A localização padrão do arquivo de inventário é /etc/ansible/hosts. Se o arquivo de inventário fizer referência a um nome de host, o nó de controle Ansible deve ser capaz de resolver o nome de host.
Solução
Atualize o arquivo de inventário Ansible para incluir o host ausente e garanta que a resolução de DNS esteja funcionando corretamente.
Para obter informações sobre o arquivo de inventário Ansible, consulte Entendendo o arquivo de inventário Ansible ao gerenciar dispositivos Junos , bem como a documentação oficial do Ansible em https://www.ansible.com/.
Resolução de problemas de erros de conexão recusados
Problema
Descrição
Durante a execução de um juniper.device
módulo, o nó de controle Ansible gera um ConnectRefusedError
erro. Por exemplo:
"msg": "Unable to make a PyEZ connection: ConnectRefusedError(dc1a.example.net)"
Causa
A causa mais provável para um erro de conexão recusado é que a NETCONF sobre SSH não está habilitada no dispositivo Junos.
Para testar rapidamente se o NETCONF está habilitado, verifique se a conta do usuário que executa o módulo Ansible pode iniciar com sucesso uma sessão netconf com o dispositivo.
user@ansible-cn:~$ ssh user@dc1a.example.net -p 830 -s netconf
Se o usuário conseguir estabelecer com sucesso uma sessão netconf com o dispositivo na porta NETCONF padrão (830) ou em uma porta que esteja especificamente configurada para NETCONF em seu dispositivo, então a NETCONF está habilitada. Caso contrário, você deve habilitar o NETCONF sobre SSH no dispositivo.
Solução
Habilite o serviço NETCONF-over-SSH no dispositivo Junos.
[edit] user@host# set system services netconf ssh user@host# commit