How to force handler to run before executing a task in Ansible?

AnsibleAnsible Handlers

Ansible Problem Overview


I have a playbook which should configure on specified IP, and than connect to this app to configure stuff inside.

I've got a problem: I need to restart app after I've changed anything in app config, and if I do not restart app, connection to it failed (no connection because app knows nothing about new config with new IP address I'm trying to access).

My current playbook:

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

I need to force the handler to run if configure_app changed before executing 'Change data in app'.

Ansible Solutions


Solution 1 - Ansible

If you want to force the handler to run in between the two tasks instead of at the end of the play, you need to put this between the two tasks:

- meta: flush_handlers

Example taken from the ansible documentation :

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

Note that this will cause all pending handlers to run at that point, not just that specific one.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGeorge ShuklinView Question on Stackoverflow
Solution 1 - AnsibleWoodhamView Answer on Stackoverflow