Dynamic Inventory

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

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

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”
],