Solucionar problemas de erros de autenticação do Ansible ao gerenciar dispositivos Junos
As seções a seguir descrevem os erros de autenticação que você pode encontrar ao usar o Ansible para gerenciar dispositivos que executam o Junos OS e dispositivos que executam o Junos OS Evolved. Essas seções também apresentam possíveis causas e soluções para cada erro.
Solucionar problemas de erros de autenticação
Problema
Descrição
Durante a juniper.device execução de um juniper.device módulo ou de um junipernetworks.junos módulo na coleção, o nó de controle do Ansible gera um ConnectAuthError erro ou um AuthenticationException erro para falha na autenticação. Por exemplo:
"msg": "Unable to make a PyEZ connection: ConnectAuthError(dc1a.example.net)"
ou
"msg": "AuthenticationException('Authentication failed.')"
Causa
O dispositivo Junos pode falhar ao autenticar o usuário pelos seguintes motivos:
-
O usuário não tem uma conta no dispositivo Junos.
-
O usuário tem uma conta com uma senha baseada em texto configurada no dispositivo Junos, mas a senha errada ou nenhuma senha é fornecida para o usuário ao executar o módulo.
-
O usuário tem uma conta no dispositivo Junos com chaves SSH configuradas, mas as chaves SSH estão inacessíveis no dispositivo ou no nó de controle.
Solução
Certifique-se de que o usuário que executa os módulos tenha uma conta de login do Junos OS em todos os dispositivos Junos de destino. A conta deve ter um par de chaves SSH pública/privada ou uma senha baseada em texto configurada. Se a conta usar chaves SSH, verifique se o usuário pode acessar as chaves.
Solucionar problemas de erros de conn_type de atributo
Problema
Descrição
Durante a execução de um juniper.device módulo, o nó de controle do Ansible gera o seguinte erro:
AttributeError: 'JuniperJunosModule' object has no attribute 'conn_type'
Causa
Enquanto os módulos mais antigos e obsoletos Juniper.junos davam suporte ao uso de um provider dicionário para definir parâmetros de conexão e autenticação, os juniper.device módulos não dão suporte ao uso de um provider dicionário. Se você fizer referência a um provider dicionário, os módulos gerarão o erro mencionado acima.
Solução
Para os juniper.device módulos (excluindo juniper.device.junos_* módulos), se você fornecer parâmetros de conexão e autenticação na reprodução do manual, deverá definir os parâmetros no local apropriado para a conexão do Ansible.
-
Para conexões persistentes (
connection: juniper.device.pyez), defina os parâmetros navars:seção. -
Para conexões locais (
connection: local), defina os parâmetros navars:seção ou como argumentos de módulo de nível superior.
O guia estratégico a seguir usa uma conexão persistente e define o parâmetro de autenticação na seção do vars guia estratégico.
---
- name: Get device facts
hosts: dc1
connection: juniper.device.pyez
gather_facts: no
vars_prompt:
- name: "DEVICE_PASSWORD"
prompt: "Device password"
private: yes
vars:
passwd: "{{ DEVICE_PASSWORD }}"
tasks:
- name: Get device facts
juniper.device.facts:
savedir: "{{ playbook_dir }}"
O guia estratégico a seguir usa uma conexão local e define o parâmetro de autenticação como um argumento de módulo.
---
- name: Get device facts
hosts: dc1
connection: local
gather_facts: no
vars_prompt:
- name: "DEVICE_PASSWORD"
prompt: "Device password"
private: yes
tasks:
- name: Get device facts
juniper.device.facts:
passwd: "{{ DEVICE_PASSWORD }}"
savedir: "{{ playbook_dir }}"