task condizionali

This commit is contained in:
dado
2025-08-28 21:28:59 +02:00
parent 1da618760b
commit 2a1eb8f79c

View File

@@ -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 lesecuzione di un task in base allesito 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.