All Projects → xezpeleta → Ansible Proxmox Inventory

xezpeleta / Ansible Proxmox Inventory

Proxmox dynamic inventory for Ansible

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Ansible Proxmox Inventory

Ansible Cmdb
Ansible-cmdb takes the output of Ansible's fact gathering and converts it into a static HTML overview page (and other things) containing system configuration information.
Stars: ✭ 2,003 (+1903%)
Mutual labels:  inventory, ansible
Linchpin
ansible based multicloud orchestrator
Stars: ✭ 107 (+7%)
Mutual labels:  inventory, ansible
Ansible device42
Scripts to generate static inventory file or generate dynamic inventory for ansible from Device42 data
Stars: ✭ 33 (-67%)
Mutual labels:  inventory, ansible
K8s
Deploying Kubernetes High Availability Cluster with Ansible Playbook
Stars: ✭ 125 (+25%)
Mutual labels:  inventory, ansible
Upcloud Ansible
Dynamic inventory and modules for managing servers via UpCloud's API
Stars: ✭ 50 (-50%)
Mutual labels:  inventory, ansible
Ansible Telegraf
Installing and configuring Telegraf via Ansible for RedHat/Debian/Ubuntu/Windows/Suse.
Stars: ✭ 91 (-9%)
Mutual labels:  ansible
Ceph Ansible
Ansible playbooks to deploy Ceph, the distributed filesystem.
Stars: ✭ 1,320 (+1220%)
Mutual labels:  ansible
Ovirt Ansible
This repository holds all oVirt related Ansible roles
Stars: ✭ 91 (-9%)
Mutual labels:  ansible
Docker Ansible Playbook
Docker Image of Ansible for executing ansible-playbook command against an externally mounted set of Ansible playbooks
Stars: ✭ 90 (-10%)
Mutual labels:  ansible
Vps Comparison
A comparison between some VPS providers. It uses Ansible to perform a series of automated benchmark tests over the VPS servers that you specify. It allows the reproducibility of those tests by anyone that wanted to compare these results to their own. All the tests results are available in order to provide independence and transparency.
Stars: ✭ 1,357 (+1257%)
Mutual labels:  ansible
Oneview Ansible
Ansible Modules and Sample Playbooks for HPE OneView
Stars: ✭ 96 (-4%)
Mutual labels:  ansible
Ansible Haproxy
Installs and configure HAProxy
Stars: ✭ 93 (-7%)
Mutual labels:  ansible
Ansible Interactive Tutorial
Interactive Ansible tutorials with dead simple setup via Docker
Stars: ✭ 1,309 (+1209%)
Mutual labels:  ansible
Beetbox
Pre-provisioned L*MP stack
Stars: ✭ 94 (-6%)
Mutual labels:  ansible
Selfhosted Server
Selfhosted server with Ansible.
Stars: ✭ 91 (-9%)
Mutual labels:  ansible
Drupal Vm
A VM for Drupal development
Stars: ✭ 1,348 (+1248%)
Mutual labels:  ansible
Xsrv
[mirror] Install and manage self-hosted services/applications, on your own server(s) - ansible collection and utilities
Stars: ✭ 89 (-11%)
Mutual labels:  ansible
Raspberry Pi Dramble
Raspberry Pi Kubernetes cluster that runs HA/HP Drupal 8
Stars: ✭ 1,317 (+1217%)
Mutual labels:  ansible
Stock Management System
An Introductory Stock Management System built on PHP, jQuery with AJAX in MVC pattern.
Stars: ✭ 95 (-5%)
Mutual labels:  inventory
Ansible Alertmanager
Deploy Prometheus Alertmanager service
Stars: ✭ 93 (-7%)
Mutual labels:  ansible

Ansible-Proxmox-inventory

About

Proxmox dynamic inventory for Ansible. Based on original plugin from Mathieu Gauthier-Lafaye

How does it work?

