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: '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