En aquest tema, aprendrem com crear rols en Ansible. Els rols són una manera d'organitzar i reutilitzar el codi d'Ansible, facilitant la gestió de configuracions complexes. Un rol és una col·lecció de tasques, fitxers, plantilles, variables i altres recursos que es poden aplicar a un sistema.
Objectius
- Entendre la importància dels rols en Ansible.
- Aprendre a crear un rol des de zero.
- Conèixer l'estructura d'un rol.
- Implementar un rol en un playbook.
- Importància dels Rols
Els rols permeten:
- Reutilització del codi: Pots reutilitzar el mateix rol en diferents playbooks.
- Organització: Faciliten l'organització del codi en projectes grans.
- Mantenibilitat: Fan que el codi sigui més fàcil de mantenir i actualitzar.
- Creant un Rol des de Zero
Pas 1: Crear l'Estructura del Rol
Ansible proporciona una eina per crear l'estructura bàsica d'un rol. Utilitza la comanda següent:
Per exemple, per crear un rol anomenat webserver:
Això crearà una estructura de directoris com la següent:
webserver/
├── README.md
├── defaults/
│ └── main.yml
├── files/
├── handlers/
│ └── main.yml
├── meta/
│ └── main.yml
├── tasks/
│ └── main.yml
├── templates/
├── tests/
│ ├── inventory
│ └── test.yml
└── vars/
└── main.ymlPas 2: Entendre l'Estructura del Rol
- defaults/main.yml: Variables per defecte del rol.
- files/: Fitxers que es copien directament al sistema remot.
- handlers/main.yml: Handlers que es poden cridar des de les tasques.
- meta/main.yml: Metadades del rol, com dependències.
- tasks/main.yml: Tasques que defineixen el que fa el rol.
- templates/: Plantilles Jinja2 que es renderitzen i es copien al sistema remot.
- vars/main.yml: Variables del rol.
Pas 3: Definir les Tasques del Rol
Edita el fitxer tasks/main.yml per definir les tasques que el rol ha de realitzar. Per exemple, per instal·lar un servidor web Nginx:
---
- name: Instal·lar Nginx
apt:
name: nginx
state: present
- name: Assegurar-se que Nginx està en funcionament
service:
name: nginx
state: started
enabled: truePas 4: Definir Handlers
Els handlers són tasques que es criden quan es notifiquen. Edita el fitxer handlers/main.yml:
Pas 5: Definir Variables
Edita el fitxer vars/main.yml per definir variables específiques del rol:
Pas 6: Utilitzar Plantilles
Si necessites utilitzar plantilles, col·loca-les al directori templates/ i utilitza el mòdul template en les tasques. Per exemple, crea una plantilla nginx.conf.j2:
server {
listen {{ nginx_port }};
server_name localhost;
location / {
root /var/www/html;
index index.html index.htm;
}
}I afegeix una tasca per copiar aquesta plantilla:
---
- name: Copiar la configuració de Nginx
template:
src: nginx.conf.j2
dest: /etc/nginx/sites-available/default
notify: Reiniciar Nginx
- Implementar un Rol en un Playbook
Per utilitzar el rol en un playbook, simplement afegeix-lo a la secció roles del playbook:
Exercici Pràctic
Objectiu
Crear un rol que instal·li i configuri Apache.
Passos
- Crea un nou rol anomenat
apacheutilitzantansible-galaxy init apache. - Defineix les tasques per instal·lar Apache en
tasks/main.yml. - Defineix un handler per reiniciar Apache en
handlers/main.yml. - Crea una plantilla per a la configuració d'Apache en
templates/. - Utilitza el rol en un playbook.
Solució
- Crear el rol:
- Definir les tasques en
tasks/main.yml:
---
- name: Instal·lar Apache
apt:
name: apache2
state: present
- name: Assegurar-se que Apache està en funcionament
service:
name: apache2
state: started
enabled: true- Definir el handler en
handlers/main.yml:
- Crear una plantilla
apache.conf.j2entemplates/:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>- Afegir una tasca per copiar la plantilla:
---
- name: Copiar la configuració d'Apache
template:
src: apache.conf.j2
dest: /etc/apache2/sites-available/000-default.conf
notify: Reiniciar Apache- Utilitzar el rol en un playbook:
Conclusió
En aquest tema, hem après com crear un rol en Ansible, entendre la seva estructura i utilitzar-lo en un playbook. Els rols són una eina poderosa per organitzar i reutilitzar el codi, facilitant la gestió de configuracions complexes. Amb aquesta base, estàs preparat per crear i gestionar rols en els teus projectes d'Ansible.
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
