Los playbooks de Ansible son archivos YAML que describen la configuración deseada de la infraestructura de forma declarativa. Mientras que los comandos ad-hoc son útiles para tareas puntuales, los playbooks permiten definir flujos completos de automatización reutilizables, ordenados y mantenibles. En este artículo construiremos nuestro primer playbook para instalar y configurar Nginx desde cero.
Estructura de un playbook YAML
Un playbook se compone de uno o varios plays. Cada play define sobre qué hosts ejecutar, qué tareas realizar y con qué privilegios. El formato YAML es sensible a la indentación, por lo que es fundamental mantener consistencia con espacios (no tabs).
Las variables son esenciales para hacer los playbooks reutilizables. Se pueden definir de múltiples formas, desde declaraciones inline hasta archivos independientes por grupo de hosts o por host específico.
```
# variables inline en el playbook
vars:
nginx_port: 80
server_name: "example.com"
php_version: "8.4"
# vars_files — archivo externo de variables
vars_files:
- vars/main.yml
# group_vars — variables para todo un grupo de hosts
# group_vars/all.yml → aplica a todos los hosts
# group_vars/webservers.yml → solo para webservers
# Ejemplo group_vars/webservers.yml
---
nginx_port: 8080
server_name: "app.example.com"
enable_ssl: true```
Handlers: ejecución condicional en cambios
Los handlers son tareas especiales que solo se ejecutan cuando son notificadas por otra tarea mediante la directiva notify. Esto evita reinicios innecesarios de servicios. Solo se ejecutan una vez al final del play, incluso si múltiples tareas notifican al mismo handler. Son ideales para reiniciar servicios después de cambios en archivos de configuración.
Con playbooks, variables y handlers ya puedes construir automatizaciones sólidas y reutilizables. En el próximo artículo profundizaremos en roles, templates Jinja2 y la organización de proyectos complejos.
Infografía: Ansible: Playbooks, tasks, handlers y variables — tu primera automatización