Skip to main content Logo

Quis custodiet ipsos custodes?
Home | About | All pages | Cluster Status | RSS Feed

Ansible Inventory from VMWare

Published: 06-01-2014 | Author: Remy van Elst | Text only version of this article

❗ This post is over ten years old. It may no longer be up to date. Opinions may have changed.

Table of Contents

This is a simple script which lets you use VMWare vCenter as a dynamic inventory for Ansible.

Github repository
Official Website

Recently I removed all Google Ads from this site due to their invasive tracking, as well as Google Analytics. Please, if you found this content useful, consider a small donation using any of the options below:

I'm developing an open source monitoring app called Leaf Node Monitoring, for windows, linux & android. Go check it out!

Consider sponsoring me on Github. It means the world to me if you show your appreciation and you'll help pay the server costs.

You can also sponsor me by getting a Digital Ocean VPS. With this referral link you'll get $200 credit for 60 days. Spend $25 after your credit expires and I'll get $25!


Install PySphere:

pip install -U pysphere

Edit the script's login data and VCenter server FQDN:

server_fqdn = ""
server_username = "jdoe"
server_password = "secure_passw0rd"

Test it:

Get all powered on VM's:

python2 --list


    "no_group": {
        "hosts": [
    "local": [

Get one VM:

python2 --host vm0032


    "admin": "",
    "source_database": "VMWare"

Nonexistent VM:

python2 --host nonexist


[Error]: [Object Not Found]: Could not find a VM named 'notexist'

Do a simple ansible ping:

ANSIBLE_HOSTS="/home/remy/git/vmware-ansible/" ansible all -m ping


vm0032 | success >> {
    "changed": false,
    "ping": "pong"

vm0034 | success >> {
    "changed": false,
    "ping": "pong"


Either export the ANSIBLE_HOSTS variable to always use the VMWare inventory:

export ANSIBLE_HOSTS="/home/remy/git/vmware-ansible/"

Or preface each ansible command:

ANSIBLE_HOSTS="/home/remy/git/vmware-ansible/" ansible all -m apt -a "upgrade=safe"


Tested with both vCenter 5.1 and 5.5, Python 2.

Does not support grouping by datacenter or resource group

Thanks to JP Mens's article for the inspiration.

Tags: ansible , deployment , devops , python , software , vmware