playbook e loro struttura
This commit is contained in:
88
ansible/003-playbook.md
Normal file
88
ansible/003-playbook.md
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
# 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*
|
||||||
|
- l’opzione `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:
|
||||||
|
|
||||||
|
- l’inventory 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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user