我正在尝试使用ansible找到vm guest虚拟机的数据存储

时间:2019-09-18 15:40:47

标签: ansible

我正在尝试使用ansible代码段提取vm数据存储的值:

- name: Gather disk facts from virtual machine using name
       vmware_guest_disk_facts:
          hostname: "{{ vcenter_server }}"
          username: "{{ vcenter_user }}"
          password: "{{ vcenter_pass }}"
          datacenter: "{{ datacenter }}"
          validate_certs: no
          name: "{{ item }}"
       delegate_to: localhost
       register: disk_facts
       with_items: "{{ vm_list }}"

     - name: Get disk info
       debug:
         var: disk_facts.results.guest_disk_facts.backing_datastore

输出:

[root@sysmgttl1 lvm]# ansible-playbook -i hosts vmfacts.yml -e vcenter_server=vmimgtpw002 -e vm_list=sndprfql8

PLAY [sndprfql8] ***********************************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************************
ok: [sndprfql8]

TASK [Gather disk facts from virtual machine using name] *******************************************************************************************************************
ok: [sndprfql8 -> localhost] => (item=sndprfql8)

TASK [Get disk info] *******************************************************************************************************************************************************
ok: [sndprfql8] => {
    "disk_facts.results.guest_disk_facts.backing_datastore": "VARIABLE IS NOT DEFINED!"
}

PLAY RECAP *****************************************************************************************************************************************************************
sndprfql8                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

这就是我的disk_facts的样子。


ok: [sndprfql8] => {
    "disk_facts": {
        "changed": false,
        "msg": "All items completed",
        "results": [
            {
                "ansible_loop_var": "item",
                "changed": false,
                "failed": false,
                "guest_disk_facts": {
                    "0": {
                        "backing_datastore": "QADEV07",
                        "backing_eagerlyscrub": false,
                        "backing_filename": "[QADEV07] sndprfql8/sndprfql8.vmdk",
                        "backing_thinprovisioned": true,
                        "backing_type": "FlatVer2",
                        "backing_uuid": "6000C292-7716-6296-de04-69bac9186661",
                        "backing_writethrough": false,
                        "capacity_in_bytes": 68719476736,
                        "capacity_in_kb": 67108864,
                        "controller_key": 1000,
                        "key": 2000,
                        "label": "Hard disk 1",
                        "summary": "67,108,864 KB",
                        "unit_number": 0
                    }
                },
                "invocation": {
                    "module_args": {
                        "datacenter": "RDC",
                        "folder": null,
                        "hostname": "vmimgtpw002",
                        "name": "sndprfql8",
                        "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
                        "port": 443,
                        "use_instance_uuid": false,
                        "username": "svcvread@chop.edu",
                        "uuid": null,
                        "validate_certs": false
                    }
                },
                "item": "sndprfql8"
            }
        ]
    }
}

1 个答案:

答案 0 :(得分:0)

如果这确实是一次使用,则应执行以下操作:

- name: Get disk info
  debug:
   var: disk_facts.results[0].guest_disk_facts['0'].backing_datastore

如果您的目标是获取结果中可能有多个磁盘的vms列表的所有值,则以下内容将为您提供扁平化的列表(如果需要,可以使用unique过滤器进行重复数据删除)

- debug:
    msg: "{{ disk_facts | json_query('results[].guest_disk_facts.*[].backing_datastore') }}"
相关问题