Hi,
I've been trying to get Ansible Tower to run a playbook/role which should update the /etc/hosts file across all hosts in a group.
I have the following playbook:
- name: Update hosts file if required
hosts: all
gather_facts: yes
roles:
- { role: hostfile }
and the following role:
---
- debug: var=ansible_default_ipv4.address
- name: node to ip mapping
debug: var=hostvars[item].ansible_default_ipv4.address
with_items: groups['all']
- name: Build Host file
lineinfile: dest=/etc/hosts
regex='.*{{ item }}$ }}'
line="{{ hostvars[item].ansible_default_ipv4.address }} {{item}}"
state=present
when: hostvars[item].ansible_default_ipv4.address is defined
with_items: groups['all']
become: true
However, when Tower run this its skips the 2 hosts in the group. From looking at the debug output it would appear that Tower is not caching the facts under hostvars as you can see from the output below:
TASK [setup] *******************************************************************
ok: [172.31.9.43]
ok: [52.50.60.2]
TASK [hostfile : debug] ********************************************************
ok: [172.31.9.43] => {
"ansible_default_ipv4.address": "172.31.9.43"
}
ok: [52.50.60.2] => {
"ansible_default_ipv4.address": "172.31.33.206"
}
TASK [hostfile : node to ip mapping] *******************************************
ok: [172.31.9.43] => (item=groups['all']) => {
"hostvars[item].ansible_default_ipv4.address": "VARIABLE IS NOT DEFINED!",
"item": "groups['all']"
}
ok: [52.50.60.2] => (item=groups['all']) => {
"hostvars[item].ansible_default_ipv4.address": "VARIABLE IS NOT DEFINED!",
"item": "groups['all']"
}
TASK [hostfile : Build Host file] **********************************************
skipping: [172.31.9.43] => (item=groups['all'])
skipping: [52.50.60.2] => (item=groups['all'])
PLAY RECAP *********************************************************************
172.31.9.43 : ok=3 changed=0 unreachable=0 failed=0
52.50.60.2 : ok=3 changed=0 unreachable=0 failed=0
I have a feeling that I'm missing something very obvious here. Any ideas where I should look?
Thanks,
Jon