Hi,
Is there any script that we can use to construct dynamic inventory file for Openstack?
I downloaded the script but it gives a JSON output. Does anyone have a script to convert JSON to update a inventory file with list of IP address?
You can download the latest version of the OpenStack inventory script at: https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack.py
Thanks,
Govind
sivel
(sivel)
2
The dynamic inventory scripts are supposed to be used in place of a ini formatted inventory.
Instead of using -i /path/to/ini/inventory
you would use -i /path/to/openstack.py
To make that possible, the openstack.py
file needs to be marked as executable.
Thanks Matt.
How do i execute this dynamic inventory against my playbook? When i tried the below it says no hosts matches.
#ansible-playbook jenkins_mesos_slave.yml -i openstack.py --limit jmesosslv-cmce-02p.sys.comcast.net
Here is my playbook. How can i ensure my playbook can run against this dynamic inventory file?
#vi jenkins_mesos_slave.yml
- hosts: jenkins_mesos_slave_prod
become: yes
become_method: sudo
roles:
- vmsetup
- mesos_slave
sivel
(sivel)
4
Effectively ansible is calling that inventory like ./openstack.py --list
You would need to inspect the output to see what is available.
You are specifying a hosts entry of jenkins_mesos_slave_prod
, so the dynamic inventory would need to return that group for it to be used.
Hi Matt,
Here is the output from running openstack.py --list. Took a snippet of it.
“interface_ip”: “96.119.246.10”,
“key_name”: “ssd-xplat”,
“metadata”: {
“cluster_name”: “jenkins_mesos_master”,
“group”: “mesos_masters”,
“master_count”: “3”,
“myid”: “3”
},
$ ansible-playbook jenkins_mesos_master.yml -i openstack.py --limit 96.119.246.10 --check
ERROR! Specified --limit does not match any hosts
Here is my jenkins_mesos_master.yml playbook
- hosts: mesos_masters (should this be the group name that i need to use? )
serial: “50%”
become: yes
become_method: sudo
roles:
- vmsetup
- mesos_master
Hi Matt,
How can i force openstack.py script to write IPv4 address? For some reason the JSON file has IPv6 address.
“mesos_masters”: [
“b9d2e61e-0653-4a1f-a472-c5f15a017eae”,
“ca8c9fc7-337f-4f92-baac-7fe41f6475ce”,
“a904e509-b4b1-479e-8137-17bb30b400c9”
],
I tried the below and it worked
ansible-playbook jenkins_mesos_master.yml -i openstack.py --limit a904e509-b4b1-479e-8137-17bb30b400c9 --check
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [a904e509-b4b1-479e-8137-17bb30b400c9]
Thanks,
Govind
Sorry, it’s the UUID of the machine. Any way we can have it to write IP address?
“mesos_masters”: [
“b9d2e61e-0653-4a1f-a472-c5f15a017eae”,
“ca8c9fc7-337f-4f92-baac-7fe41f6475ce”,
“a904e509-b4b1-479e-8137-17bb30b400c9”
],