Sobes.tech
Junior

Cosa sono gli handler?

sobes.tech AI

Risposta dell'AI

Gli handler (gestori) nel contesto di DevOps, in particolare in strumenti come Ansible, sono compiti o blocchi di codice che vengono eseguiti solo sotto determinate condizioni — quando vengono esplicitamente "notificati" da un altro compito. Sono usati per riavviare servizi, riavviare server o eseguire altre azioni che devono avvenire solo dopo modifiche significative alla configurazione.

Caratteristiche principali:

  • Eseguiti su notifica: Il gestore si avvia solo dopo che una o più attività lo hanno esplicitamente "notificato" (ad esempio, usando notify in Ansible).
  • Esecuzione unica: Anche se più attività notificano lo stesso gestore, questo verrà eseguito solo una volta alla fine del playbook o della sezione include_tasks/import_tasks in cui è definito. Questo previene riavvii multipli dei servizi.
  • Approccio dichiarativo: Permettono di definire in modo dichiarativo quali azioni devono essere intraprese al cambiamento dello stato del sistema, senza preoccuparsi di eseguirle manualmente.

Esempio di notifica di un gestore in un task Ansible:

- name: Configurare il server web  # Task che può modificare la configurazione
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify:  # Notifichiamo il gestore
    - restart nginx

Definizione del gestore:

handlers:
  - name: restart nginx  # Nome del gestore, corrisponde al nome in notify
    service:
      name: nginx
      state: restarted