# group\_by behaving badly?

**URL:** <https://forum.ansible.com/t/group-by-behaving-badly/19624>\
**Category:** Ansible Project\
**Created:** [October 27, 2015, 8:13am UTC](https://forum.ansible.com/t/group-by-behaving-badly/19624 "2015-10-27T08:13:55Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ttosttos](https://avatars.discourse-cdn.com/v4/letter/t/9e8a1a/32.png) [@ttosttos](https://forum.ansible.com/u/ttosttos)\
**Post date:** [October 27, 2015, 8:13am UTC](https://forum.ansible.com/t/group-by-behaving-badly/19624/1 "2015-10-27T08:13:55Z")

</div>

I’m getting unexpected results from group\_by when running two playbooks together. I have two groups with a host each. When I run playbook1 and playbook2 separately, playbook1 is run against host1 and playbook2 is run against host2 as expected. When I include playbook1 and playbook2 in a single playbook, both playbook1 _and_ playbook2 are run against host1. I’d appreciate any suggestions. Running ansible 1.9.4.

**hosts**  
`  
[group1]  
host1

[group2]  
host2  
`

**Playbook1**

`

- hosts: group1  
tasks:

- group\_by: key={{ ansible\_distribution\_release }}  
changed\_when: False

- hosts: precise:trusty

gather\_facts: False  
roles:

- myrole

`

**Playbook2**

`

- hosts: group2  
tasks:

- group\_by: key={{ ansible\_distribution\_release }}  
changed\_when: False

- hosts: precise:trusty

gather\_facts: False  
roles:

- myrole

`

---

<div class="post-metadata">

**Author:** ![ttosttos](https://avatars.discourse-cdn.com/v4/letter/t/9e8a1a/32.png) [@ttosttos](https://forum.ansible.com/u/ttosttos)\
**Post date:** [October 27, 2015, 4:37pm UTC](https://forum.ansible.com/t/group-by-behaving-badly/19624/2 "2015-10-27T16:37:59Z")

</div>

To clarify, the unexpected behavior takes place when running playbook3:

**Playbook3**

`

- include: playbook1.yml
- include: playbook2.yml

`

---

<div class="post-metadata">

**Author:** ![Brian\_Coca](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@Brian\_Coca](https://forum.ansible.com/u/Brian_Coca)\
**Post date:** [October 27, 2015, 5:13pm UTC](https://forum.ansible.com/t/group-by-behaving-badly/19624/3 "2015-10-27T17:13:26Z")

</div>

I would actually expect that the 2nd play in playbook2 runs for any  
hosts that are in the precise or trusty group, this would be normal  
behaviour as you called group\_by twice and in each case inserted a  
host into one of those groups. group\_by does not delete existing hosts  
from groups.

---

<div class="post-metadata">

**Author:** ![ttosttos](https://avatars.discourse-cdn.com/v4/letter/t/9e8a1a/32.png) [@ttosttos](https://forum.ansible.com/u/ttosttos)\
**Post date:** [October 27, 2015, 5:59pm UTC](https://forum.ansible.com/t/group-by-behaving-badly/19624/4 "2015-10-27T17:59:31Z")

</div>

In that case, when running playbook3, shouldn’t playbook2 be run for both host1 and host2? It’s only run for host1.  
Cheers.

SA

---

<div class="post-metadata">

**Author:** ![ttosttos](https://avatars.discourse-cdn.com/v4/letter/t/9e8a1a/32.png) [@ttosttos](https://forum.ansible.com/u/ttosttos)\
**Post date:** [October 28, 2015, 6:22pm UTC](https://forum.ansible.com/t/group-by-behaving-badly/19624/5 "2015-10-28T18:22:53Z")

</div>

I decided to rely on this workaround that makes groups unique:

`

- hosts: group1  
tasks:

- group\_by: key=-group1-{{ ansible\_distribution\_release }}  
changed\_when: False

- hosts: group1-precise:group1-trusty  
gather\_facts: False  
roles:

- myrole

`

`

- hosts: group2  
tasks:

- group\_by: key=-group2-{{ ansible\_distribution\_release }}  
changed\_when: False

- hosts: group2-precise:group2-trusty  
gather\_facts: False  
roles:

- myrole

`
