I Playbook in Ansible sono ciò che rende Ansible così utile. I playbook consentono di eseguire attività di routine con diversi moduli. Quando dovremmo usare i playbook?
Diamo un'occhiata a un'attività di manutenzione ordinaria: l'aggiornamento dei server. Non avremmo dovuto usare un playbook per questo, dato che si tratta di un solo comando: apt-get update
. Potremmo usare un solo comando per aggiornare il software su tutti i nostri server. Tuttavia, per distribuire qualcosa come un web o un server di database, è necessario più lavoro: non solo un singolo comando. I playbook sono perfetti per questo caso. Consentono di utilizzare più moduli, che sono comandi che possono essere eseguiti su un server. Ad esempio, ci sono moduli per copiare file ed eseguire comandi shell su SSH.
Quindi, come possiamo usare i playbook? Iniziamo!
Passaggio 1: creazione di un file YAML ( .yml
)
I playbook sensibili sono scritti come .yml
file; Ansible non può interpretare altri formati. Un playbook Ansible di esempio è simile al seguente:
---
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
(Tratto dalla documentazione di Ansible)
Passaggio 2: comprensione dei libri di testo: attività e gestori
Come puoi vedere, ci sono più sezioni in questo playbook. Prima di tutto, vedrai la hosts:
linea. Questo determina su quali host deve essere eseguito il playbook. Puoi anche vedere che abbiamo definito un paio di variabili a cui è possibile accedere e utilizzare in tutto il playbook. Vedrai quindi una serie di attività. Queste attività potrebbero essere chiamate ad esempio "Installa Apache". La seconda attività nell'esempio scrive nella configurazione di Apache. Vedrai quindi quanto segue:
notify:
- restart apache
Questo dice a un'attività di eseguire un certo gestore. In questo caso, si riferisce al gestore restart apache
, che si trova nella parte inferiore del playbook:
handlers:
- name: restart apache
service: name=httpd state=restarted
I gestori sono utili perché, prendendo l'esempio, potresti voler riavviare Apache più volte. In questo caso, non è necessario ripetere la creazione di un'attività per ogni singola volta in cui è necessario riavviare Apache, ma è possibile fare semplicemente riferimento allo stesso gestore ogni volta.
Passaggio 3: esecuzione dei playbook
Supponi di voler distribuire un server Apache. Bene, come puoi vedere, abbiamo appena creato un playbook per questo. L'esecuzione di playbook può essere eseguita utilizzando il ansible-playbook
comando. Ad esempio, se dovessimo eseguire questo playbook su tutti i server della webservers
categoria (dovrai avere questa categoria nel tuo /etc/ansible/hosts
file), avresti eseguito il seguente comando dato che il nome del tuo file playbook è apache.yml
:
ansible-playbook -i webservers apache.yml
Congratulazioni! Ora hai eseguito un playbook su tutti i server della tua webservers
categoria. Ora dovrai solo attendere il completamento della distribuzione e vedrai che Apache è stato installato e configurato correttamente su questi server.