Question:
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:
1 2 3 4 5 6 7 8 9 10 11 12 |
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’.
Answer:
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 :
1 2 3 4 5 |
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.