Как использовать переменную Ansible внутри шаблона jinja2? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть следующее:

Ansible playbook:

- 
  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 l oop?

1 Ответ

0 голосов
/ 27 марта 2020

template2.j2 шаблонируется на локальном хосте (из-за delegate_to: localhost), поэтому size для локального хоста.

Возможно, вы захотите использовать hostvars[i].size.stdout, как вы используете для inventory_hostname.

...