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.md
Incloent 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 - database
Passant 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: 200
Explicació del Codi
- role: Nom del rol.
- vars: Variables específiques per a aquest rol.
Exercici Pràctic
Exercici
- Crea un rol anomenat
nginx
que 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.yml
Fitxer 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: yes
Fitxer 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