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.

Reply via email to