Ansible联合收割机';设置';将任务输出为JSON的输出
我当前使用以下命令收集有关所有主机的信息:Ansible联合收割机';设置';将任务输出为JSON的输出,ansible,Ansible,我当前使用以下命令收集有关所有主机的信息: ansible all -m setup --tree out 这将为目录out中的每个主机创建一个文件,其中包含JSON格式的所有ansible变量。非常有用 但是,我的主机由许多KVM主机组成,因此我想将virt/list\u vms的输出添加到每个输出中 我创建了一个小剧本: hosts: myhost tasks: - name: VM list checker virt: name: list the VMs
ansible all -m setup --tree out
这将为目录out
中的每个主机创建一个文件,其中包含JSON格式的所有ansible变量。非常有用
但是,我的主机由许多KVM主机组成,因此我想将virt
/list\u vms
的输出添加到每个输出中
我创建了一个小剧本:
hosts: myhost
tasks:
- name: VM list checker
virt:
name: list the VMs
command: list_vms
我的剧本是这样写的:
ansible-playbook -v status.playbook.yml -s
---
- hosts: all
gather_facts: no
tasks:
- setup:
register: setup_res
- command: echo ok
register: cmd_res
- file:
path: /tmp/out/{{ inventory_hostname }}
state: directory
delegate_to: localhost
- copy:
content: "{{ setup_res | to_nice_json }}"
dest: /tmp/out/{{ inventory_hostname }}/facts.json
delegate_to: localhost
- copy:
content: "{{ cmd_res | to_nice_json }}"
dest: /tmp/out/{{ inventory_hostname }}/cmd.json
delegate_to: localhost
我希望输出为JSON
格式,最好结合事实
和列表的输出
如何使用组合信息创建类似的布局(每个主机在out
目录中有一个JSON
)?您可以这样做:
ansible-playbook -v status.playbook.yml -s
---
- hosts: all
gather_facts: no
tasks:
- setup:
register: setup_res
- command: echo ok
register: cmd_res
- file:
path: /tmp/out/{{ inventory_hostname }}
state: directory
delegate_to: localhost
- copy:
content: "{{ setup_res | to_nice_json }}"
dest: /tmp/out/{{ inventory_hostname }}/facts.json
delegate_to: localhost
- copy:
content: "{{ cmd_res | to_nice_json }}"
dest: /tmp/out/{{ inventory_hostname }}/cmd.json
delegate_to: localhost
使用@KonstantinSuvorov的输入将命令
调用替换为virt
,我得出了以下结论:
---
- hosts: kvm_hosts
gather_facts: no
tasks:
- setup:
register: setup_res
- virt: "command=list_vms"
register: cmd_res
- copy:
content: "{{ setup_res | combine(cmd_res) | to_nice_json }}"
dest: /tmp/out/{{ inventory_hostname }}.json
delegate_to: localhost
这是一个伟大的开始!谢谢,我将阅读更多关于注册
选项的信息。