2017-06-23 3 views
1

Ich habe versucht, virtuelle Maschinen Fakten von ESXi mit Ansible zu bekommen. Mein Textbuch hier:Wie formatiert Fakten aus Ansible-Modul vmware_vm_facts?

- name: VM 
    local_action: 
    module: vmware_vm_facts 
    hostname: '{{ vcenter_hostname }}' 
    username: root. 
    password: '{{ esxi_root_passw }}' 
    validate_certs: no 
    register: instance_vm_facts 

- debug: var=instance_vm_facts 

Und ich habe einige Ergebnisse:

ok: [localhost -> localhost] => { "changed": false, "invocation": { "module_args": { "hostname": "192.168.210.63", "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "username": "root", "validate_certs": false } }, "virtual_machines": { "vmware-test-1": { "guest_fullname": "Red Hat Enterprise Linux 6 (64-bit)", "ip_address": "192.168.108.91", "power_state": "poweredOn" }, "vmware-test-2”: { "guest_fullname": "Red Hat Enterprise Linux 6 (64-bit)", "ip_address": "192.168.109.24", "power_state": "poweredOn" } } }

Aber ich verstehe, wie nur Namen filtern und ip_address? Ich habe versucht mit_item und with_dict, aber nicht erfolgreich.

Antwort

1

Um auf virtuellen Maschinen zu iterieren, müssen Sie instance_vm_facts.virtual_machines verwenden. Da es keine Liste ist, haben Sie with_dict zu verwenden und dann Namen zugreifen mit item.key und IP mit item.value.ip_address oder Energiezustand mit item.value.power_state ...

- debug: 
    msg: "IP of {{ item.key }} is {{ item.value.ip_address }}" 
    with_dict: "{{ instance_vm_facts.virtual_machines }}" 
+0

Vielen Dank !!! Es funktioniert wie erwartet! –

+0

Können Sie die Frage als beantwortet markieren? – zigarn