Introduction
This guide shows you the best way to list all the virtual machines within your VMware infrastructure using Ansible. I'll provide a live Playbook and some simple Ansible code. Welcome to today's episode of Ansible Pilot—I'm Luca Berton.
Ansible Dynamic Inventory for VMware
- Functionality: Dynamically retrieves virtual machines as inventory hosts from the VMware environment.
- Plugin:
community.vmware.vmware_vm_inventory
- Dependencies: Python
pyVmomi,requests, and vSphere Automation SDK
The VMware dynamic inventory plugin interacts with VMware APIs to dynamically manage nodes with Ansible. The community.vmware.vmware_vm_inventory plugin, part of the community-supported collection, allows you to run Ansible automation across your VMware virtual machines.
Links
- [
community.vmware.vmware_vm_inventory](https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_vm_inventory_inventory.html)
Demo
Let’s configure Ansible Dynamic Inventory for VMware to list all virtual machines in your VMware infrastructure as an Ansible inventory.
Configuration Files
- ansible.cfg:
``yaml
[inventory]
enable_plugins = vmware_vm_inventory
`
- inventory.vmware.yml:
`yaml
plugin: vmware_vm_inventory
strict: False
hostname: vmware.example.com
username: [email protected]
password: MySecretPassword123
validate_certs: False
with_tags: False
groups:
VMs: True
`
Listing Hosts
- Command:
`bash
$ ansible-inventory -i inventory.vmware.yml --list
`
- Output:
`bash
{
"VMs": {
"hosts": [
"myvm_42254893-3793-0e4f-9f61-7c37d244c2a8"
]
},
"_meta": {
"hostvars": {
"myvm_42254893-3793-0e4f-9f61-7c37d244c2a8": {
"config": {
...
},
...
}
}
},
"all": {
"children": [
"VMs",
...
]
},
...
}
`
Graphing Hosts
- Command:
`bash
$ ansible-inventory -i inventory.vmware.yml --graph
`
- Output:
`bash
@all:
|--@VMs:
| |--myvm_42254893-3793-0e4f-9f61-7c37d244c2a8
|--@centos64Guest:
| |--myvm_42254893-3793-0e4f-9f61-7c37d244c2a8
|--@poweredOff:
| |--myvm_42254893-3793-0e4f-9f61-7c37d244c2a8
``
[Code with ❤️ on GitHub](https://github.com/lucab85/ansible