下面playbook从远程主机列表[20个远程服务器]中获取“/tmp”的磁盘使用百分比,并将其本地存储(委托给)到文件{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 }}'
我希望在stats.yml中获得目标主机名
因此,如果远程主机是
10.0.0.2
10.0.0.3
10.0.0.5
10.0.0.2_/tmp: 54
10.0.0.3_/tmp: 42
10.0.0.5_/tmp: 65
但是,使用后
lineinfile
和
delegate_to
localhost:/tmp: 54
localhost_/tmp: 42
localhost_/tmp: 65
我试着用
{{ ansible_host }}
而不是
{{ inventory_hostname }}
但它总是打印本地主机,而不是从中获取磁盘使用信息的目标。
注意:如果删除delegate_to,则它可以打印远程IP,但我希望在本地而不是在远程主机上创建文件。