Solucionar errores de autenticación de Ansible al administrar dispositivos Junos
En las siguientes secciones se describen los errores de autenticación que puede encontrar al usar Ansible para administrar dispositivos Junos. Estas secciones también presentan posibles causas y soluciones para cada error.
Solucionar problemas de ConnectAuthError
Problema
Descripción
Durante la ejecución de un juniper.device módulo, el nodo de control de Ansible genera un ConnectAuthError error de autenticación. Por ejemplo:
"msg": "Unable to make a PyEZ connection: ConnectAuthError(dc1a.example.net)"
Causa
Es posible que el dispositivo Junos no pueda autenticar al usuario por los siguientes motivos:
-
El usuario no tiene una cuenta en el dispositivo Junos.
-
El usuario tiene una cuenta con una contraseña basada en texto configurada en el dispositivo Junos, pero se proporciona la contraseña incorrecta o ninguna contraseña para el usuario al ejecutar el módulo.
-
El usuario tiene una cuenta en el dispositivo Junos con claves SSH configuradas, pero no se puede acceder a las claves SSH ni en el dispositivo ni en el nodo de control.
Solución
Asegúrese de que el usuario que ejecuta los módulos tenga una cuenta de inicio de sesión de Junos OS en todos los dispositivos Junos de destino y de que haya configurado un par de claves pública/privada SSH o una contraseña basada en texto para la cuenta. Si las claves SSH están configuradas, compruebe que el usuario puede acceder a ellas. Para obtener más información, consulte Autenticar usuarios que ejecutan módulos de Ansible en dispositivos Junos.
Solucionar problemas de errores de conn_type de atributos
Problema
Descripción
Durante la ejecución de un juniper.device módulo en un dispositivo Junos, el nodo de control de Ansible genera el siguiente error:
AttributeError: 'JuniperJunosModule' object has no attribute 'conn_type'
Causa
Mientras que los módulos más antiguos y obsoletos Juniper.junos admitían el uso de un provider diccionario para definir parámetros de conexión y autenticación, los módulos no admiten el juniper.device uso de un provider diccionario y generan el error mencionado anteriormente si se hace referencia a uno.
Solución
Si proporciona parámetros de conexión y autenticación en la reproducción del manual para los juniper.device módulos, los parámetros deben definirse en la ubicación adecuada para la conexión de Ansible. Para las conexiones persistentes (connection: juniper.device.pyez), defina los parámetros de la vars: sección. Para las conexiones locales (connection: local), defina los parámetros en la vars: sección o como argumentos de módulo de nivel superior. Por ejemplo:
---
- 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 }}"
---
- 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 }}"