Below playbook gets the disk usage percentage of '/tmp' from a list of 
remote_hosts [20 remote servers] and stores it locally (delegate_to) in a 
file {{ playbook_dir }}/tmpfiles/stats.yml

---
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


I tried using {{ ansible_host }} instead of {{ inventory_hostname }} but it 
always prints localhost instead of the target from where it is fetching the 
disk usage information.

Note: if I remove delegate_to then it prints the remote IP fine but then I 
wish the file to be created locally and not on the remote host.

-- 
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/ecf07c8c-83c4-4504-ba3f-a2f7975bf1a3%40googlegroups.com.

Reply via email to