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 grup webservers).
  • 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 paquet nginx.
  • service: Inicia el servei nginx.
  • copy: Copia un fitxer de configuració personalitzat a /etc/nginx/nginx.conf i en fa una còpia de seguretat.
  • service: Reinicia el servei nginx 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 paquet mysql-server.
  • service: Inicia el servei mysql.
  • mysql_db: Crea una base de dades anomenada example_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.

© Copyright 2024. Tots els drets reservats