En aquest tema, explorarem l'estructura d'un playbook d'Ansible. Els playbooks són el cor d'Ansible, ja que defineixen les tasques que es volen executar en els nodes gestionats. Comprendre l'estructura d'un playbook és fonamental per escriure playbooks eficients i mantenibles.
Components d'un Playbook
Un playbook d'Ansible està format per una o més "plays". Cada play aplica un conjunt de tasques a un grup de nodes. A continuació, desglossem els components principals d'un playbook:
- Hosts: Defineix els nodes on s'executaran les tasques.
- Vars: Variables que es poden utilitzar dins del playbook.
- Tasks: Llista de tasques que es volen executar.
- Handlers: Tasques especials que s'executen en resposta a notificacions.
- Roles: Agrupacions de tasques, variables, fitxers, plantilles, etc.
Exemple d'un Playbook Bàsic
--- - name: Exemple de Playbook hosts: webservers vars: http_port: 80 tasks: - name: Instal·lar Apache apt: name: apache2 state: present become: yes - name: Copiar fitxer de configuració template: src: /path/to/httpd.conf.j2 dest: /etc/apache2/sites-available/000-default.conf notify: - Restart Apache handlers: - name: Restart Apache service: name: apache2 state: restarted
Descripció dels Components
-
Hosts:
hosts: webservers
Aquest camp especifica els nodes on s'executaran les tasques. En aquest cas, el grup de nodes es diu
webservers
. -
Vars:
vars: http_port: 80
Aquí es defineixen variables que es poden utilitzar dins del playbook. En aquest exemple,
http_port
és una variable que conté el valor80
. -
Tasks:
tasks: - name: Instal·lar Apache apt: name: apache2 state: present become: yes
Les tasques són les accions que es volen executar en els nodes. Cada tasca té un nom descriptiu i utilitza un mòdul d'Ansible (en aquest cas,
apt
) per realitzar una acció. El paràmetrebecome: yes
indica que la tasca s'executarà amb privilegis d'administrador. -
Handlers:
handlers: - name: Restart Apache service: name: apache2 state: restarted
Els handlers són tasques especials que s'executen quan són notificades per altres tasques. En aquest exemple, el handler
Restart Apache
s'executa quan la tascaCopiar fitxer de configuració
el notifica.
Estructura Detallada d'un Playbook
A continuació, es presenta una estructura més detallada d'un playbook amb més components:
--- - name: Exemple Avançat de Playbook hosts: webservers vars: http_port: 80 max_clients: 200 pre_tasks: - name: Actualitzar el cache d'apt apt: update_cache: yes tasks: - name: Instal·lar Apache apt: name: apache2 state: present become: yes - name: Copiar fitxer de configuració template: src: /path/to/httpd.conf.j2 dest: /etc/apache2/sites-available/000-default.conf notify: - Restart Apache - name: Assegurar-se que Apache està en funcionament service: name: apache2 state: started post_tasks: - name: Verificar que Apache està escoltant al port 80 command: netstat -tuln | grep :80 handlers: - name: Restart Apache service: name: apache2 state: restarted
Components Addicionals
-
pre_tasks:
pre_tasks: - name: Actualitzar el cache d'apt apt: update_cache: yes
Les pre-tasques són tasques que s'executen abans de les tasques principals. En aquest exemple, s'actualitza el cache d'apt abans d'instal·lar Apache.
-
post_tasks:
post_tasks: - name: Verificar que Apache està escoltant al port 80 command: netstat -tuln | grep :80
Les post-tasques són tasques que s'executen després de les tasques principals. En aquest exemple, es verifica que Apache està escoltant al port 80.
Exercici Pràctic
Objectiu
Escriure un playbook que faci el següent:
- Instal·li Nginx en els nodes del grup
webservers
. - Copiï un fitxer de configuració personalitzat.
- Reiniciï Nginx si el fitxer de configuració ha canviat.
- Verifiqui que Nginx està en funcionament.
Solució
--- - name: Instal·lar i Configurar Nginx hosts: webservers tasks: - name: Instal·lar Nginx apt: name: nginx state: present become: yes - name: Copiar fitxer de configuració de Nginx template: src: /path/to/nginx.conf.j2 dest: /etc/nginx/nginx.conf notify: - Restart Nginx - name: Assegurar-se que Nginx està en funcionament service: name: nginx state: started handlers: - name: Restart Nginx service: name: nginx state: restarted
Explicació
- Instal·lar Nginx: Utilitza el mòdul
apt
per instal·lar Nginx. - Copiar fitxer de configuració de Nginx: Utilitza el mòdul
template
per copiar un fitxer de configuració personalitzat. - Assegurar-se que Nginx està en funcionament: Utilitza el mòdul
service
per assegurar-se que Nginx està en funcionament. - Restart Nginx: Handler que reinicia Nginx si el fitxer de configuració ha canviat.
Conclusió
En aquest tema, hem après sobre l'estructura d'un playbook d'Ansible i els seus components principals. Hem vist exemples pràctics i hem realitzat un exercici per reforçar els conceptes apresos. Amb aquesta base, estem preparats per aprofundir en altres aspectes dels playbooks en els següents temes.
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