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