इस समस्या का उचित समाधान है, जैसा कि अंसिबल 2.2 है।
हैंडलर जेनेरिक विषयों को "सुन" भी सकते हैं, और कार्य उन विषयों को इस प्रकार सूचित कर सकते हैं:
handlers:
- name: restart memcached
service: name=memcached state=restarted
listen: "restart web services"
- name: restart apache
service: name=apache state=restarted
listen: "restart web services"
tasks:
- name: restart everything
command: echo "this task will restart the web services"
notify: "restart web services"
यह उपयोग कई हैंडलर को ट्रिगर करना बहुत आसान बनाता है। यह हैंडलर को उनके नाम से भी हटाता है, जिससे प्लेबुक और भूमिकाओं के बीच हैंडलर साझा करना आसान हो जाता है
प्रश्न के लिए विशेष रूप से, यह काम करना चाहिए:
- name: Check if restarted
shell: check_is_started.sh
register: result
listen: Restart processes
- name: Restart conditionally step 2
service: name=service state=restarted
when: result
listen: Restart processes
और कार्य में, 'रिस्टार्ट प्रोसेस' के माध्यम से हैंडलर को सूचित करें।
http://docs.ansible.com/ansible/playbooks_intro.html#handlers-running-operations-on-change