Как заставить обработчик запускать перед выполнением задачи в Ansible?
У меня есть playbook, который должен настраиваться на указанном IP-адресе, а не подключаться к этому приложению, чтобы настроить содержимое внутри.
У меня проблема: мне нужно перезапустить приложение после того, как я изменил что-либо в конфигурации приложения, и если я не перезапущу приложение, соединение с ним не удалось (нет соединения, потому что приложение ничего не знает о новой конфигурации с новым IP-адресом адрес, к которому я пытаюсь обратиться).
Моя текущая пьеса:
tasks:
- name: Configure app
template: src=app.conf.j2 dest=/etc/app.conf
notify: restart app
- name: Change data in app
configure_app: host={{new_ip}} data={{data}}
handlers:
- name: restart app
service: name=app state=restarted
Мне нужно заставить обработчик запускаться, если configure_app
изменить перед выполнением "Изменить данные в приложении".
Ответы
Ответ 1
Если вы хотите заставить обработчик работать между двумя задачами, а не в конце воспроизведения, вам нужно поставить это между двумя задачами:
- meta: flush_handlers
Пример, взятый из документации :
tasks:
- shell: some tasks go here
- meta: flush_handlers
- shell: some other tasks
Обратите внимание, что это приведет к запуску всех ожидающих обработчиков в этой точке, а не только этой конкретной.