Невозможно распечатать целевой хост инвентаризации при использовании делегата Ansible - PullRequest
0 голосов
/ 26 марта 2020

Ниже playbook получает процент использования диска '/ tmp' из списка remote_hosts [20 удаленных серверов] и сохраняет его локально (делегат_to) в файле {{playbook_dir}} / tmpfiles / stats.yml

---
host: remote_hosts
  tasks:    
    - name: Generate JSON data
      lineinfile:
        path: "{{ playbook_dir }}/tmpfiles/stats.yml"
        line: "{{ inventory_hostname }}_{{ item.mount }}: {{ (100 * ((item.size_total - item.size_available) / item.size_total)) | round(1, 'common') }}"
        insertafter: EOF
      delegate_to: localhost
      when: item.mount == '/tmp'
      with_items: '{{ ansible_mounts }}'

I wi sh для получения целевого hostname_mountname в stats.yml

Таким образом, если remote_hosts имеют значение

10.0.0.2
10.0.0.3
10.0.0.5

Мой stats.yml должен иметь следующие записи ( Ожидаемый результат):

10.0.0.2_/tmp: 54
10.0.0.3_/tmp: 42
10.0.0.5_/tmp: 65

Однако после использования lineinfile и delegate_to всегда печатается localhost

localhost:/tmp: 54
localhost_/tmp: 42
localhost_/tmp: 65

Я пытался использовать {{ ansible_host }} вместо {{ inventory_hostname }}, но это всегда печатает localhost вместо цели, из которой он извлекает информацию об использовании диска.

Примечание: если я удаляю Delegate_to, тогда он печатает удаленный IP-адрес, но затем я sh файл, который будет создан локально, и не на удаленном хосте.

...