Introduzione
Ansible è uno strumento Infrastructure as Code che consente di gestire e monitorare numerosi server remoti utilizzando un unico nodo di controllo.
Con Ansible, puoi gestire i server remoti utilizzando i playbook. Questi playbook trasmettono istruzioni a server remoti e consentono loro di eseguire attività predefinite.
In questo tutorial, esamineremo cosa sono i playbook Ansible, come funzionano e come puoi crearli ed eseguirli.
Prerequisiti
- Un sistema Linux (stiamo usando Ubuntu 20.04)
- Accesso alla riga di comando/finestra del terminale
- Ansible installato e configurato
Cos'è un Playbook Ansible?
Un playbook Ansible è un elenco di istruzioni per i lavori che vengono eseguiti automaticamente da computer remoti in una rete Ansible.
Un playbook Ansible è composto da giochi. Le riproduzioni sono un insieme orchestrato di attività che vengono completate una volta eseguito un playbook. Puoi aggiungere più riproduzioni a un playbook.
Le riproduzioni utilizzano i moduli per definire quali modifiche devono essere apportate per completare un'attività. Ogni modulo fornisce una struttura per una determinata categoria di lavori e può essere personalizzato utilizzando argomenti e variabili .
I playbook Ansible vengono salvati come file .yaml, il che li rende flessibili e facili da usare.
I playbook vengono utilizzati principalmente per:
- Dichiarazione delle configurazioni.
- Automatizzazione di alcune attività ripetibili che richiederebbero troppo tempo per essere eseguite manualmente.
- Avvio di attività in modo sincrono o asincrono.
Variabili Ansible Playbook
I playbook Ansible utilizzano variabili per fornire flessibilità e facilità d'uso. Le variabili possono essere integrate (come le informazioni di sistema) o definito dall'utente .
In un playbook Ansible, le variabili vengono definite utilizzando vars
parola chiave:
Nell'esempio sopra, definiamo il greeting
variabile con il valore assegnato di Hello World!
.
Per accedere al valore, inserisci il nome della variabile greeting
tra doppie parentesi graffe:
Una volta eseguito, il playbook stampa il messaggio Hello World!
Oltre alle variabili con un singolo valore, esistono molti altri tipi di variabili Ansible. Utilizzo di variabili con array , assegna più valori a una variabile con la seguente sintassi:
vars:
array_name:
- value1
- value2
…
- valueN
Accedi a un valore specifico utilizzando {{ array_name[value number] }}
, ad esempio:
Variabili con dizionari combina più matrici di valori in un'unica variabile:
vars:
array_name:
dictionary_name1:
item1: value1
item2: value2
dictionary_name2:
item1: value1
item2: value2
Infine, variabili speciali sono predefiniti da Ansible e non possono essere impostati dagli utenti. Utilizzare il comando seguente per ottenere un elenco di variabili speciali:
ansible -m setup hostname
Come scrivere un playbook Ansible?
Crea un playbook Ansible utilizzando qualsiasi editor di testo disponibile sul tuo sistema. Ad esempio, crea un playbook con Nano:
sudo nano /path/to/playbook/directory/playbook_name.yaml
I playbook Ansible seguono le regole di base della sintassi YAML.
Un playbook inizia con tre n-trattini (---
), seguito dal nome del playbook, dal nome del gruppo di host remoti che esegue il playbook e da parametri aggiuntivi come become
(esegui il playbook come amministratore).
La sezione successiva contiene tutte le variabili definite dall'utente. Inizia con vars
tag nello stesso livello di indentazione della sezione precedente, seguito da un elenco di variabili nell'indentazione successiva.
Infine, l'elenco delle attività inizia con le tasks
tag, con il livello di indentazione a seconda del tipo di attività e dei parametri utilizzati.
La sintassi YAML consente di utilizzare tre punti (…
) per terminare il playbook. Sebbene la maggior parte dei playbook finisca in questo modo, non è necessario che il playbook funzioni correttamente.
Sintassi Ansible Playbook
Alcuni elementi importanti della sintassi YAML da tenere a mente quando si scrivono playbook Ansible:
- Quando componi gli elenchi, utilizza uno spazio tra i trattini (
-
) e la voce dell'elenco. - Quando si utilizza la
key: value
modulo, i due punti devono essere seguiti da uno spazio. - I valori booleani possono utilizzare entrambi
yes
eno
, oltre atrue
efalse
. - Utilizza lo spazio seguito da
#
per indicare un commento.
Esempio di playbook Ansible
Per questo esempio, creeremo un playbook nella cartella di installazione di Ansible:
sudo nano /etc/ansible/example_playbook.yaml
Questo playbook contiene i seguenti elementi:
---
:segnala l'inizio del playbook.name
:definisce il nome per il playbook Ansible.hosts
:definisce quali host eseguono il playbook. Nell'esempio sopra, il playbook viene eseguito su tutti gli host inclusi nel file di inventario.become
:indica all'host remoto di eseguire il playbook come amministratore. L'utilizzo di questo tag richiede l'inserimento della password di amministratore per l'host remoto durante l'esecuzione del playbook.vars
:Definisce le variabili – nel nostro caso, una variabile denominatagreeting
con il valoreHello World!
.tasks
:l'elenco delle attività che il playbook deve eseguire. Nell'esempio sopra, la prima attività crea una directory chiamata example_playbook sull'host remoto. La seconda attività crea un nuovo file di testo in quella directory e inserisce il valore delgreeting
variabile come contenuto.…
:segnala la fine del playbook.
Come viene eseguito un Playbook?
I playbook Ansible vengono eseguiti in ordine, dall'alto verso il basso. Questo vale sia per le singole rappresentazioni che per le attività elencate in quelle rappresentazioni.
Nell'esempio sopra, il playbook esegue le seguenti azioni, nell'ordine:
- Definisce un elenco di variabili.
- Crea una nuova cartella sull'host remoto.
- Crea un file di testo nella nuova cartella.
- Aggiunge il valore della variabile come contenuto del file.
Come eseguire un Playbook Ansible
Per eseguire un playbook Ansible, usa:
ansible-playbook /path/to/playbook/directory/playbook_name.yaml
Ai fini di questo articolo, utilizzeremo example_playbook.yaml
con il -K
argomento, che ci consente di inserire la password dell'utente root per l'host remoto ed eseguire il playbook come amministratore:
ansible-playbook /etc/ansible/example_playbook.yaml -K
Come verificare i Playbook
Esegui un playbook in modalità di verifica utilizzando il --check
flag per verificarlo. Ciò ti consente di vedere le modifiche che apporterebbe il tuo playbook, senza effettivamente apportarle:
ansible-playbook /path/to/playbook/directory/playbook_name.yaml --check
Per una panoramica più dettagliata delle potenziali modifiche, utilizza la combinazione di --check
e --diff
bandiere:
ansible-playbook /path/to/playbook/directory/playbook_name.yaml --check --diff
Suggerimenti utili per Ansible Playbook
Esistono diversi modi per semplificare la lettura e l'utilizzo dei playbook Ansible:
Assegna sempre un nome alle riproduzioni e alle attività
Usa il name
parola chiave per definire i nomi per i giochi e le attività. L'aggiunta di nomi brevi e semplici rende molto più facile sapere a colpo d'occhio cosa fa ogni gioco o attività.
Usa i commenti
Assicurati di aggiungere molti commenti, soprattutto quando definisci variabili e attività.
I commenti dettagliati aiutano a rendere il playbook ancora più chiaro e facile da capire. Aiutano anche chiunque altro utilizzi i tuoi playbook.
Formatta il Playbook per facilità d'uso
Anche se devi seguire le regole di indentazione affinché il playbook funzioni, puoi comunque utilizzare gli spazi bianchi (come le righe vuote tra le attività) per semplificare la lettura di un playbook.