Hi,
If anyone wants Stack Exchange brownie points, I have asked this question on Server fault here:
http://serverfault.com/questions/666457/ansible-a-host-appears-in-more-than-one-group-and-both-groups-have-the-same-ta
I have a playbook that looks something like this:
---
- hosts: group1
roles:
- role1
- role2
- hosts: group2
roles:
- role2
- role3
Now say I have a hosts file that has an entry like this:
[group1]
host1.example.com
[group2]
host1.example.com
Ansible will run the tasks in role2 TWICE for host1.example.com because it appears in 2 groups, and each have role2 assigned to them.
How can I make Ansible realise it has the same role included twice, and thus it should only run it once?
Thanks
Brian_Coca
(Brian Coca)
February 10, 2015, 2:04pm
2
the problem is that you are telling ansible to run the role x2 on that
host, imagine you do this:
- hosts: group1
roles:
- role1
- role2
- hosts: group1
roles:
- role2
- role3
ansible would run the role2 on all hosts in group1 twice, it is just
doing what you ask.
if role2 is idempotent this should not really matter much
Brian_Coca
(Brian Coca)
February 10, 2015, 2:05pm
3
there are several ways to get around the issue if you really want, this is one:
This is by design.
The only way to go would be to apply role2 only in one playbook to one specific group, and not use role2 in any other playbook on a group that might have common members, like here.
Thanks everyone, I went with making my roles more granular and making sure each host appeared in only one play.
Thanks