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.

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:

    [inventory]
    enable_plugins = vmware_vm_inventory
    
  • inventory.vmware.yml:

    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:
    $ ansible-inventory -i inventory.vmware.yml --list
    
  • Output:
    {
        "VMs": {
            "hosts": [
              "myvm_42254893-3793-0e4f-9f61-7c37d244c2a8"
           ]
        },
        "_meta": {
            "hostvars": {
               "myvm_42254893-3793-0e4f-9f61-7c37d244c2a8": {
                    "config": {
                        ...
                    },
                    ...
                }
            }
        },
        "all": {
            "children": [
                "VMs",
                ...
           ]
        },
        ...
    }
    

Graphing Hosts

  • Command:
    $ ansible-inventory -i inventory.vmware.yml --graph
    
  • Output:
    @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

Conclusion

Now you know how to configure Ansible Dynamic Inventory for VMware, enabling you to automate and manage your VMware virtual machines efficiently.

Subscribe to the YouTube channel, Medium, and Website, X (formerly Twitter) to not miss the next episode of the Ansible Pilot.

Academy

Learn the Ansible automation technology with some real-life examples in my Udemy 300+ Lessons Video Course.

BUY the Complete Udemy 300+ Lessons Video Course

My book Ansible By Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps

BUY the Complete PDF BOOK to easily Copy and Paste the 250+ Ansible code

Want to keep this project going? Please donate

Patreon Buy me a Pizza