On Wed, Mar 25, 2020 at 10:41:35PM -0700, Shifa Shaikh wrote:
> ---
> hosts: remote_hosts
> tasks:
> - name: Generate JSON data
> lineinfile:
> path: "{{ playbook_dir }}/tmpfiles/stats.yml"
> line: "{{ inventory_hostname }}_{{ item.mount }}: {{ (100 *
> ((item.size_total - item.size_available) / item.size_total)) | round(1,
> 'common') }}"
> insertafter: EOF
> delegate_to: localhost
> when: item.mount == '/tmp'
> with_items: '{{ ansible_mounts }}'
>
>
> I wish to get the target hostname_mountname in the stats.yml
>
> Thus if the remote_hosts are
>
> 10.0.0.2
> > 10.0.0.3
> > 10.0.0.5
>
>
> My stats.yml should have the below entries (Expected Output):
>
> 10.0.0.2_/tmp: 54
> > 10.0.0.3_/tmp: 42
> > 10.0.0.5_/tmp: 65
>
>
> However, after using lineinfile and delegate_to it always prints localhost
>
> localhost:/tmp: 54
> > localhost_/tmp: 42
> > localhost_/tmp: 65
Delegate to localhost does not change inventory_hostname, if it did it would
break a lot of code out there.
And I can prove it with this code that mimic you codes behavior.
$ more test.yml
---
- hosts: a1,a2
gather_facts: no
become: no
vars:
myvar:
- value1
- value2
- value3
tasks:
- lineinfile:
path: /tmp/test
line: "{{ inventory_hostname }} {{ item }}"
insertafter: EOF
create: true
delegate_to: localhost
when: item == "value2"
with_items: "{{ myvar }}"
And by running it I get
$ ansible-playbook test.yml; echo "Content of /tmp/test:"; cat /tmp/test
PLAY [a1,a2] ***************************************************************
TASK [lineinfile] **********************************************************
skipping: [a1] => (item=value1)
skipping: [a2] => (item=value1)
changed: [a1 -> localhost] => (item=value2)
skipping: [a1] => (item=value3)
changed: [a2 -> localhost] => (item=value2)
skipping: [a2] => (item=value3)
PLAY RECAP *****************************************************************
a1 : ok=1 changed=1 unreachable=0 failed=0
a2 : ok=1 changed=1 unreachable=0 failed=0
Content of /tmp/test:
a1 value2
a2 value2
--
Kai Stian Olstad
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/20200326090545.qmkhcis2tyu7yv3p%40olstad.com.