Files
learning/ansible/003-playbook.md
2025-08-27 21:08:12 +02:00

2.3 KiB
Raw Blame History

Playbook

Un playbook Ansible è un file testuale, scritto in formato YAML, che definisce una sequenza di operazioni (task) da eseguire su uno o più nodi.

Un playbook può contenere uno o più Play. Ogni Play è composto da una serie di task, che a loro volta possono richiamare uno o più moduli.

Struttura di un playbook

Di seguito è riportato un esempio di playbook:

---
- name: install and start httpd
  hosts: databases
  
  tasks:
    - name: install httpd
      apt:
        name: httpd
        state: latest
      become: true

    - name: start httpd
      service:
        name: httpd
        state: started
      become: true
  • name: specifica il nome del play, che descrive l'azione da eseguire
  • hosts: indica i nodi sui quali il play sarà eseguito
  • tasks: contiene un elenco di operazioni da eseguire

In questo esempio:

  • il playbook contiene un unico play
  • il play ha il compito di installare e avviare il servizio httpd su un gruppo di host denominato databases
  • sono definiti due task: il primo installa il pacchetto httpd tramite il modulo apt, mentre il secondo avvia il servizio httpd utilizzando il modulo service
  • lopzione become: true indica che i task devono essere eseguite con privilegi elevati, tipicamente utilizzando sudo

Un esempio di playbook con due play:

---
- name: install and start apache
  hosts: webservers
  
  tasks:
    - name: install apache
      apt:
        name: apache2
        state: latest
      become: true

    - name: start apache
      service:
        name: apache2
        state: started
      become: true

- name: install and start mysql
  hosts: databases
  
  tasks:
    - name: install mysql
      apt:
        name: mysql-server
        state: latest
      become: true

    - name: start mysql
      service:
        name: mysql
        state: started
      become: true

Esecuzione di un playbook

Per eseguire un playbook, è necessario utilizzare il comando ansible-playbook, specificando:

  • linventory file, se custom, con l'opzione -i
  • il percorso del playbook
  • eventuali opzioni aggiuntive, come -ask-vault-pass, che richiede la password per decifrare i file crittografati con ansible-vault
ansible-playbook -i inventory playbook/my-playbook.yml -K --ask-vault-pass