diff --git a/ansible/003-playbook.md b/ansible/003-playbook.md index affbd72..f4d4d64 100644 --- a/ansible/003-playbook.md +++ b/ansible/003-playbook.md @@ -86,3 +86,57 @@ Per eseguire un playbook, è necessario utilizzare il comando `ansible-playbook` ```bash ansible-playbook -i inventory playbook/my-playbook.yml -K --ask-vault-pass ``` + +## Conditionals + +Le istruzioni condizionali consentono di modificare il comportamento di un playbook in base a specifiche condizioni. + +L'istruzione condizionale più semplice si applica a un singolo task, utilizzando la parola chiave `when`. In questo caso, il task verrà eseguito solo sui nodi in cui la condizione specificata è soddisfatta. + +### Tipologie di condizioni + +Le condizioni possono basarsi su diversi tipi di dati: + +- `ansible_facts`: attributi specifici di ogni host, messi a disposizione da Ansible. Questi fanno riferimento a caratteristiche del nodo, come il tipo sistema operativo, le caratteristiche hardware e altre proprietà rilevanti. Sono utili per adattare il comportamento del playbook in base alle caratteristiche del nodo target +- `registered variables`: variabili che contengono il risultato di task precedenti. È possibile condizionare in questo modo l’esecuzione di un task in base all’esito di un task già eseguito +- `variabili` definite nel playbook o nell'inventory + +Un semplice esempio di condizione `when`: + +```yaml +--- +- name: playbooks with conditions + hosts: db + become: true + + tasks: + - name: install postgres + yum: + name: postgresql + state: latest + when: ansible_distribution == 'Ubuntu' +``` + +Un esempio di `registered variables`: + +```yaml +--- +- name: Install and Start HTTPD Service + hosts: webservers + become: true + + tasks: + - name: Install the httpd package + yum: + name: httpd + state: present + register: httpd_installation + + - name: Start the httpd service + service: + name: httpd + state: started + when: httpd_installation.changed == true +``` + +Questo task utilizza il modulo yum per installare il pacchetto httpd. Durante l'esecuzione, il risultato dell'installazione viene registrato nella variabile `httpd_installation`. Avvia infine il servizio httpd, ma solo se l'installazione del pacchetto è stata completata con successo.