我有以下内容:
Ansible剧本:
-
hosts: all
gather_facts: true
#remote_user: ansible
tasks:
-
name: "check dir size"
shell: "du -sh /tmp/service/log"
register: size
-
debug:
msg: "{{ size.stdout }}"
-
template:
src: template2.j2
dest: ./file.out
delegate_to: localhost
run_once: true
template2.j2
{% for i in groups['all'] %}
{{ loop.index0 }} {{ hostvars[i].inventory_hostname }} {{ size.stdout }}
{% endfor %}
结果:
$ cat file.out
0 host00 1.7G /tmp/service/log
1 host11 1.7G /tmp/service/log
2 host12 1.7G /tmp/service/log
在输出文件中,目录大小保持不变。 如何在jinja2循环中检查每个主机的目录大小?
答案 0 :(得分:0)
template2.j2
在本地主机上被模板化(由于delegate_to: localhost
),因此size
用于本地主机。
您可能想像使用hostvars[i].size.stdout
一样使用inventory_hostname
。