Ansible 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