Solución de problemas de recopilación de Ansible y errores de módulo al administrar dispositivos Junos
En las siguientes secciones se describen los errores que puede encontrar al usar la colección de juniper.device Ansible para administrar dispositivos que ejecutan Junos OS y dispositivos que ejecutan Junos OS Evolved.
Problema
Descripción
Durante la ejecución de un manual de Ansible, el nodo de control genera un error que indica que no pudo resolver un juniper.device módulo o junipernetworks.junos módulo o que no se detectó ninguna acción en la tarea. Por ejemplo:
ERROR! couldn't resolve module/action 'juniper.device.facts'. This often indicates a misspelling, missing collection, or incorrect module path.
[ERROR]: couldn't resolve module/action 'junipernetworks.junos.junos_facts'. This often indicates a misspelling, missing collection, or incorrect module path.
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
Causa
El nodo de control de Ansible no puede localizar la colección y los juniper.device módulos asociados. A partir de juniper.device la versión 2.0.0, la colección incluye los junipernetworks.junos módulos además de los módulos originales juniper.device .
Solución
La juniper.device colección está alojada en el sitio web de Ansible Galaxy. Para utilizar los módulos de la colección, debe instalar la colección en el nodo de control de Ansible y también hacer referencia a ella en el manual de estrategias.
Para instalar la juniper.device colección en el nodo de control de Ansible, ejecute el ansible-galaxy collection install comando y especifique juniper.device.
user@ansible-cn:~$ ansible-galaxy collection install juniper.device
Si no instala la colección en la ubicación predeterminada, es posible que tenga que definir la ruta a la misma en su configuración de Ansible. Para obtener más información sobre cómo instalar colecciones y especificar la ruta de acceso, consulte la documentación oficial de Ansible.
Para utilizar los módulos de la juniper.device colección, haga referencia al nombre completo de la colección al ejecutar un módulo. También debe definir las variables de red y conexión del sistema operativo adecuadas para el conjunto de módulos que utilice. Puede definir las variables en diferentes ubicaciones, por ejemplo, en el archivo de inventario, en los archivos de variables de host o grupo, en el manual de estrategias o como argumentos de línea de comandos. Para obtener más información acerca de los conjuntos de juniper.device módulos, consulte Descripción de Ansible para colecciones y módulos de Junos OS.
El siguiente manual de estrategia de ejemplo hace referencia al archivo de inventario especificado y ejecuta el juniper.device.facts módulo.
# Inventory [junos] host1.example.com [junos:vars] ansible_connection=local
---
- name: Get Device Facts
hosts: junos
gather_facts: no
tasks:
- name: Get device facts
juniper.device.facts:
savedir: "{{ playbook_dir }}"
Si usa los junipernetworks.junos módulos de la colección combinada juniper.device y el manual sigue haciendo referencia al junipernetworks.junos espacio de nombres:
-
En el manual de estrategias, actualice el nombre completo de la colección para usar
juniper.device. -
En el archivo de inventario, establezca
ansible_network_osenjuniper.device.junos.
El siguiente manual hace referencia al archivo de inventario especificado y ejecuta el juniper.device.junos_facts módulo.
# Inventory [junos] host2.example.com [junos:vars] ansible_connection=ansible.netcommon.netconf ansible_network_os=juniper.device.junos
---
- name: Get Device Facts
hosts: junos
gather_facts: no
tasks:
- name: Get device facts
juniper.device.junos_facts:
junipernetworks.junos nombres, puede instalar las juniper.device colecciones andjunipernetworks.junos. Sin embargo, todavía debe actualizar la variable del sistema operativo de red de Ansible en el archivo de inventario.