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: restartedDescripció dels Components
-
Hosts:
hosts: webserversAquest camp especifica els nodes on s'executaran les tasques. En aquest cas, el grup de nodes es diu
webservers. -
Vars:
vars: http_port: 80Aquí 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: yesLes 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: yesindica que la tasca s'executarà amb privilegis d'administrador. -
Handlers:
handlers: - name: Restart Apache service: name: apache2 state: restartedEls handlers són tasques especials que s'executen quan són notificades per altres tasques. En aquest exemple, el handler
Restart Apaches'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: restartedComponents Addicionals
-
pre_tasks:
pre_tasks: - name: Actualitzar el cache d'apt apt: update_cache: yesLes 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 :80Les 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: restartedExplicació
- Instal·lar Nginx: Utilitza el mòdul
aptper instal·lar Nginx. - Copiar fitxer de configuració de Nginx: Utilitza el mòdul
templateper copiar un fitxer de configuració personalitzat. - Assegurar-se que Nginx està en funcionament: Utilitza el mòdul
serviceper 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
