Hi there,
So my task is quite simple, run a play against a group of hosts. Then , in
the next play report which hosts completed the task successfully and which
don't. I am using the group_by keyword for that, but without much success.
In more detail ,
I am running a deploy playbook against a large group of hosts ( called bid
) in one play where I also group each host by a boolean variable.
In the next play (same playbook) I am trying to write to screen all hosts
from each group.
This is how it is laid out:
play1:
- name: group by already_failed
group_by: key={{ (already_failed) | ternary('failed_hosts',
'success_hosts') }}
tags:
- release
play2:
- name: set success and failed groups
set_fact:
failed_hosts="{{ groups['failed_hosts'] | default('None') }}"
success_hosts="{{ groups['success_hosts'] | default('None') }}"
run_once: True
tags:
- notification
- release
- name: log grouped hosts to screen
debug: msg="Failed releases on - {{ failed_hosts }}. Success releases on
- {{ groups['success_hosts'] }} "
run_once: True
tags:
- release
When I run this task against 3 hosts and serial is 3 or more than this
succeeds :
TASK: [set success and failed groups]
*****************************************
ok: [54.yyy.32.xxx] => {"ansible_facts": {"failed_hosts": "None",
"success_hosts": "['54.yyy.32.xxx', '54.yyy.32.xxx', '54.yyy.32.xxx']"}}
But when I run it with serial which is lower than the number of hosts, then
the output only contains the first hosts in that group, e.g.
TASK: [set success and failed groups]
*****************************************
ok: [54.yyy.32.xxx] => {"ansible_facts": {"failed_hosts": "None",
"success_hosts": "['54.yyy.32.xxx', '54.yyy.32.xxx']"}}
So it looks like the newly created group when accessed from the
group.succes_host is only aware of the first hosts that were set in it.
To make things more confusing, when I ran the second play against the newly
created group, then ALL hosts were actually running it - meaning that the
group actually contains all hosts, but not when accessed from the groups
vars.
TASK: [log grouped hosts to screen]
*******************************************
ok: [54.yyy.32.xxx] => {
"msg": "Failed releases on - None. Success releases on -
['54.yyy.32.xxx', '54.yyy.32.xxx'] "
}
ok: [54.yyy.32.xxx] => {
"msg": "Failed releases on - None. Success releases on -
['54.yyy.32.xxx', '54.yyy.32.xxx'] "
}
ok: [54.yyy.32.xxx] => {
"msg": "Failed releases on - None. Success releases on -
['54.yyy.32.xxx', '54.yyy.32.xxx'] "
}
I got a sense that this is a bug, but would appreciate a second pair of
eyes .
Any help will be much appreciated,
Thanks,
Offer
--
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/60a226c5-fc87-48d0-b0fc-5bacf0b41ef3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.