हैंडलर कार्यों की सूची है, वास्तव में नियमित कार्यों से अलग नहीं है, जो कि विश्व स्तर पर अद्वितीय नाम से संदर्भित हैं, और नोटिफ़ायर द्वारा अधिसूचित हैं। यदि कोई भी हैंडलर को सूचित नहीं करता है, तो यह नहीं चलेगा। एक हैंडलर को कितने कार्यों की सूचना देने के बावजूद, यह केवल एक बार ही चलेगा, सभी कार्यों को एक विशेष नाटक में पूरा करने के बाद। ansible डॉक्टर
1) वही काम करने वाले हैंडलर का नाम वही होना चाहिए।
restart nginxहमेशा nginx को पुनरारंभ करता है, नहीं handler1औरhandler2
2) हैंडलर पूरे "प्ले" के अंत में चलाए जाते हैं जो आपके अनुभागों के लिए एक नाटक है।
3) मैं उन कार्यों के लिए registerऔर whenकार्यों का उपयोग करूंगा जिन्हें फिर से शुरू किया जाना चाहिए, ध्यान दें कि यह संस्करण आपके साथ होना चाहिए।
कोड स्रोत
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "Play 1"
}
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role2 : Run if change in task c of role 1] *******************************
changed: [localhost]
TASK [role2 : Always true in role2] ********************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "This is a task in a play"
}
RUNNING HANDLER [role1 : handler] **********************************************
ok: [localhost] => {
"msg": "This is a handler in role1"
}
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "Play 2"
}
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role2 : Run if change in task c of role 1] *******************************
changed: [localhost]
TASK [role2 : Always true in role2] ********************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "This is a task in a play"
}
RUNNING HANDLER [role1 : handler] **********************************************
ok: [localhost] => {
"msg": "This is a handler in role1"
}
PLAY RECAP *********************************************************************
localhost : ok=20 changed=14 unreachable=0 failed=0
समान कार्य करने के बहुत सारे तरीके। हैंडलर को कई बार एक ही प्रक्रिया को फिर से शुरू करने से रोकने के लिए डिज़ाइन किया गया था, जैसे कि एक nginx सर्वर में कई बदलाव, जिसमें वेबसाइट, ssl certs, और अन्य कार्य हैं जिन्हें सेवा पुनरारंभ की आवश्यकता है।