Dynamic Inventory

160 views
Skip to first unread message

Govindaraj Venkatesan

unread,
Feb 16, 2016, 5:05:30 PM2/16/16
to Ansible Project
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

Matt Martz

unread,
Feb 16, 2016, 5:08:03 PM2/16/16
to ansible...@googlegroups.com
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.

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/b038f3e7-7e79-4348-9464-0271f815459f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Matt Martz
@sivel
sivel.net

govindaraj

unread,
Feb 16, 2016, 5:12:33 PM2/16/16
to ansible...@googlegroups.com
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

--
You received this message because you are subscribed to a topic in the Google Groups "Ansible Project" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ansible-project/nlgO5fheU7g/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ansible-proje...@googlegroups.com.

To post to this group, send email to ansible...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--

Thanks & Regards
Govindaraj Venkatesan

Matt Martz

unread,
Feb 16, 2016, 5:18:53 PM2/16/16
to ansible...@googlegroups.com
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.


For more options, visit https://groups.google.com/d/optout.

govindaraj

unread,
Feb 16, 2016, 7:25:28 PM2/16/16
to ansible...@googlegroups.com
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




For more options, visit https://groups.google.com/d/optout.

govindaraj

unread,
Feb 16, 2016, 7:36:00 PM2/16/16
to ansible...@googlegroups.com
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

govindaraj

unread,
Feb 17, 2016, 9:49:11 AM2/17/16
to ansible...@googlegroups.com
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"
  ], 

Reply all
Reply to author
Forward
0 new messages