En aquest tema, aprendrem com utilitzar rols en els playbooks d'Ansible. Els rols són una manera d'organitzar i reutilitzar el codi d'Ansible, facilitant la gestió de configuracions complexes.
Objectius
- Entendre la importància dels rols en Ansible.
- Aprendre a incloure rols en un playbook.
- Veure exemples pràctics d'ús de rols en playbooks.
Què és un Rol?
Un rol en Ansible és una col·lecció d'activitats que es poden reutilitzar en diferents playbooks. Els rols permeten estructurar el codi d'Ansible de manera modular i organitzada. Cada rol pot contenir tasques, fitxers, plantilles, variables, i més.
Estructura d'un Rol
Abans de veure com utilitzar rols en un playbook, recordem l'estructura típica d'un rol:
roles/
└── example_role/
├── tasks/
│ └── main.yml
├── handlers/
│ └── main.yml
├── templates/
├── files/
├── vars/
│ └── main.yml
├── defaults/
│ └── main.yml
├── meta/
│ └── main.yml
└── README.mdIncloent Rols en un Playbook
Per utilitzar un rol en un playbook, simplement hem d'incloure'l a la secció roles del playbook. A continuació, veurem un exemple pràctic.
Exemple de Playbook amb Rols
Suposem que tenim un rol anomenat webserver que configura un servidor web. El nostre playbook podria semblar així:
Explicació del Codi
- name: Nom del playbook.
- hosts: Grup d'hosts on s'executarà el playbook.
- become: Indica que les tasques s'executaran amb privilegis elevats (sudo).
- roles: Llista de rols a executar. En aquest cas, només tenim un rol anomenat
webserver.
Exemple Avançat amb Múltiples Rols
Ara, suposem que volem configurar un servidor web i una base de dades. Podem utilitzar dos rols: webserver i database. El playbook podria ser així:
---
- name: Configurar Servidor Web i Base de Dades
hosts: all
become: yes
roles:
- webserver
- databasePassant Variables als Rols
Podem passar variables específiques als rols des del playbook. Aquí teniu un exemple:
---
- name: Configurar Servidor Web amb Variables
hosts: webservers
become: yes
roles:
- role: webserver
vars:
http_port: 8080
max_clients: 200Explicació del Codi
- role: Nom del rol.
- vars: Variables específiques per a aquest rol.
Exercici Pràctic
Exercici
- Crea un rol anomenat
nginxque instal·li i configuri Nginx. - Escriu un playbook que utilitzi aquest rol per configurar Nginx en un grup d'hosts anomenat
webservers.
Solució
Estructura del Rol nginx
roles/
└── nginx/
├── tasks/
│ └── main.yml
├── templates/
│ └── nginx.conf.j2
└── defaults/
└── main.ymlFitxer tasks/main.yml
---
- name: Instal·lar Nginx
apt:
name: nginx
state: present
- name: Copiar Configuració de Nginx
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
- name: Iniciar Nginx
service:
name: nginx
state: started
enabled: yesFitxer defaults/main.yml
Fitxer templates/nginx.conf.j2
server {
listen {{ http_port }};
server_name localhost;
location / {
root /var/www/html;
index index.html index.htm;
}
}Playbook site.yml
Resum
En aquesta secció, hem après com utilitzar rols en playbooks d'Ansible. Els rols ens permeten organitzar el codi de manera modular i reutilitzable, facilitant la gestió de configuracions complexes. Hem vist exemples pràctics i hem realitzat un exercici per reforçar els conceptes apresos. En el següent mòdul, explorarem tècniques avançades de playbook per optimitzar i millorar les nostres configuracions.
Ansible: De Principiant a Avançat
Mòdul 1: Introducció a Ansible
Mòdul 2: Conceptes bàsics d'Ansible
Mòdul 3: Playbooks
- Introducció als Playbooks
- Escrivint el teu primer Playbook
- Estructura del Playbook
- Variables i Fets
- Condicionals i Bucles
Mòdul 4: Rols
Mòdul 5: Tècniques Avançades de Playbook
Mòdul 6: Ansible Galaxy
Mòdul 7: Ansible Tower
- Introducció a Ansible Tower
- Instal·lant Ansible Tower
- Utilitzant Ansible Tower
- Gestionant Projectes i Inventaris
