Solución de problemas de errores de autenticación de Ansible al administrar dispositivos de Junos
En las siguientes secciones se describen los errores de autenticación que puede encontrar al usar Ansible para administrar dispositivos que ejecutan Junos OS y dispositivos que ejecutan Junos OS evolucionado. En estas secciones también se presentan las posibles causas y soluciones de cada error.
Solución de problemas de errores de autenticación
Problema
Descripción
Durante la ejecución de un juniper.device módulo o de un junipernetworks.junos módulo de la juniper.device colección, el nodo de control de Ansible genera un ConnectAuthError error o un AuthenticationException error de autenticación con errores. Por ejemplo:
"msg": "Unable to make a PyEZ connection: ConnectAuthError(dc1a.example.net)"
o bien
"msg": "AuthenticationException('Authentication failed.')"
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 de Junos.
-
El usuario tiene una cuenta con una contraseña basada en texto configurada en el dispositivo Junos, pero el usuario no tiene contraseña incorrecta o no se le proporciona ninguna contraseña al ejecutar el módulo.
-
El usuario tiene una cuenta en el dispositivo Junos con las claves SSH configuradas, pero no se puede acceder a ellas 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. La cuenta debe tener configurado un par de claves público/privado SSH o una contraseña basada en texto. Si la cuenta usa claves SSH, verifique que el usuario pueda acceder a ellas.
Solución de problemas de errores de conn_type de atributos
Problema
Descripción
Durante la ejecución de un juniper.device módulo, 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 uso de juniper.device un provider diccionario. Si hace referencia a un provider diccionario, los módulos generan el error antes mencionado.
Solución
En el caso de los juniper.device módulos (excepto juniper.device.junos_* los módulos), si proporciona parámetros de conexión y autenticación en la reproducción del manual, debe definir los parámetros en la ubicación adecuada para la conexión de Ansible.
-
Para conexiones persistentes (
connection: juniper.device.pyez), defina los parámetros en lavars:sección. -
Para conexiones locales (
connection: local), defina los parámetros en lavars:sección o como argumentos de módulo de nivel superior.
En el siguiente manual, se utiliza una conexión persistente y se define el parámetro de autenticación en la sección del vars manual.
---
- 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 }}"
En el siguiente manual, se utiliza una conexión local y se define el parámetro de autenticación como un 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 }}"