पाठ 14 / 26
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 बुलाते हैं।
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 जोड़ें।
त्वरित जाँच: Handler कब चलता है?
- कभी नहीं
- हर run पर, हमेशा
- पहले task से पहले
- जब changed बताने वाला task उसे notify करे
Answer
जब changed बताने वाला task उसे notify करे — Handlers सिर्फ़ बदलाव पर, play के अंत में एक बार चलते हैं।