diff --git a/README.md b/README.md index 1afbdff..37d3cae 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,84 @@ # Ansible-Proxmox-inventory -Proxmox dynamic inventory for Ansible + +## About + +Proxmox dynamic inventory for Ansible. Based on [original plugin](https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/proxmox.py) from Mathieu Gauthier-Lafaye + +Changes: +- Added option to ignore invalid SSL certificate (by @bmillemathias) [link](https://raw.githubusercontent.com/bmillemathias/ansible/1331d5fe2bd5e79be8a6221517a8fdd1e177baab/contrib/inventory/proxmox.py) +- Compatible with a Proxmox cluster (@xezpeleta) +- Added group 'running' (@xezpeleta) + +## Instructions + +Download **proxmox.py** to */etc/ansible/* directory: + +```sh +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: + +```sh +python /etc/ansible/proxmox.py \ + --url=https://:8006 \ + --username= \ + --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: + +```sh +export PROXMOX_URL=http://10.0.0.1:8006 +export PROXMOX_USERNAME=apiuser@pve +export PROXMOX_PASSWORD=apiuser1234 +export PROXMOX_INVALID_CERT=False +``` + +So now you can check it again without credential parameters: + +```sh +python /etc/ansible/proxmox.py --list --pretty +``` + +Once you get this working, you can include the dynamic inventory in your ansible commands: + +```sh +ansible -i /etc/ansible/proxmox.py ... +``` + +## Tricks + +If you prefer, you can limit the commands to the group "running": + +```sh +ansible-playbook -i /etc/ansible/proxmox.py --limit 'running' playbook.yml +``` + +Thanks to Matt Harris, you can 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: + +```json +{ "groups": ["windows"] } +``` + +So if you want to exclude Windows machines, you could do the following: + +```sh +ansible-playbook -i /etc/ansible/proxmox.py --limit 'running,!windows' playbook.yml +```