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.ymlCreant el Rol Pas a Pas
-
Crear el Directori del Rol:
ansible-galaxy init my_role -
Definir les Tasques: Editem
tasks/main.ymlper definir les tasques que el rol ha de realitzar.--- - name: Instal·lar Apache apt: name: apache2 state: present -
Definir les Variables: Editem
vars/main.ymlper definir les variables que seran utilitzades en el rol.--- apache_port: 80 -
Definir els Handlers: Editem
handlers/main.ymlper 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.j2que serà utilitzada per configurar Apache.Listen {{ apache_port }} -
Definir els Fitxers: Copiem qualsevol fitxer necessari a
files/. -
Definir la Meta: Editem
meta/main.ymlper 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.ymlconté 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-galaxyper 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.ymlper instal·lar Nginx.--- - name: Instal·lar Nginx apt: name: nginx state: present -
Definir les Variables: Editem
vars/main.ymlper definir el port de Nginx.--- nginx_port: 80 -
Definir els Handlers: Editem
handlers/main.ymlper reiniciar Nginx.--- - name: Reiniciar Nginx service: name: nginx state: restarted -
Definir les Plantilles: Creem una plantilla a
templates/nginx.conf.j2per 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.ymli 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