It will generate an inventory on the fly with all your VMs stored in your ProxmoxVE. Therefore, Ansible will be able to connect to all your VM.

Requirements

Resolvable VM names: the inventory script collects the VM names (and not IP addresses!). That's why your computer must be able to resolve these names; either with the DNS server or your /etc/hosts

Features

  • ProxmoxVE cluster: if your have a ProxmoxVE cluster, it will gather the whole VM list from your cluster
  • Advanced filtering: you can filter the VM list based in their status or a custom tag included in the Notes field

Changelog:

  • Added option to ignore invalid SSL certificate (by @bmillemathias) PR
  • Compatible with a Proxmox cluster (by @xezpeleta)
  • Added group 'running' (by @xezpeleta)
  • Added backwards compatibility with openvz and Proxmox3 (@isindir) [#1]
  • Added optional JSON configuration file (@nmaggioni) [#2]
  • Added backwards compatibility with python 2.6 (@isindir) [#3]
  • Handle cases where node is unavailable (@andor44) [#7]
  • Fix python 2 and 3 compatibility (@gardar) [#14]
  • Filter on qemu and lxc resources only (@adubreuiltk) [#16]
  • Get the IP address automatically (@xezpeleta) [#8]

Instructions

Download proxmox.py to /etc/ansible/ directory:

cd /etc/ansible
sudo wget https://github.com/xezpeleta/Ansible-Proxmox-inventory/raw/master/proxmox.py
sudo chmod +x proxmox.py

Let's test it:

python /etc/ansible/proxmox.py \
  --url=https://<your-proxmox-url>:8006/ \
  --username=<proxmox-username> \
  --password=<proxmox-password> \
  --trust-invalid-certs \
  --list --pretty

If you get a list with all the VM in your Proxmox cluster, everything is ok.

I suggest you to use environment variables to store Proxmox credentials:

# You also can do that using the file setenv.sh
# Run the command: "source setenv.sh"
export PROXMOX_URL=https://10.0.0.1:8006/
export PROXMOX_USERNAME=[email protected]
export PROXMOX_PASSWORD=apiuser1234
export PROXMOX_INVALID_CERT=False

You may also save your settings in a JSON file with the same name of the Python script, in its same folder (e.g.: if the downloaded script is /etc/ansible/proxmox.py, the configuration file will be /etc/ansible/proxmox.json):

{
    "url": "https://10.0.0.1:8006/",
    "username": "[email protected]",
    "password": "apiuser1234",
    "validateCert": false
}

So now you can check it again without credential parameters:

python /etc/ansible/proxmox.py --list --pretty

Once you get this working, you can include the dynamic inventory in your ansible commands:

# Ping: connect to all VM in Proxmox using root user
ansible -i /etc/ansible/proxmox.py all -m ping -u root

Tricks

If you prefer, you can limit the commands to the group "running":

# Run a playbook in every running VM in Proxmox
ansible-playbook -i /etc/ansible/proxmox.py --limit='running' playbook-example/playbook.yml

Thanks to Matt Harris, you can now use the Notes field in Proxmox to add a host to a group:

Added support for Proxmox VE 4.x Added support for using the Notes field of a VM to define groups and variables: A well-formatted JSON object in the Notes field will be added to the _meta section for that VM. In addition, the "groups" key of this JSON object may be used to specify group membership:

{ "groups": ["utility", "databases"], "a": false, "b": true }

For instance, you can use the following JSON code in a VM host:

{ "groups": ["windows"] }

So if you want to exclude Windows machines, you could do the following:

# Run a playbook in every running Linux machine in Proxmox
ansible-playbook -i /etc/ansible/proxmox.py --limit='running,!windows' playbook-example/playbook.yml

Examples

Show Linux distribution version for every VM in Proxmox cluster:

 ansible all -i /etc/ansible/proxmox.py --limit 'running,!windows' -m setup -u root -a 'filter=ansible_distribution_*'

Check more info about Ansible setup module

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].