En Ansible, los roles son una herramienta poderosa para organizar y reutilizar configuraciones. Un rol agrupa tareas, plantillas, archivos y variables necesarias para llevar a cabo una función específica. Esto no solo simplifica el desarrollo, sino que también facilita la escalabilidad y el mantenimiento del proyecto, ya que permite aplicar configuraciones de manera consistente en múltiples entornos.
Supongamos que tenemos que configurar un servidor web. Podemos crear un rol llamado webserver
que incluya:
-
Tareas (tasks): Las acciones que se ejecutarán, como instalar Apache, configurar archivos, etc.
-
Archivos (files): Archivos estáticos que necesitas copiar al servidor.
-
Plantillas (templates): Archivos de configuración dinámicos que se llenarán con variables.
-
Variables (vars): Valores que podemos usar en las tareas y plantillas.
Aquí tenemos un esquema básico de un rol webserver
:
webserver/
├── tasks/
│ └── main.yml # Aquí defines tus tareas
├── files/
│ └── index.html # Archivo estático que se copiará
├── templates/
│ └── httpd.conf.j2 # Plantilla para configuración de Apache
├── vars/
│ └── main.yml # Variables que usarás en el rol
└── meta/
└── main.yml # Información sobre el rol
Este es el aspecto del fichero main.yml
---
- name: Instalar Apache
apt:
name: apache2
state: present
- name: Copiar archivo index.html
copy:
src: index.html
dest: /var/www/html/index.html
- name: Aplicar configuración desde plantilla
template:
src: httpd.conf.j2
dest: /etc/apache2/apache2.conf
Cuando tengamos que configurar otro servidor web, solo tenemos que llamar al rol webserver en el playbook.
---
- hosts: webservers
roles:
- webserver