Ansible quando condizionale

Ansible quando condizionale
Ansible supporta valutazioni condizionali prima di eseguire un'attività specifica sugli host di destinazione. Se la condizione impostata è vera, Ansible andrà avanti ed eseguirà l'attività. Se la condizione non è vera (non soddisfatta), Ansible salterà l'attività specificata.

Per implementare le condizioni in Ansible, utilizziamo il Quando la parola chiave. La parola chiave prende espressioni booleane in base a un valore o una variabile da compiti o fatti precedenti raccolti dagli host remoti.

Questa guida ti insegnerà come implementare le condizioni nei playbook Ansible usando la parola chiave quando.

Ansible When Conditionals: Uso di base

La parola chiave quando prende una semplice sintassi:

Quando: (condizione booleana)

Assicurarsi di passare una condizione che valuti a vero o falso.

Per esempio:

Quando: Ansible_pkg_mgr == "Yum"
Quando: Ansible_User_Shell "=="/bin/bash "

Se si desidera combinare più condizioni, è possibile utilizzare operatori logici come e, o non.

Quando: (condizione1) e (condizione2)
Quando: (condizione1) o (condizione2)

Per capire come usare l'ansible quando la parola chiave, useremo esempi pratici.

Esempio 1

Il primo esempio creerà un utente se l'utente specificato non esiste sull'host remoto.

---
- Host: tutto
Gather_Facts: no
diventa vero
compiti:
- Nome: CheckIfDirectoryExist
statistica:
Path: /Home /Ubuntu
Registro: Dir
- Nome: CreateFileIfDirectoryExists
file:
Path:/home/ubuntu/file.TXT
Stato: tocco
Quando: Dir.statistica.esiste

L'esempio sopra inizia controllando se la directory home dell'utente Ubuntu è disponibile. Quindi utilizziamo la condizione quando creare un file di testo se la directory è disponibile.

Esempio 2

L'esempio successivo chiude tutti gli host remoti Ubuntu usando una condizione quando.

---
- Host: tutto
Gather_Facts: Sì
diventa vero
compiti:
- Nome: ShutdownubuntUservers
Comando: /sbin /shutdown-tnow
Quando: Ansible_Facts ['OS_Family'] == "Ubuntu"

Nell'esempio sopra, utilizziamo fatti raccolti per valutare se i server provengono dalla famiglia Ubuntu. Se vero, spegnere i server.

Esempio 3

Nell'esempio seguente, combiniamo due condizioni che usano un e operatore.

---
- Host: tutto
Gather_Facts: Sì
diventa vero
compiti:
- Nome: InstallaPacheServer
Ansible.costruito.pacchetto:
Nome: httpd
Stato: ultimo
Quando: (Ansible_Facts ['OS_Family'] == "Debian") e
(ansible_facts ['ansible_distribution_major_version'] == 10)

L'esempio sopra controlla se gli host sono host Debian e se la versione di distribuzione è uguale a Debian 10.

Esempio 4

Installiamo il server Web Apache nel playbook qui sotto se la famiglia host è un host Debian o Ubuntu.

Il playbook utilizza un logico o un operatore.

---
- Host: tutto
Gather_Facts: Sì
diventa vero
compiti:
- Nome: InstallaPacheServer
Ansible.costruito.pacchetto:
Nome: httpd
Stato: ultimo
Quando: (Ansible_Facts ['OS_Family'] == "Debian") o
(Ansible_Facts ['OS_Family'] == "Ubuntu")

Esempio 5

Considera il playbook qui sotto che aggiorna il server Nginx all'ultima versione utilizzando l'operatore NOT.

---
- Host: tutto
- Shell: /sbin /nginx-v2> & 1
Registro: versione
Gather_Facts: Sì
diventa vero

compiti:
- Nome: InstallaPacheServer
Ansible.costruito.pacchetto:
Nome: nginx
Stato: ultimo
Quando: ('"nginx/1.19.0 "Notinversion.stdout ')

Se l'output dal server Nginx non è la versione corrente, installare la versione corrente del pacchetto.

Conclusione

In questa guida, abbiamo discusso di come lavorare con i condizionali in Ansible usando la parola chiave quando.

Grazie per aver letto!