Hello,
I understand this is the basics, but I’m still learning… Could anybody help?
This play collects all VMs in a VMware cluster and prints their names:
- name: List VMs in cluster
become: no
hosts: localhost
gather_facts: no
connection: local
tasks:
-
name: Collect list of VMs in cluster
community.vmware.vmware_vm_info:
validate_certs: false
register: vm_list -
name: Print list
ansible.builtin.debug:
msg: “{{ item[‘guest_name’] }}”
loop: “{{ vm_list.virtual_machines }}”
Its output is looking like:
ok: [localhost] => (item={‘guest_name’: ‘xxxxxx’, ‘guest_fullname’: ‘Microsoft Windows Server 2022 (64-bit)’, ‘power_state’: ‘poweredOn’, ‘ip_address’: ‘xxxxxx’, ‘mac_address’: [‘xxxxxx’], ‘uuid’: ‘xxxxxx’, ‘instance_uuid’: ‘xxxxxx’, ‘vm_network’: {‘xxxxxx’: {‘ipv4’: [‘xxxxxx’], ‘ipv6’: }}, ‘esxi_hostname’: ‘xxxxxx’, ‘datacenter’: ‘xxxxxx’, ‘cluster’: ‘xxxxxx’, ‘resource_pool’: None, ‘attributes’: {}, ‘tags’: , ‘folder’: ‘xxxxxx’, ‘moid’: ‘xxxxxx’, ‘datastore_url’: [{‘name’: ‘xxxxxx’, ‘url’: ‘xxxxxx’}], ‘allocated’: {}}) => {
“msg”: “server01”
}
ok: [localhost] => (item={‘guest_name’: ‘xxxxxx’, ‘guest_fullname’: ‘Microsoft Windows Server 2022 (64-bit)’, ‘power_state’: ‘poweredOn’, ‘ip_address’: ‘xxxxxx’, ‘mac_address’: [‘xxxxxx’], ‘uuid’: ‘xxxxxx’, ‘instance_uuid’: ‘xxxxxx’, ‘vm_network’: {‘xxxxxx’: {‘ipv4’: [‘xxxxxx’], ‘ipv6’: }}, ‘esxi_hostname’: ‘xxxxxx’, ‘datacenter’: ‘xxxxxx’, ‘cluster’: ‘xxxxxx’, ‘resource_pool’: None, ‘attributes’: {}, ‘tags’: , ‘folder’: ‘xxxxxx’, ‘moid’: ‘xxxxxx’, ‘datastore_url’: [{‘name’: ‘xxxxxx’, ‘url’: ‘xxxxxx’}], ‘allocated’: {}}) => {
“msg”: “server02”
}
ok: [localhost] => (item={‘guest_name’: ‘xxxxxx’, ‘guest_fullname’: ‘Microsoft Windows Server 2022 (64-bit)’, ‘power_state’: ‘poweredOn’, ‘ip_address’: ‘xxxxxx’, ‘mac_address’: [‘xxxxxx’], ‘uuid’: ‘xxxxxx’, ‘instance_uuid’: ‘xxxxxx’, ‘vm_network’: {‘xxxxxx’: {‘ipv4’: [‘xxxxxx’], ‘ipv6’: }}, ‘esxi_hostname’: ‘xxxxxx’, ‘datacenter’: ‘xxxxxx’, ‘cluster’: ‘xxxxxx’, ‘resource_pool’: None, ‘attributes’: {}, ‘tags’: , ‘folder’: ‘xxxxxx’, ‘moid’: ‘xxxxxx’, ‘datastore_url’: [{‘name’: ‘xxxxxx’, ‘url’: ‘xxxxxx’}], ‘allocated’: {}}) => {
“msg”: “server03”
}
Two questions, if you don’t mind…:
01 - How, if even possible, could I have the output looking like something like this?
ok: [localhost]
msg": “server01”
ok: [localhost]
msg": “server02”
ok: [localhost]
msg": “server03”
02 - Would it be possible to send the loop output to a file?
I know that the whole “{{ vm_list }}” content can be send to a file using:
- name: Copy list to file
ansible.builtin.copy:
content: “{{ vm_list | to_yaml }}”
dest: “{{ path_to_file }}”
But I’d like to create a file with the already parsed content
Thanks a lot,
Alex