Ansible playbook disk space csv report problem

183 views
Skip to first unread message

krishna gupta

unread,
Apr 28, 2021, 1:47:15 AM4/28/21
to Ansible Project
Dear All,

I am executing the df -kh command saving the result in csv but result is not coming in proper csv format.

--------Playbook--------

---
- name: Generate the disk spacke in csvormat
  hosts: all
  tasks:
    - name: disk space
      shell: "df -kh"
      register: shell_output

    - set_fact: t1="{{ hostvars[inventory_hostname]['shell_output']['stdout_lines'] }}"
    - debug: var=t1
    - name: Generate Report
      template:
        src: hosts.j2
        dest: /tmp/host_report.csv
      delegate_to: localhost
      run_once: yes

-------template: -----------

#SNo., Filesystem, Size, Used, Avail, Use%, Mounted on

{% for hostnode in ansible_play_hosts  %}
{{ loop.index }},{{ t1  }},{{ hostnode }}

{% endfor %}

-please advice..

Roland Müller

unread,
Apr 30, 2021, 3:46:35 AM4/30/21
to Ansible Project

Hello,

You did not tell us what kind of problems you encountered and may be what you expect. Typically, many people - including me - do not answer.

Thus, missing problem description:
1. the template produces a single line for every host. Output of the df command contains one line per filesystem/disk
2. t1 contains lines of data separated by one or more spaces. Separators - I assume - should be single ','
3.  the header of df output is include as first line in t1

Solutions
(1) make a second loop in hosts.j2 for the lines in t1
(2) use some expression to replace one or more whitespaces with a ','
(3) not addressed, this remains to you

{% for hostnode in ansible_play_hosts  %}
{% for df_line in t1 %}
{{ loop.index }},{{  df_line | regex_replace('\s+', ',') }},{{ hostnode }}
{% endfor %}
{% endfor %}

 BR,
Roland
Reply all
Reply to author
Forward
0 new messages