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: startedExplicació 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: restartedExplicació del codi:
apt: Instal·la el paquetnginx.service: Inicia el serveinginx.copy: Copia un fitxer de configuració personalitzat a/etc/nginx/nginx.confi en fa una còpia de seguretat.service: Reinicia el serveinginxper 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: presentExplicació 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
