diff --git a/ansible/003-playbook.md b/ansible/003-playbook.md index f4d4d64..39ab2d9 100644 --- a/ansible/003-playbook.md +++ b/ansible/003-playbook.md @@ -140,3 +140,53 @@ Un esempio di `registered variables`: ``` 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. + +## Loops + +I loop in Ansible consentono di ripetere un task più volte all'interno di un playbook, evitando la necessità di riscrivere blocchi di codice che eseguono la stessa operazione. + +I tre tipi principali di loop sono: + +- `Liste` +- `Liste di hash` +- `Dizionari` + +### Liste + +Per i loop di liste, si utilizza la parola chiave `loop`, seguita da una lista di stringhe. Il task verrà eseguito tante volte quante sono le stringhe nella lista, e `{{ item }}`, nel task, assumerà il valore dell'elemento iesimo. + +```yaml +--- +- name: playbook with loop + hosts: db + become: true + + tasks: + - name: add users + user: + name: "{{item}}" + loop: + - userOne + - userTwo +``` + +### Liste di hash + +Per i loop di liste di hash, si utilizza la medesima parola chiave loop, ma la lista contiene elementi `chiavi: valore`. In questo caso, si può accedere ai valori usando la sintassi `{{ item.key }}`. + +```yaml +--- +- name: Playbook con loop su lista di hash + hosts: db + become: true + + tasks: + - name: add users + user: + name: "{{ item.name }}" + uid: "{{ item.uid }}" + shell: "{{ item.shell }}" + loop: + - { name: 'userOne', uid: 1001, shell: '/bin/bash' } + - { name: 'userTwo', uid: 1002, shell: '/bin/zsh' } +```