Reputation: 15
the desired output is to show the name of the target directory and its contents. please see below. any sample code ideas on how to accomplish this? is it doable? thank you
role code: listing contents of directories
vars_files:
- /home/admin/.ansible/vault/vault.yml
vars:
- target_dirs:
- '/home/admin'
- '/root'
tasks:
- name: disk_usage
shell: ls -l {{ item }}
with_items: "{{ target_dirs }}"
register: disk_usage
ignore_errors: true
- debug:
msg:
- "disk usage"
- "=========="
- "{{ item }}"
loop: "{{ disk_usage | json_query('results[].stdout_lines') }}"
current output
TASK [debug] ***************************************************************************************************
ok: [server1] => (item=['total 0']) => {
"msg": [
"disk usage",
"############",
[
"total 0"
]
]
}
ok: [server1] => (item=['total 8', 'drwx------. 2 root root 4096 May 15 2020 bin', '-rwx------. 1 root root 519 May 15 2020 clean.sh']) => {
"msg": [
"disk usage",
"==========",
[
"total 8",
"drwx------. 2 root root 4096 May 15 2020 bin",
"-rwx------. 1 root root 519 May 15 2020 clean.sh"
]
]
}
desired output: state the name of the target directory and its contents
ok: [server1] => {
"msg": [
"disk usage /home/admin",
"==========",
[
"total 0"
]
]
}
ok: [server1] => {
"msg": [
"disk usage /root",
"==========",
[
"total 8",
"drwx------. 2 root root 4096 May 15 2020 bin",
"-rwx------. 1 root root 519 May 15 2020 clean.sh"
]
]
}
Upvotes: 1
Views: 276
Reputation: 68294
Given the tree for testing
shell> tree /tmp/test
/tmp/test
├── test1
│ ├── file1
│ ├── file2
│ └── file3
└── test2
├── file4
├── file5
└── file6
2 directories, 6 files
and the variable
target_dirs:
- /tmp/test/test1
- /tmp/test/test2
the debug below writes the expected JSON
- debug:
msg: |
disk usage {{ item.item }}
{{ '=' * under_line_length|int }}
{{ item.stdout_lines|to_nice_json }}
loop: "{{ disk_usage.results }}"
loop_control:
label: "{{ item.item }}"
vars:
under_line_length: "{{ item.item|length + 11 }}"
gives
ok: [localhost] => (item=/tmp/test/test1) =>
msg: |-
disk usage /tmp/test/test1
==========================
[
"total 0",
"-rw-rw-r-- 1 admin admin 0 Jan 25 04:09 file1",
"-rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file2",
"-rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file3"
]
ok: [localhost] => (item=/tmp/test/test2) =>
msg: |-
disk usage /tmp/test/test2
==========================
[
"total 0",
"-rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file4",
"-rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file5",
"-rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file6"
]
- debug:
msg: |
disk usage {{ item.item }}
{{ '=' * under_line_length|int }}
{{ item.stdout_lines|to_nice_yaml }}
loop: "{{ disk_usage.results }}"
loop_control:
label: "{{ item.item }}"
vars:
under_line_length: "{{ item.item|length + 11 }}"
gives
ok: [localhost] => (item=/tmp/test/test1) =>
msg: |-
disk usage /tmp/test/test1
==========================
- total 0
- -rw-rw-r-- 1 admin admin 0 Jan 25 04:09 file1
- -rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file2
- -rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file3
ok: [localhost] => (item=/tmp/test/test2) =>
msg: |-
disk usage /tmp/test/test2
==========================
- total 0
- -rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file4
- -rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file5
- -rw-rw-r-- 1 admin admin 0 Jan 25 04:10 file6
- hosts: localhost
vars:
target_dirs:
- /tmp/test/test1
- /tmp/test/test2
tasks:
- command: "ls -l {{ item }}"
loop: "{{ target_dirs }}"
register: disk_usage
ignore_errors: true
- debug:
msg: |
disk usage {{ item.item }}
{{ '=' * under_line_length|int }}
{{ item.stdout_lines|to_nice_yaml }}
loop: "{{ disk_usage.results }}"
loop_control:
label: "{{ item.item }}"
vars:
under_line_length: "{{ item.item|length + 11 }}"
- debug:
msg: |
disk usage {{ item.item }}
{{ '=' * under_line_length|int }}
{{ item.stdout_lines|to_nice_json }}
loop: "{{ disk_usage.results }}"
loop_control:
label: "{{ item.item }}"
vars:
under_line_length: "{{ item.item|length + 11 }}"
Upvotes: 1