Как заставить обработчик запускаться перед выполнением задачи в 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
Обратите внимание, что это приведет к тому, что все ожидающие обработчики будут запущены в этот момент, а не только этот конкретный.