Cómo Depurar y Solucionar Errores en Ansible

Cuando trabajamos con Ansible, es inevitable encontrarnos con errores durante la ejecución de nuestros playbooks. Afortunadamente, Ansible proporciona varias herramientas y estrategias para depurar y solucionar problemas de manera eficiente.

En este post, veremos cómo identificar y corregir errores en Ansible utilizando opciones de depuración, módulos especiales y buenas prácticas.


1. Usando el Modo Verboso (-v, -vv, -vvv)

Si un playbook no se ejecuta correctamente, el primer paso es aumentar el nivel de detalle de la salida usando -v o versiones más detalladas -vv y -vvv:

ansible-playbook mi_playbook.yml -v   # Salida con detalles básicos
ansible-playbook mi_playbook.yml -vv  # Más información
ansible-playbook mi_playbook.yml -vvv # Información completa sobre la ejecución

Con -vvv, podemos ver los comandos exactos que Ansible está ejecutando en los nodos remotos.

2. Utilizando el Módulo debug

El módulo debug nos permite imprimir información en medio de la ejecución de un playbook. Es útil para comprobar valores de variables o estados del sistema.

Ejemplo de uso:

- name: Verificar contenido de una variable
  debug:
    msg: "El valor de mi_variable es: {{ mi_variable }}"

También podemos usar debug solo si estamos ejecutando el playbook en modo detallado:

- name: Depurar solo si hay mayor nivel de verbosidad
  debug:
    msg: "Esta es una información útil"
  when: ansible_verbosity >= 2

3. Usar --step para Ejecutar Paso a Paso

Si queremos ejecutar el playbook paso a paso, podemos usar la opción --step:

ansible-playbook mi_playbook.yml --step

Esto nos pedirá confirmación antes de ejecutar cada tarea, permitiendo inspeccionar los resultados antes de continuar.

4. Ejecutar Tareas en Modo check (Dry Run)

Antes de aplicar cambios en los servidores, podemos hacer una prueba sin modificar nada usando --check:

ansible-playbook mi_playbook.yml --check

Esto mostrará qué cambios se harían sin ejecutarlos realmente.

5. Analizar Errores de Sintaxis con ansible-lint

Si un playbook tiene errores de sintaxis o no sigue las mejores prácticas, podemos usar ansible-lint:

ansible-lint mi_playbook.yml

Esto nos ayudará a identificar problemas como variables mal definidas o tareas mal estructuradas.

6. Conectarse al Nodo Manualmente

Si un error parece estar relacionado con la conectividad SSH, podemos intentar conectarnos manualmente:

ssh usuario@servidor

Si la conexión falla, puede deberse a problemas de permisos, autenticación o firewall.

También podemos probar si Ansible puede conectarse correctamente usando:

ansible all -m ping -u usuario

Si recibimos SUCCESS, la conexión funciona correctamente.

7. Revisar los Registros en /var/log

Si estamos gestionando servicios como NGINX, MySQL o Apache, puede ser útil revisar los logs en /var/log/ para entender por qué una tarea falla.

Ejemplo para ver logs de NGINX:

tail -f /var/log/nginx/error.log

Si el error ocurre en un servicio específico, revisa su log correspondiente.

8. Usar --diff para Ver Cambios en Archivos

Si estamos modificando archivos con Ansible, podemos ver exactamente qué cambios se harán con --diff:

ansible-playbook mi_playbook.yml --diff

Esto es útil cuando trabajamos con template o copy, para verificar antes de aplicar cambios.


Depurar en Ansible es una habilidad clave para cualquier administrador de sistemas. Con técnicas como el uso de debug, ejecución en modo check, niveles de verbosidad y análisis de logs, podemos identificar y solucionar problemas de manera eficiente.

En el próximo post, hablaremos sobre Ansible Vault y la gestión segura de credenciales. 🚀