Hi,
Just wondering if anone else have observed the following.
Foreman: Version 1.13.4
OS: Ubuntu 16.04
Ansible: 2.3.0.0
I have a bunch of servers and I want to create /etc/hosts on all of them,
containing all hosts from my inventory.
The inventory is dynamically fetched using foreman_ansible_inventory.py by
Guido Günther. This works properly.
I created a task like this (slightly simplified for readability)
- name: Populate /etc/hosts
lineinfile: dest=/etc/hosts line="{{
hostvars[item]['foreman_facts']['ansible_em3::ipv4::address'] }} {{ item }}
state=present
with_items: "{{ groups['all'] }}"
Now here's the thing: If I run my tasks using the CLI, i.e.
'ansible-playbook site.yml' it works okay; all hosts are found and placed
in the 'items' array.
But if I run the play by using the 'Play ansible roles' in the foreman UI,
only the host that the playbook is running on is in the array.
So I included a debug statement in the play:
- name: debug
debug: msg={{ groups['all'] }}
When running the CLI version:
TASK [hosts : debug] ******************************
ok: [somehost] => {
"changed": false,
"msg": [
"anotherhost",
"somehost",
"foo",
"bar",
…
…
]
}
So all the hosts in the hostgroup 'all', including the one the playbook is
applied to, are shown.
Now I run the same plays from the foreman UI:
TASK [hosts : debug] ****************************
ok: [somehost] => {
"changed": false,
"msg": [
"somehost"
]
}
It only shows itself, and not any of the other hosts. I am sure this worked previously. But now it appears the contents of groups differ depending on how the playbook run is triggered.
Any ideas would be appreciated.
Cheers,
JM