Cómo depurar 'unreachable' (inaccesible) y 'failed' (fallido) en Ansible

AnsibleBeginner
Practicar Ahora

Introducción

Ansible, una poderosa herramienta de automatización de infraestructura, a veces puede encontrar errores de 'unreachable' (inaccesible) y 'failed' (fallido) durante la ejecución de playbooks. Este tutorial lo guiará a través del proceso de identificación, comprensión y resolución de estos problemas, ayudándole a mantener un entorno confiable y eficiente impulsado por Ansible.

Identificación de errores 'Unreachable' (inaccesible) y 'Failed' (fallido) en Ansible

Comprensión de los errores 'Unreachable'

Los errores 'Unreachable' en Ansible ocurren cuando el nodo de control no puede establecer una conexión con el nodo administrado. Esto puede suceder por diversas razones, como:

  • El nodo administrado no está encendido o está fuera de línea.
  • La conexión SSH entre el nodo de control y el nodo administrado no está configurada correctamente.
  • Las reglas del firewall están bloqueando la conexión entre el nodo de control y el nodo administrado.
  • El servidor SSH del nodo administrado no está en ejecución o no es accesible.

Para identificar los errores 'Unreachable', puede buscar lo siguiente en la salida de Ansible:

fatal: [<host>] => {
    "msg": "SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh",
    "unreachable": true
}

Comprensión de los errores 'Failed'

Los errores 'Failed' en Ansible ocurren cuando el nodo de control puede establecer una conexión con el nodo administrado, pero la ejecución de la tarea en el nodo administrado falla. Esto puede suceder por diversas razones, como:

  • El comando o módulo de la tarea no es válido o no es compatible con el nodo administrado.
  • El comando o módulo de la tarea encuentra un error durante la ejecución en el nodo administrado.
  • La tarea no puede alcanzar el estado deseado en el nodo administrado.

Para identificar los errores 'Failed', puede buscar lo siguiente en la salida de Ansible:

fatal: [<host>]: FAILED! => {
    "changed": false,
    "msg": "Some error message",
    "rc": 1,
    "results": []
}

Solución de problemas de errores 'Unreachable' (inaccesible)

Comprobación de la conectividad

El primer paso para solucionar los errores 'Unreachable' es asegurarse de que el nodo de control puede establecer una conexión con el nodo administrado. Puede usar los siguientes comandos para probar la conectividad:

## Ping the managed node
ping <managed_node_ip>

## Attempt an SSH connection to the managed node
ssh <managed_node_username>@<managed_node_ip>

Si el ping o la conexión SSH fallan, tendrá que investigar la configuración de red y la configuración del firewall tanto en el nodo de control como en el nodo administrado.

Verificación de la configuración SSH

Otra causa común de errores 'Unreachable' es un problema con la configuración SSH entre el nodo de control y el nodo administrado. Puede verificar la configuración SSH comprobando lo siguiente:

  • Asegúrese de que las claves SSH estén configuradas correctamente y de que el nodo de control tenga los permisos necesarios para acceder al nodo administrado.
  • Compruebe los parámetros de conexión SSH, como el nombre de usuario, el puerto y el archivo de clave privada, en el archivo de inventario de Ansible o en la definición de la tarea.
  • Asegúrese de que el servidor SSH esté en ejecución en el nodo administrado y de que sea accesible desde el nodo de control.

Depuración de la verbosidad de Ansible

Para obtener información más detallada sobre el error 'Unreachable', puede aumentar la verbosidad de la salida de Ansible utilizando las opciones -vvv o -vvvv. Esto proporcionará información más detallada sobre el proceso de conexión y autenticación, lo que puede ayudarle a identificar la causa raíz del problema.

ansible-playbook -i inventory.yml playbook.yml -vvv

Comprobación del estado del nodo administrado

En algunos casos, el error 'Unreachable' puede deberse a que el nodo administrado esté apagado o no responda. Puede comprobar el estado del nodo administrado utilizando el siguiente comando:

ansible <host_pattern> -m ping

Si el nodo administrado no responde, tendrá que investigar el problema en el lado del nodo administrado, como comprobar el estado, la conectividad de red o los registros del sistema.

Solución de problemas de errores 'Failed' (fallido)

Comprobación de la sintaxis y ejecución de la tarea

Al encontrar errores 'Failed', el primer paso es comprobar la sintaxis y ejecución de la tarea. Puedes hacer esto de la siguiente manera:

  1. Verificar la definición de la tarea en el playbook o rol de Ansible.
  2. Comprobar los parámetros del comando o módulo de la tarea en busca de errores o faltas de ortografía.
  3. Asegurarse de que la tarea sea compatible con el sistema operativo y las versiones de software del nodo administrado.

Puedes usar la opción --check para realizar una ejecución simulada de la tarea e identificar cualquier problema potencial:

ansible-playbook -i inventory.yml playbook.yml --check

Depuración de la ejecución de la tarea

Si la sintaxis de la tarea es correcta, puedes investigar más el error 'Failed' depurando la ejecución de la tarea. Puedes hacer esto de la siguiente manera:

  1. Aumentar la verbosidad de la salida de Ansible utilizando las opciones -vvv o -vvvv para obtener información más detallada sobre la ejecución de la tarea.
  2. Comprobar la salida y los mensajes de error de la tarea en busca de pistas sobre la causa raíz del fallo.
  3. Revisar los registros del sistema del nodo administrado en busca de mensajes de error o información relevantes.

Manejo de tipos específicos de errores

Dependiendo del tipo de error 'Failed', es posible que debas tomar diferentes medidas para solucionar y resolver el problema. Algunos tipos comunes de errores y sus pasos de solución de problemas incluyen:

  1. Errores de ejecución de módulos: Asegurarse de que el módulo esté instalado y configurado correctamente en el nodo administrado.
  2. Errores de ejecución de comandos: Verificar que el comando sea válido y que el nodo administrado tenga los permisos necesarios para ejecutarlo.
  3. Errores de modificación de recursos: Asegurarse de que la tarea esté intentando modificar el recurso de la manera esperada y que el nodo administrado tenga los permisos necesarios para realizar la modificación.

Siguiendo estos pasos, puedes solucionar y resolver eficazmente los errores 'Failed' en Ansible.

Resumen

Al final de este tutorial de Ansible, tendrá una comprensión sólida de cómo depurar eficazmente los errores 'unreachable' (inaccesible) y 'failed' (fallido) en sus playbooks de Ansible. Aprenderá a aprovechar las herramientas de depuración integradas de Ansible, a identificar las causas raíces de los problemas y a implementar estrategias para prevenir y resolverlos, asegurando que su automatización impulsada por Ansible funcione sin problemas.