blocchi, sezioni rescue e always
This commit is contained in:
@@ -190,3 +190,64 @@ Per i loop di liste di hash, si utilizza la medesima parola chiave loop, ma la l
|
|||||||
- { name: 'userOne', uid: 1001, shell: '/bin/bash' }
|
- { name: 'userOne', uid: 1001, shell: '/bin/bash' }
|
||||||
- { name: 'userTwo', uid: 1002, shell: '/bin/zsh' }
|
- { name: 'userTwo', uid: 1002, shell: '/bin/zsh' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Blocks
|
||||||
|
|
||||||
|
I blocchi in Ansible vengono impiegati per due finalità principali:
|
||||||
|
|
||||||
|
- *raggruppare task* correlati tra loro, in modo da applicare direttive comuni a un insieme di operazioni
|
||||||
|
- *gestire gli errori* che possono verificarsi durante l’esecuzione dei task, consentendo di definire azioni specifiche in caso di fallimento o di successo
|
||||||
|
|
||||||
|
Tutte le direttive associate a un blocco vengono automaticamente ereditate da tutti i task contenuti al suo interno.
|
||||||
|
|
||||||
|
I blocchi offrono due sezioni dedicate alla gestione degli errori:
|
||||||
|
|
||||||
|
- `rescue`: contiene i task che vengono eseguiti immediatamente nel caso in cui almeno uno dei task all'interno del blocco generi un errore
|
||||||
|
- `always`: contiene i task che vengono eseguiti indipendentemente dall’esito dei task nel blocco, sia in caso di successo che di fallimento
|
||||||
|
|
||||||
|
Un esempio di **raggruppamento**:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
- name: block
|
||||||
|
hosts: db
|
||||||
|
tasks:
|
||||||
|
- block:
|
||||||
|
- name: list user
|
||||||
|
command: ls -l /usr/
|
||||||
|
- name: list root
|
||||||
|
command: ls -l /root/
|
||||||
|
- name: list bin
|
||||||
|
command: ls -l /bin/
|
||||||
|
- name: list home
|
||||||
|
command: ls -l ~/
|
||||||
|
become: yes
|
||||||
|
- name: list home
|
||||||
|
command: "ls -l ~/"
|
||||||
|
```
|
||||||
|
|
||||||
|
La direttiva `become: yes` è associata al blocco e viene applicata a tutti i task al suo interno, semplificando la gestione delle operazioni correlate.
|
||||||
|
|
||||||
|
Un esempio di **gestione di errori**:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
- name: Error handling example
|
||||||
|
hosts: db
|
||||||
|
tasks:
|
||||||
|
- block:
|
||||||
|
- name: Execute a command that fail
|
||||||
|
command: /bin/false
|
||||||
|
|
||||||
|
rescue:
|
||||||
|
- name: Handle the error
|
||||||
|
debug:
|
||||||
|
msg: "The command failed, executing an alternative action."
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: Always execute this command
|
||||||
|
debug:
|
||||||
|
msg: "This action is executed regardless of the block's result."
|
||||||
|
```
|
||||||
|
|
||||||
|
In questo caso, il task nella sezione `rescue` viene eseguito solo se il comando /bin/false fallisce, mentre il task nella sezione `always` viene eseguito in ogni circostanza.
|
||||||
|
|||||||
Reference in New Issue
Block a user