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

89 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:
```yaml
---
- 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:
```yaml
---
- 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`
```bash
ansible-playbook -i inventory playbook/my-playbook.yml -K --ask-vault-pass
```