Raymii.org
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. It means the world to me if you show your appreciation and you'll help pay the server costs:
GitHub Sponsorship
PCBWay referral link (You get $5, I get $20 after you've placed an order)
Digital Ocea referral link ($200 credit for 60 days. Spend $25 after your credit expires and I'll get $25!)
Installation
Install PySphere:
pip install -U pysphere
Edit the script's login data and VCenter server FQDN:
server_fqdn = "vcenter.example.org"
server_username = "jdoe"
server_password = "secure_passw0rd"
Test it:
Get all powered on VM's:
python2 query.py --list
Output:
{
"no_group": {
"hosts": [
"vm0031",
"vm0032",
[...]
"vm0999"
]
},
"local": [
"127.0.0.1"
]
}
Get one VM:
python2 query.py --host vm0032
Output:
{
"admin": "sysadmin@example.org",
"source_database": "VMWare"
}
Nonexistent VM:
python2 query.py --host nonexist
Output:
[Error]: [Object Not Found]: Could not find a VM named 'notexist'
Do a simple ansible ping:
ANSIBLE_HOSTS="/home/remy/git/vmware-ansible/query.py" ansible all -m ping
Result:
vm0032 | success >> {
"changed": false,
"ping": "pong"
}
vm0034 | success >> {
"changed": false,
"ping": "pong"
}
Usage
Either export the ANSIBLE_HOSTS variable to always use the VMWare inventory:
export ANSIBLE_HOSTS="/home/remy/git/vmware-ansible/query.py"
Or preface each ansible command:
ANSIBLE_HOSTS="/home/remy/git/vmware-ansible/query.py" ansible all -m apt -a "upgrade=safe"
Notes
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