Un Playbook en Ansible es un archivo escrito en YAML que define la automatización de tareas en uno o varios sistemas. Los playbooks permiten describir configuraciones, implementar aplicaciones y coordinar múltiples tareas de forma estructurada. Cada playbook está compuesto por "plays" que indican qué hosts gestionar y qué tareas ejecutar en esos hosts.
Un playbook se organiza de la siguiente manera:
1. Hosts: Define los servidores o grupos de servidores donde se aplicarán las tareas.
2. Tareas (tasks): Son las acciones específicas que Ansible debe ejecutar en cada host (como instalar paquetes, copiar archivos, reiniciar servicios, etc.).
3. Módulos: Los módulos son funciones específicas que Ansible utiliza para ejecutar tareas (por ejemplo, apt
, yum
, copy
, service
).
4. Roles: Permiten organizar las tareas y variables de forma reutilizable y modular.
Un playbook típico se ve de la siguiente manera:
- name: Configurar un servidor web
hosts: webservers
become: yes
tasks:
- name: Instalar Nginx
apt:
name: nginx
state: present
- name: Copiar archivo de configuración
copy:
src: ./files/nginx.conf
dest: /etc/nginx/nginx.conf
- name: Reiniciar Nginx
service:
name: nginx
state: restarted
webservers
).
sudo
).
1. Instalación de un paquete en varios servidores:
- name: Instalar Git en todos los servidores
hosts: all
become: yes
tasks:
- name: Instalar Git
yum:
name: git
state: present
Resultado: El playbook instalará Git en todos los servidores especificados en el archivo de inventario.
2. Desplegar una aplicación web:
- name: Desplegar una aplicación en un grupo de servidores web
hosts: webservers
tasks:
- name: Clonar repositorio desde GitHub
git:
repo: 'https://github.com/mi-proyecto/app.git'
dest: /var/www/app
- name: Instalar dependencias con npm
command: npm install
args:
chdir: /var/www/app
- name: Iniciar la aplicación
systemd:
name: app
state: started
Resultado: El playbook clonará el repositorio, instalará dependencias y levantará el servicio de la aplicación en todos los servidores del grupo webservers
.
name
).
handlers
para gestionar tareas dependientes (por ejemplo, reiniciar servicios tras cambios de configuración).
Para más detalles, consulta la documentación oficial de Ansible sobre Playbooks.
Jorge García
Fullstack developer