En aquest tema, aprendrem a escriure el nostre primer Playbook d'Ansible. Un Playbook és un fitxer YAML que conté una sèrie de tasques que Ansible ha d'executar en els nodes gestionats. Els Playbooks són el cor d'Ansible i permeten automatitzar tasques complexes de manera senzilla i repetible.

Objectius

  • Entendre l'estructura bàsica d'un Playbook.
  • Escriure un Playbook senzill per instal·lar i configurar un servei.
  • Executar el Playbook i verificar els resultats.

Estructura bàsica d'un Playbook

Un Playbook d'Ansible està escrit en format YAML i segueix una estructura específica. A continuació es mostra un exemple bàsic de Playbook:

---
- name: Instal·lar i configurar Apache
  hosts: webservers
  become: yes
  tasks:
    - name: Instal·lar el paquet Apache
      apt:
        name: apache2
        state: present

    - name: Iniciar el servei Apache
      service:
        name: apache2
        state: started
        enabled: yes

Explicació del Playbook

  1. ---: Indica l'inici d'un document YAML.
  2. - name: Instal·lar i configurar Apache: Defineix el nom del play. Un play és una sèrie de tasques que s'executen en un grup de hosts.
  3. hosts: webservers: Especifica el grup de hosts en els quals s'executarà el play. Aquest grup ha d'estar definit en el fitxer d'inventari.
  4. become: yes: Indica que les tasques s'executaran amb privilegis d'administrador (sudo).
  5. tasks: Defineix la llista de tasques que s'executaran en els hosts especificats.
  6. - name: Instal·lar el paquet Apache: Defineix el nom de la tasca.
  7. apt: Utilitza el mòdul apt per gestionar paquets en sistemes basats en Debian.
  8. name: apache2: Especifica el nom del paquet a instal·lar.
  9. state: present: Indica que el paquet ha d'estar instal·lat.
  10. - name: Iniciar el servei Apache: Defineix una altra tasca per iniciar el servei Apache.
  11. service: Utilitza el mòdul service per gestionar serveis.
  12. name: apache2: Especifica el nom del servei.
  13. state: started: Indica que el servei ha d'estar en execució.
  14. enabled: yes: Indica que el servei ha d'estar habilitat per iniciar-se automàticament en arrencar el sistema.

Executant el Playbook

Per executar el Playbook, utilitzarem la comanda ansible-playbook. Assegura't que tens un fitxer d'inventari que defineixi el grup de hosts webservers.

Exemple de fitxer d'inventari (hosts):

[webservers]
192.168.1.10
192.168.1.11

Comanda per executar el Playbook:

ansible-playbook -i hosts playbook.yml

On hosts és el fitxer d'inventari i playbook.yml és el fitxer del Playbook.

Exercici Pràctic

Objectiu

Escriure un Playbook que instal·li Nginx en un grup de hosts anomenat webservers i asseguri que el servei estigui en execució.

Passos

  1. Crea un fitxer anomenat nginx-playbook.yml.
  2. Escriu el següent contingut en el fitxer:
---
- name: Instal·lar i configurar Nginx
  hosts: webservers
  become: yes
  tasks:
    - name: Instal·lar el paquet Nginx
      apt:
        name: nginx
        state: present

    - name: Iniciar el servei Nginx
      service:
        name: nginx
        state: started
        enabled: yes
  1. Crea un fitxer d'inventari anomenat hosts amb el següent contingut:
[webservers]
192.168.1.10
192.168.1.11
  1. Executa el Playbook amb la comanda:
ansible-playbook -i hosts nginx-playbook.yml

Solució

El Playbook nginx-playbook.yml hauria de tenir aquest aspecte:

---
- name: Instal·lar i configurar Nginx
  hosts: webservers
  become: yes
  tasks:
    - name: Instal·lar el paquet Nginx
      apt:
        name: nginx
        state: present

    - name: Iniciar el servei Nginx
      service:
        name: nginx
        state: started
        enabled: yes

Resum

En aquest tema, hem après a escriure un Playbook bàsic d'Ansible per instal·lar i configurar un servei. Hem vist l'estructura d'un Playbook, com definir tasques i com executar el Playbook en un grup de hosts. Aquest és el primer pas per automatitzar tasques amb Ansible, i en els següents temes, explorarem funcionalitats més avançades per fer els nostres Playbooks més potents i flexibles.

© Copyright 2024. Tots els drets reservats