Подтвердить что ты не робот

Как заставить обработчик запускать перед выполнением задачи в 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 изменить перед выполнением "Изменить данные в приложении".

4b9b3361

Ответ 1

Если вы хотите заставить обработчик работать между двумя задачами, а не в конце воспроизведения, вам нужно поставить это между двумя задачами:

- meta: flush_handlers

Пример, взятый из документации :

tasks:
   - shell: some tasks go here
   - meta: flush_handlers
   - shell: some other tasks

Обратите внимание, что это приведет к запуску всех ожидающих обработчиков в этой точке, а не только этой конкретной.