diff --git a/ansible/003-playbook.md b/ansible/003-playbook.md index 0a4bdd4..de11fa6 100644 --- a/ansible/003-playbook.md +++ b/ansible/003-playbook.md @@ -251,3 +251,32 @@ Un esempio di **gestione di errori**: ``` 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. + +## Handlers + +Gli `handler` in Ansible consentono l'esecuzione condizionale di specifiche operazioni, attivate solo quando un task determina modifiche su un nodo target. + +```yaml +--- +- name: playbook with handlers + hosts: db + become: true + + tasks: + - name: install httpd + yum: + name: httpd + state: present + notify: + - Start httpd + + handlers: + - name: Start httpd + service: + name: httpd + state: started +``` + +La parola chiave `notify` serve a richiamare l’handler specificato. Durante la prima esecuzione, una volta installato il software httpd, l’handler verrà attivato e avvierà il servizio. Nelle esecuzioni successive, qualora il pacchetto sia già presente e non subisca modifiche, il task non verrà eseguito e, di conseguenza, neppure l’handler associato verrà richiamato. + +Per impostazione predefinita, gli handlers vengono eseguiti solo dopo che tutti i task del playbook sono stati completati. Questo significa che, anche se più task notificano lo stesso handler, quest’ultimo verrà eseguito una sola volta.