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:
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!
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