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.