Playbook non è altro che di Ansible script di gestione della configurazione e può essere utilizzato per gestire le distribuzioni e le configurazioni dei nodi gestiti. Il Playbook contiene una serie di criteri che desideri vengano applicati dai nodi gestiti o una serie di passaggi in un processo IT generale.
I playbook sono scritti e sviluppati in un semplice linguaggio testuale. La sintassi che utilizziamo nei playbook è diversa dai normali comandi che abbiamo utilizzato per testare nel tutorial precedente.
Nel tutorial precedente, abbiamo visto come installare Ansible su CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 e Debian 9 .
Crea Ansible Playbook
Per questa demo, creeremo un playbook chiamato web.yml per configurare un host per eseguire un server Web Apache . Ogni playbook è composto da uno o più play in un elenco.
Per ogni gioco nel playbook, puoi scegliere quali macchine nella tua infrastruttura scegliere come target e quale utente remoto per completare le attività.
vi web.yml
CentOS / RHEL Playbook:
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su tasks: - name: Install Apache yum: pkg=httpd state=latest - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=apache group=apache mode=0644 - name: Enable Apache on System Boot service: name=httpd enabled=yes notify: - start apache - setup firewalld - reload firewalld handlers: - name: start apache service: name=httpd state=started - name: setup firewalld firewalld: service: http permanent: true state: enabled - name: reload firewalld service: name=firewalld state=restarted
Playbook Ubuntu/Debian:
--- - hosts: 192.168.1.30 remote_user: raj become: yes become_method: sudo tasks: - name: Install Apache apt: name: apache2 update_cache: yes - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=www-data group=www-data mode=0644
Crea un file HTML demo (/etc/ansible/index.html ). Questo file HTML verrà inserito nella DocumentRoot predefinita di server Apache sul nodo gestito.
vi /etc/ansible/index.html
HTML:
<html> <head> <title>Apache is installed by Ansible</title> </head> <body> <h1>Apache is installed by Ansible</h1> <p>Now, Apache is managed through Ansible</p> </body> </html>
Ripartire Ansible Playbook
Ora esamineremo ogni sezione del playbook web.yml file per capire cosa significa.
Il file inizia con
---
Tutti i file YAML dovrebbero iniziare con (tre trattini) ---
e questo indica l'inizio di un documento. YAML è molto sensibile allo spazio e lo usa per raggruppare insieme diverse informazioni. Gli spazi devono essere coerenti nel file per essere letti correttamente. Gli elementi allo stesso livello di indentazione sono considerati elementi di pari livello.
Host e utenti
--- - hosts: 192.168.1.20 remote_user: raj
La riga hosts è un elenco di uno o più gruppi (es. server demo) o pattern host (es. 192.168.1.20), separati da due punti. Insieme all'host, puoi menzionare l'account utente remoto.
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su
Devi diventare un utente root per installare qualsiasi pacchetto su un sistema. Per farlo, puoi utilizzare metodi di escalation dei privilegi, come su o sudo . Ogni volta che utilizzi questo tipo di metodi di escalation dei privilegi, devi eseguire un playbook ansible con --ask-become-pass
argomento.
Compiti
Ora abbiamo una serie di attività.
tasks: - name: Install Apache yum: pkg=httpd state=latest - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=apache group=apache mode=0644 - name: Enable Apache on System Boot service: name=httpd enabled=yes
Ogni riproduzione contiene un elenco di attività, che vengono eseguite in ordine, una alla volta, contro tutte le macchine corrispondenti al modello host, prima di passare all'attività successiva.
Quando esegui il playbook, viene eseguito dall'alto verso il basso e gli host con attività non riuscite vengono eliminati dalla rotazione per l'intero playbook.
Ogni attività dovrebbe avere un nome e viene utilizzato per visualizzare l'attività corrente durante l'esecuzione del playbook. Questo output è per gli esseri umani, quindi è bello avere descrizioni ragionevolmente buone di ogni fase dell'attività.
Qui installerà l'ultima versione di Apache e copierà l'HTML demo (/etc/ansible/index.html) nella directory /var/www/html del nodo gestito e quindi consentirà l'avvio automatico del servizio Apache durante l'avvio del sistema.
Avvisa
Questi notifica le azioni vengono attivate alla fine di ogni blocco di attività in un playbook e verranno attivate solo una volta anche se notificate da più attività diverse.
notify: - start apache - setup firewalld - reload firewalld
La notifica item contiene un elemento chiamato start apache , imposta firewalld e ricarica firewalld . Questi sono i riferimenti ai gestori che svolgono funzioni specifiche quando viene chiamato dall'interno di un'attività. Definiremo il gestore di apache di avvio e firewalld.
Gestore
I gestori sono elenchi di attività, non molto diversi dalle normali attività. Tuttavia, vengono eseguiti solo quando un'attività gli ha detto che sono state apportate modifiche al sistema client.
handlers: - name: start apache service: name=httpd state=started - name: setup firewalld firewalld: service: http permanent: true state: enabled - name: reload firewalld service: name=firewalld state=restarted
Nel nostro caso, abbiamo un gestore che avvia il servizio Apache e configura il firewall dopo l'installazione del pacchetto.
Questa azione si verifica perché il notificatore ha notificato al gestore le modifiche al sistema, il che significa che il pacchetto Apache doveva essere installato e insieme a quel file demo doveva essere copiato in DocumentRoot.
Esegui Ansible Playbook
Una volta che hai un playbook pronto, puoi eseguirlo usando il comando seguente.
ansible-playbook web.yml -f 1 --ask-become-pass OR ansible-playbook web.yml -f 1 --ask-become-pass -u raj --ask-pass
playbook ansible :comando per eseguire i playbook Ansible.
web.yml: File YAML (file Ansible Playbook – che abbiamo creato all'inizio di questo tutorial)
-f 1 :playbook utilizzando un livello di parallelismo di 1
–chiedi-diventa-pass :Dal momento che dobbiamo diventare utenti root per installare i pacchetti.
-u raj :Utente sul nodo gestito
Risultato:
Si supponga di aver creato un playbook per un gruppo (es. server demo) di server e di voler eseguire un playbook su un host specifico. Il comando seguente esegue il playbook solo su 192.168.1.40 .
ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass
Verifica le azioni di Ansible Playbook
Dopo aver eseguito un playbook, apri il browser e vai all'host remoto menzionato nell'inventario ansible.
Nel mio caso, l'URL sarà
http://192.168.1.20Ora dovresti andare sopra la pagina Apache è installato da Ansible e questa pagina ci conferma che Apache è stato installato da Ansible.
Hai imparato come creare un semplice playbook per l'automazione dell'installazione di apache. Puoi trovare ulteriori informazioni sulla creazione di playbook qui .
Questo è tutto.