Существует правильное решение этой проблемы по сравнению с 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"
Это использование делает его гораздо проще, чтобы вызвать несколько обработчиков. Он также разъединяет обработчик из их имен, что делает его легче разделить обработчик среди playbooks и ролей
В частности на вопрос, это должно работать:
- 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
и задачи, извещать обработчик с помощью «Restart процессов»
http://docs.ansible.com/ansible/playbooks_intro.html#handlers-running-operations-on-change
Действительно, похоже, что в Ansible 2.2 это недоступно. ('ERROR! 'Notfiy' не является допустимым атрибутом для Handler') –
@ leo-the-manic У вас появляется опечатка:' notfiy' вместо 'notify' – timdiels
Derp, спасибо. Работа на поздней ночной инфраструктуре - не самая лучшая идея. –