Hello list, I'm trying to roll out some mysql configuration files. The playbook itself is not the problem. My problem are the handlers that are for every given host and not only for the changed hosts.
I've got three servers that got some roles. The roles will be determinated by some "local gathering fact" script. If only one configuration file was changed by the ansible rollout the playbook will call the handler on all 3 hosts. But first things first, here's the playbook: --- - hosts: - "*.c-1.home" - "*.c-2.home" tasks: - name: Gather our facts action: local_gathering - name: copy file to '/etc/mysql/conf.d/optimizer_switch.cnf' copy: src=roles/role-db/files/mysql-5.6/optimizer_switch.cnf dest=/etc/mysql/conf.d owner=root group=root mode=0644 when: mysql.version == '5.6' and roles.db == '1' notify: restart mysql # I've replaced the handler with some debugging output for testing purposes. handlers: - name: restart mysql debug: msg="restart mysql for {{ ansible_hostname}}" Here's the call: % ansible-playbook -i ansible.hosts mysql.yml And here's the output: PLAY [*.c-2.home;*.c-1.home] ************************** GATHERING FACTS *************************************************************** ok: [srv.c-1.home] ok: [db.c-2.home] ok: [app.c-2.home] TASK: [Gather our facts] ****************************************************** ok: [db.c-2.home] ok: [app.c-2.home] ok: [srv.c-1.home] TASK: [copy file to '/etc/mysql/conf.d/optimizer_switch.cnf'] ***************** skipping: [app.c-2.home] ok: [db.c-2.home] changed: [srv.c-1.home] NOTIFIED: [restart mysql] ***************************************************** ok: [app.c-2.home] => { "msg": "restart mysql for app" } ok: [db.c-2.home] => { "msg": "restart mysql for db" } ok: [srv.c-1.home] => { "msg": "restart mysql for srv" } PLAY RECAP ******************************************************************** app.c-2.home : ok=3 changed=0 unreachable=0 failed=0 db.c-2.home : ok=4 changed=0 unreachable=0 failed=0 srv.c-1.home : ok=4 changed=1 unreachable=0 failed=0 As you can see only on the "db" the configuration files were changed but the handler was called on all three servers. Why is that so? How can I change the playbook so the handler will be called only on the "changed" hosts. I'm using ansible 1.6.2 -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com. To post to this group, send email to ansible-project@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/16b0b36f-e787-416c-97ff-f422aca0e6de%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.