En aquest tema, aprendrem com crear rols en Ansible i com compartir-los amb la comunitat mitjançant Ansible Galaxy. Els rols són una manera d'organitzar i reutilitzar el codi d'Ansible, facilitant la gestió de configuracions complexes.
- Introducció als Rols
Què és un Rol?
Un rol en Ansible és una col·lecció d'elements que poden ser utilitzats per configurar un sistema. Aquests elements inclouen:
- Tasques: Accions que Ansible ha de realitzar.
- Fitxers: Fitxers que han de ser copiats al sistema remot.
- Plantilles: Fitxers Jinja2 que poden ser renderitzats amb variables.
- Variables: Valors que poden ser utilitzats dins de les tasques i plantilles.
- Handlers: Tasques que s'executen en resposta a notificacions.
- Meta: Informació sobre el rol, com ara les seves dependències.
- Creant un Rol
Estructura del Directori de Rols
La creació d'un rol implica seguir una estructura de directori específica. Aquesta estructura ajuda a mantenir el codi organitzat i fàcil de gestionar.
my_role/ ├── defaults/ │ └── main.yml ├── files/ ├── handlers/ │ └── main.yml ├── meta/ │ └── main.yml ├── tasks/ │ └── main.yml ├── templates/ ├── tests/ │ ├── inventory │ └── test.yml └── vars/ └── main.yml
Creant el Rol Pas a Pas
-
Crear el Directori del Rol:
ansible-galaxy init my_role
-
Definir les Tasques: Editem
tasks/main.yml
per definir les tasques que el rol ha de realitzar.--- - name: Instal·lar Apache apt: name: apache2 state: present
-
Definir les Variables: Editem
vars/main.yml
per definir les variables que seran utilitzades en el rol.--- apache_port: 80
-
Definir els Handlers: Editem
handlers/main.yml
per definir els handlers que seran notificats per les tasques.--- - name: Reiniciar Apache service: name: apache2 state: restarted
-
Definir les Plantilles: Creem una plantilla a
templates/apache.conf.j2
que serà utilitzada per configurar Apache.Listen {{ apache_port }}
-
Definir els Fitxers: Copiem qualsevol fitxer necessari a
files/
. -
Definir la Meta: Editem
meta/main.yml
per definir les metadades del rol, com ara les seves dependències.--- dependencies: []
- Compartint Rols amb Ansible Galaxy
Què és Ansible Galaxy?
Ansible Galaxy és una plataforma per compartir rols d'Ansible amb la comunitat. Permet als usuaris trobar, descarregar i utilitzar rols creats per altres.
Publicant un Rol a Ansible Galaxy
-
Crear un Compte a Ansible Galaxy: Registra't a Ansible Galaxy.
-
Configurar el Fitxer
meta/main.yml
: Assegura't que el fitxermeta/main.yml
conté tota la informació necessària, incloent-hi el nom del rol, l'autor, la descripció, etc.--- galaxy_info: author: "El teu Nom" description: "Un rol per instal·lar i configurar Apache" company: "La teva Empresa" license: "MIT" min_ansible_version: 2.9 platforms: - name: Ubuntu versions: - bionic - focal
-
Publicar el Rol: Utilitza la comanda
ansible-galaxy
per publicar el rol.ansible-galaxy role import <el_teu_usuari> my_role
-
Utilitzar el Rol: Un cop publicat, altres usuaris poden instal·lar el rol utilitzant la comanda següent:
ansible-galaxy install <el_teu_usuari>.my_role
- Exercici Pràctic
Objectiu
Crea un rol que instal·li i configuri Nginx en un servidor Ubuntu.
Passos
-
Crear el Directori del Rol:
ansible-galaxy init nginx_role
-
Definir les Tasques: Editem
tasks/main.yml
per instal·lar Nginx.--- - name: Instal·lar Nginx apt: name: nginx state: present
-
Definir les Variables: Editem
vars/main.yml
per definir el port de Nginx.--- nginx_port: 80
-
Definir els Handlers: Editem
handlers/main.yml
per reiniciar Nginx.--- - name: Reiniciar Nginx service: name: nginx state: restarted
-
Definir les Plantilles: Creem una plantilla a
templates/nginx.conf.j2
per configurar Nginx.server { listen {{ nginx_port }}; server_name localhost; location / { root /var/www/html; index index.html index.htm; } }
-
Provar el Rol: Crea un fitxer de prova a
tests/test.yml
i executa'l per assegurar-te que el rol funciona correctament.--- - hosts: localhost roles: - nginx_role
Solució
--- - name: Instal·lar Nginx apt: name: nginx state: present - name: Copiar la configuració de Nginx template: src: nginx.conf.j2 dest: /etc/nginx/sites-available/default notify: - Reiniciar Nginx - name: Reiniciar Nginx service: name: nginx state: restarted
- Conclusió
En aquest tema, hem après com crear rols en Ansible i com compartir-los amb la comunitat mitjançant Ansible Galaxy. Els rols són una eina poderosa per organitzar i reutilitzar el codi d'Ansible, facilitant la gestió de configuracions complexes. Practica creant i compartint els teus propis rols per millorar les teves habilitats amb 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