Как заставить обработчик запускаться перед выполнением задачи в Ansible?

У меня есть Playbook, который должен настроить на указанный IP, а затем подключиться к этому приложению, чтобы настроить вещи внутри.

У меня проблема: мне нужно перезапустить приложение после того, как я что-то изменил в конфигурации приложения, и если я не перезапущу приложение, соединение с ним не будет установлено (нет соединения, потому что приложение ничего не знает о новой конфигурации с новым IP-адресом I '). Я пытаюсь получить доступ).

Моя текущая пьеса

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

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

Другие вопросы по тегам