En aquest tema, explorarem l'estructura del directori de rols en Ansible. Els rols són una manera d'organitzar els playbooks i altres fitxers relacionats per facilitar la reutilització i la compartició del codi. Una estructura de directori ben definida és essencial per mantenir els rols nets i fàcils de gestionar.
Objectius d'Aprenentatge
Al final d'aquest tema, hauràs après:
- La importància d'una estructura de directori ben definida per als rols.
- Els components principals d'un directori de rols.
- Com crear i organitzar aquests components.
Estructura Bàsica del Directori de Rols
Un directori de rols típic en Ansible té la següent estructura:
roles/ └── nom_del_rol/ ├── tasks/ │ └── main.yml ├── handlers/ │ └── main.yml ├── templates/ ├── files/ ├── vars/ │ └── main.yml ├── defaults/ │ └── main.yml ├── meta/ │ └── main.yml ├── tests/ │ ├── inventory │ └── test.yml └── README.md
Components del Directori de Rols
-
tasks/: Aquest directori conté els fitxers de tasques que defineixen les accions que el rol ha de realitzar. El fitxer
main.yml
és el punt d'entrada principal per a les tasques del rol.# roles/nom_del_rol/tasks/main.yml - name: Instal·lar Apache apt: name: apache2 state: present
-
handlers/: Aquest directori conté els fitxers de handlers, que són tasques que es poden notificar des d'altres tasques. El fitxer
main.yml
és el punt d'entrada principal per als handlers del rol.# roles/nom_del_rol/handlers/main.yml - name: Reiniciar Apache service: name: apache2 state: restarted
-
templates/: Aquest directori conté plantilles Jinja2 que es poden utilitzar per generar fitxers de configuració dinàmics.
-
files/: Aquest directori conté fitxers estàtics que es poden copiar directament als hosts de destinació.
-
vars/: Aquest directori conté fitxers de variables que defineixen valors que es poden utilitzar dins del rol. El fitxer
main.yml
és el punt d'entrada principal per a les variables del rol.# roles/nom_del_rol/vars/main.yml apache_port: 80
-
defaults/: Aquest directori conté fitxers de variables per defecte que defineixen valors predeterminats per al rol. El fitxer
main.yml
és el punt d'entrada principal per a les variables per defecte del rol.# roles/nom_del_rol/defaults/main.yml apache_port: 8080
-
meta/: Aquest directori conté metadades sobre el rol, com ara les seves dependències. El fitxer
main.yml
és el punt d'entrada principal per a les metadades del rol.# roles/nom_del_rol/meta/main.yml dependencies: - { role: common, some_parameter: 3 }
-
tests/: Aquest directori conté fitxers de proves per assegurar-se que el rol funciona correctament. Inclou un fitxer d'inventari i un playbook de prova.
# roles/nom_del_rol/tests/test.yml - hosts: localhost roles: - nom_del_rol
-
README.md: Aquest fitxer conté documentació sobre el rol, incloent-hi una descripció, com utilitzar-lo i qualsevol altra informació rellevant.
Exercici Pràctic
Objectiu
Crea un rol anomenat webserver
amb l'estructura de directori adequada i afegeix una tasca per instal·lar Nginx.
Passos
-
Crea l'estructura de directori per al rol
webserver
.mkdir -p roles/webserver/{tasks,handlers,templates,files,vars,defaults,meta,tests} touch roles/webserver/{tasks/main.yml,handlers/main.yml,vars/main.yml,defaults/main.yml,meta/main.yml,tests/test.yml,README.md}
-
Afegeix una tasca per instal·lar Nginx al fitxer
tasks/main.yml
.# roles/webserver/tasks/main.yml - name: Instal·lar Nginx apt: name: nginx state: present
-
Afegeix un handler per reiniciar Nginx al fitxer
handlers/main.yml
.# roles/webserver/handlers/main.yml - name: Reiniciar Nginx service: name: nginx state: restarted
-
Afegeix una variable per definir el port de Nginx al fitxer
vars/main.yml
.# roles/webserver/vars/main.yml nginx_port: 80
-
Afegeix una variable per defecte per definir el port de Nginx al fitxer
defaults/main.yml
.# roles/webserver/defaults/main.yml nginx_port: 8080
-
Afegeix metadades sobre el rol al fitxer
meta/main.yml
.# roles/webserver/meta/main.yml dependencies: []
-
Afegeix un playbook de prova al fitxer
tests/test.yml
.# roles/webserver/tests/test.yml - hosts: localhost roles: - webserver
-
Afegeix documentació al fitxer
README.md
.# Webserver Role Aquest rol instal·la i configura Nginx. ## Variables - `nginx_port`: El port en el qual Nginx escoltarà (per defecte: 8080). ## Ús ```yaml - hosts: all roles: - webserver
Conclusió
En aquest tema, hem après la importància d'una estructura de directori ben definida per als rols en Ansible. Hem explorat els components principals d'un directori de rols i hem creat un rol bàsic anomenat webserver
amb l'estructura adequada. Aquesta organització facilita la reutilització i la compartició del codi, així com el manteniment dels rols a llarg termini.
En el següent tema, aprendrem com utilitzar els rols en els playbooks per aprofitar al màxim aquesta estructura organitzada.
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