如何在jinja2模板中重用Ansible变量?

时间:2020-03-27 09:50:53

标签: ansible jinja2 ansible-facts

我有以下内容:

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循环中检查每个主机的目录大小?

1 个答案:

答案 0 :(得分:0)

template2.j2在本地主机上被模板化(由于delegate_to: localhost),因此size用于本地主机。

您可能想像使用hostvars[i].size.stdout一样使用inventory_hostname