2017-07-19 104 views
1

我目前正在收集使用此命令我的所有主機的事實:Ansible結合「設置」輸出與任務輸出到JSON

ansible all -m setup --tree out 

這在目錄中創建out每個主機的文件,所有在ansible變量JSON格式。很有用。

但是,我的主機由很多KVM主機組成,所以我想爲每個輸出添加virt/list_vms的輸出。

我創建了一個小劇本:

hosts: myhost 

tasks: 
    - name: VM list checker 
    virt: 
     name: list the VMs 
     command: list_vms 

我運行該劇本是這樣的:

ansible-playbook -v status.playbook.yml -s 

我想輸出是在JSON格式,優選組合facts和輸出的list_vms

如何使用組合信息爲每個主機在out目錄中創建一個類似的佈局(一個JSON?)?

回答

1

從@KonstantinSuvorov使用輸入我想出了這一點:

--- 
- 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 
1

你可以做這樣的事情:

--- 
- 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 

virt取代command電話。

+0

這是一個很好的開始!謝謝,我會讀更多關於'register'選項。 – RobAu