Ниже 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 файл, который будет создан локально, и не на удаленном хосте.