# Handlers: सिर्फ़ बदलाव पर कर्म — Ansible: Playbooks से Servers का Automation

Source: https://www.geekswithgeeks.com/hi/ansible/flow-handlers

> Configuration सचमुच बदली हो तभी services restart या reload करने के लिए notify और handlers उपयोग करें।

## ज़रूरत पर ही restart

**Handler** ऐसा task है जो तभी चलता है जब कोई दूसरा task उसे **notify** करे, और केवल तब जब वह task **changed** बताए। Handlers play के अंत में एक बार चलते हैं, चाहे कई बार notify हुए हों। Config बदलने के बाद service को हर run पर बेवजह restart किए बिना reload करने का यही मानक तरीक़ा है।

## Handler का असर

`site.yml` के पहले और दूसरे runs को याद करें। पहले run में template बदला, इसलिए `Reload app` हर host के लिए चला। दूसरे run में कुछ नहीं बदला, इसलिए handler बिल्कुल नहीं चला। असली handlers `debug` की जगह `ansible.builtin.service` या `systemd` बुलाते हैं।

```yaml
  tasks:
    - name: Deploy nginx config
      ansible.builtin.template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Reload nginx

  handlers:
    - name: Reload nginx
      ansible.builtin.service:
        name: nginx
        state: reloaded
```

## क्रम मायने रखे तो flush करें

बाद के task को पहले service reload चाहिए तो अंत तक रुकने की जगह उस बिंदु पर लंबित handlers चलाने के लिए `- meta: flush_handlers` जोड़ें।

**Quiz:** Handler कब चलता है?

- [ ] कभी नहीं
- [ ] हर run पर, हमेशा
- [ ] पहले task से पहले
- [x] जब changed बताने वाला task उसे notify करे

*Answer:* जब changed बताने वाला task उसे notify करे. Handlers सिर्फ़ बदलाव पर, play के अंत में एक बार चलते हैं।
