Què és un Playbook?
Un Playbook és un fitxer YAML que conté una sèrie d'instruccions que Ansible ha de seguir per automatitzar tasques en un o més sistemes remots. Els Playbooks són el cor d'Ansible i permeten definir configuracions, desplegar aplicacions i orquestrar tasques complexes de manera repetible i coherent.
Característiques dels Playbooks:
- Declaratius: Descriuen l'estat desitjat del sistema, no els passos per arribar-hi.
- Idempotents: Executar un Playbook múltiples vegades no canvia el resultat si l'estat desitjat ja s'ha assolit.
- Llegibles: Escrits en YAML, són fàcils de llegir i entendre.
Estructura d'un Playbook
Un Playbook està format per una llista de "plays". Cada "play" aplica un conjunt de tasques a un grup d'hosts. A continuació es mostra un exemple bàsic d'un Playbook:
--- - name: Instal·lar i configurar Apache hosts: webservers become: yes tasks: - name: Instal·lar Apache apt: name: apache2 state: present - name: Iniciar el servei d'Apache service: name: apache2 state: started
Explicació del codi:
---
: Indica l'inici d'un document YAML.- name
: Descripció del "play".hosts
: Defineix els hosts objectiu (en aquest cas, el grupwebservers
).become
: Indica si s'han d'executar les tasques amb privilegis elevats (sudo).tasks
: Llista de tasques a executar.name
: Descripció de la tasca.apt
: Mòdul d'Ansible per gestionar paquets en sistemes basats en Debian.service
: Mòdul d'Ansible per gestionar serveis.
Components d'un Playbook
Plays
Un "play" és una seqüència de tasques que s'executen en un grup de hosts. Cada "play" té els següents components:
- Hosts: Defineix els hosts objectiu.
- Variables: Variables que es poden utilitzar dins del "play".
- Tasques: Llista de tasques a executar.
Tasques
Les tasques són les unitats bàsiques de treball en un Playbook. Cada tasca utilitza un mòdul d'Ansible per realitzar una acció específica. Les tasques tenen els següents components:
- Name: Descripció de la tasca.
- Mòdul: Mòdul d'Ansible que s'utilitza per executar la tasca.
- Arguments: Arguments que es passen al mòdul.
Mòduls
Els mòduls són petits programes que Ansible executa per realitzar tasques específiques. Alguns exemples de mòduls són:
apt
: Per gestionar paquets en sistemes basats en Debian.yum
: Per gestionar paquets en sistemes basats en Red Hat.service
: Per gestionar serveis.copy
: Per copiar fitxers.
Exemple Pràctic
A continuació es mostra un exemple pràctic d'un Playbook que instal·la i configura un servidor web Nginx:
--- - name: Instal·lar i configurar Nginx hosts: webservers become: yes tasks: - name: Instal·lar Nginx apt: name: nginx state: present - name: Iniciar el servei de Nginx service: name: nginx state: started - name: Copiar fitxer de configuració personalitzat copy: src: /path/to/local/nginx.conf dest: /etc/nginx/nginx.conf backup: yes - name: Reiniciar Nginx per aplicar la nova configuració service: name: nginx state: restarted
Explicació del codi:
apt
: Instal·la el paquetnginx
.service
: Inicia el serveinginx
.copy
: Copia un fitxer de configuració personalitzat a/etc/nginx/nginx.conf
i en fa una còpia de seguretat.service
: Reinicia el serveinginx
per aplicar la nova configuració.
Exercici Pràctic
Objectiu:
Escriure un Playbook que instal·li MySQL en un grup de hosts anomenat dbservers
, iniciï el servei i creï una base de dades anomenada example_db
.
Solució:
--- - name: Instal·lar i configurar MySQL hosts: dbservers become: yes tasks: - name: Instal·lar MySQL apt: name: mysql-server state: present - name: Iniciar el servei de MySQL service: name: mysql state: started - name: Crear base de dades example_db mysql_db: name: example_db state: present
Explicació del codi:
apt
: Instal·la el paquetmysql-server
.service
: Inicia el serveimysql
.mysql_db
: Crea una base de dades anomenadaexample_db
.
Resum
En aquesta secció, hem après què són els Playbooks d'Ansible, la seva estructura bàsica i com escriure un Playbook senzill. Hem vist exemples pràctics i hem realitzat un exercici per reforçar els conceptes apresos. En la següent secció, aprofundirem en com escriure el teu primer Playbook amb més detall.
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