{ "info": { "author": "Yoshiyuki-Nakahara", "author_email": "president.hanage@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7" ], "description": "# ansible-dynamic-inventory\nGenerate ansible dynamic inventory from static inventory.\nOptionally, Replace the host list of ansible static inventory with ServiceAddress registered in consul service. \n[![PyPI version](https://badge.fury.io/py/ansible-dynamic-inventory.svg)](https://badge.fury.io/py/ansible-dynamic-inventory)\n![Python Version](https://img.shields.io/badge/python-2.7-blue.svg)\n[![Build Status](https://travis-ci.org/Yoshiyuki-Nakahara/python-ansible-dynamic-inventory.svg?branch=master)](https://travis-ci.org/Yoshiyuki-Nakahara/python-ansible-dynamic-inventory)\n[![Code Health](https://landscape.io/github/Yoshiyuki-Nakahara/python-ansible-dynamic-inventory/master/landscape.svg?style=plastic)](https://landscape.io/github/Yoshiyuki-Nakahara/python-ansible-dynamic-inventory/master)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n# Assumed Use Case\n - Dynamic inventory conversion from Static inventory\n - Merge Dynamic inventory into Static inventory\n cf. gce.py(dynamic inventory) + group_vars(static inventory)\n - In the service operated using [Consul](https://www.consul.io/), inventory is dynamically generated without rewriting static inventory when host information changes dynamically, such as automatic failover\n - Confirm the inventory structure with plantuml\n\n# References\n [Ansible inventory](http://docs.ansible.com/ansible/intro_inventory.html)\n [Ansible Dynamic Inventory](http://docs.ansible.com/ansible/intro_dynamic_inventory.html)\n [Consul Catalog Service](https://www.consul.io/docs/agent/http/catalog.html#catalog_service)\n\n# Installation\n $ yum install gcc python-devel openssl-devel python-pip\n $ pip install --upgrade pip setuptools (optional)\n $ pip install ansible-dynamic-inventory\n\n# Prerequisite of Replace with Consul Service\n If the group name written in the ansible static inventory and the service name registered in the consul service are the same, the host name is replaced.\n\n# Usage\n # Stand alone execution\n $ ansible-dynamic-inventory --list\n\n # Stand alone execution and specified config file\n $ ansible-dynamic-inventory --list --config /path/to/config\n # or Specify config file with environment variable\n $ ANSIBLE_DYNAMIC_INVENTORY_CONFIG_PATH=/path/to/config ansible-dynamic-inventory --list\n\n # As Ansible Dynamic Inventory execution\n $ ansible-playbook --inventory ansible-dynamic-inventory /path/to/playbook.yml\n\n # outut in platuml format\n ansible-dynamic-inventory --plantuml\n\n# Configuration\n # vi ansible_dynamic_inventory.ini\n\n [ansible]\n # If both static_inventory_path and dynamic_inventory_path are specified,\n # merge dynamic_inventory into static_inventory\n # Either static_inventory_path or dynamic_inventory_path must not be empty\n\n # path to static inventory file or directory\n static_inventory_path = /path/to/ansible_inventory\n # path to dynamic inventory file\n #dynamic_inventory_path = ./gce.py\n dynamic_inventory_path =\n\n [consul]\n #url = http://localhost:8500/v1\n url =\n\n# Stand alone execution example\n ex. ansible:static_inventory_path = ${this repository}/sample_inventory\n\n $ ansible-dynamic-inventory --list\n {\n \"all\": {\n \"hosts\": [\n \"10.10.10.12\",\n \"10.10.10.13\",\n \"10.10.10.14\",\n \"10.10.10.15\",\n \"10.10.10.11\"\n ],\n \"children\": [\n \"ungrouped\",\n \"_mysql_replication_config\",\n \"mysql_backup_storage\"\n ],\n \"vars\": {\n \"datacenter\": \"vagrant\",\n \"net_cidr\": \"10.10.10.0/24\"\n }\n },\n \"_mysql_replication_config\": {\n \"hosts\": [\n \"10.10.10.12\",\n \"10.10.10.13\",\n \"10.10.10.14\",\n \"10.10.10.15\",\n \"10.10.10.11\"\n ],\n \"children\": [\n \"mysql_replication_master\",\n \"mysql_replication_slave\",\n \"mysql_replication_backup\",\n \"mysql_failover\"\n ],\n \"vars\": {\n \"mysql_replication_user\": \"root\",\n \"mysql_master_host\": \"{{groups.mysql_replication_master[0]}}\",\n \"mysql_master_group_name\": \"mysql_replication_master\",\n \"mysql_version\": \"5.6.34\",\n \"mysql_replication_group_name\": \"single\",\n \"mysql_slave_group_name\": \"mysql_replication_slave\"\n }\n },\n \"_meta\": {\n \"hostvars\": {\n \"10.10.10.15\": {},\n \"10.10.10.14\": {},\n \"10.10.10.11\": {},\n \"10.10.10.13\": {},\n \"10.10.10.12\": {\n \"hostvar\": \"dummy\"\n }\n }\n },\n \"mysql_backup_storage\": {\n \"hosts\": [\n \"10.10.10.15\"\n ],\n \"vars\": {\n \"mysql_backup_target_host\": \"{{groups.mysql_replication_backup[0]}}\",\n \"mysql_backup_storage_cron_file\": \"../../../../varfiles/vagrant/mysql/backup_storage/mysql_backup\"\n }\n },\n \"mysql_replication_slave\": {\n \"hosts\": [\n \"10.10.10.13\",\n \"10.10.10.14\"\n ]\n },\n \"mysql_replication_backup\": {\n \"hosts\": [\n \"10.10.10.15\"\n ]\n },\n \"ungrouped\": {},\n \"mysql_failover\": {\n \"hosts\": [\n \"10.10.10.11\"\n ],\n \"vars\": {\n \"mysql_failover_config_file\": \"../../../../varfiles/vagrant/mysql/failover/config.yml\"\n }\n },\n \"mysql_replication_master\": {\n \"hosts\": [\n \"10.10.10.12\"\n ]\n }\n }\n\n# output in platuml format example\n ex. ansible:static_inventory_path = ${this repository}/sample_inventory\n\n - Ansible host information is converted in plantuml \"object\"\n - Ansible group information is converted in plantuml \"package\"\n - Ansible group variable information is converted in plantuml \"class\"\n\n $ /usr/bin/ansible-dynamic-inventory --plantuml\n @startuml\n\n object 10.10.10.15\n object 10.10.10.14\n object 10.10.10.11\n object 10.10.10.13\n object 10.10.10.12 {\n \"hostvar\": \"dummy\"\n }\n\n package all {\n all_hosts - 10.10.10.12\n all_hosts - 10.10.10.13\n all_hosts - 10.10.10.14\n all_hosts - 10.10.10.15\n all_hosts - 10.10.10.11\n class all_vars\n all_children - ungrouped\n all_children - _mysql_replication_config\n all_children - mysql_backup_storage\n }\n class all_vars {\n \"datacenter\": \"vagrant\"\n \"net_cidr\": \"10.10.10.0/24\"\n }\n package _mysql_replication_config {\n _mysql_replication_config_hosts - 10.10.10.12\n _mysql_replication_config_hosts - 10.10.10.13\n _mysql_replication_config_hosts - 10.10.10.14\n _mysql_replication_config_hosts - 10.10.10.15\n _mysql_replication_config_hosts - 10.10.10.11\n class _mysql_replication_config_vars\n _mysql_replication_config_children - mysql_replication_master\n _mysql_replication_config_children - mysql_replication_slave\n _mysql_replication_config_children - mysql_replication_backup\n _mysql_replication_config_children - mysql_failover\n }\n class _mysql_replication_config_vars {\n \"mysql_replication_user\": \"root\"\n \"mysql_master_host\": \"{{groups.mysql_replication_master[0]}}\"\n \"mysql_master_group_name\": \"mysql_replication_master\"\n \"mysql_version\": \"5.6.34\"\n \"mysql_replication_group_name\": \"single\"\n \"mysql_slave_group_name\": \"mysql_replication_slave\"\n }\n package mysql_backup_storage {\n mysql_backup_storage_hosts - 10.10.10.15\n class mysql_backup_storage_vars\n }\n class mysql_backup_storage_vars {\n \"mysql_backup_target_host\": \"{{groups.mysql_replication_backup[0]}}\"\n \"mysql_backup_storage_cron_file\": \"../../../../varfiles/vagrant/mysql/backup_storage/mysql_backup\"\n }\n package mysql_replication_slave {\n mysql_replication_slave_hosts - 10.10.10.13\n mysql_replication_slave_hosts - 10.10.10.14\n }\n package mysql_replication_backup {\n mysql_replication_backup_hosts - 10.10.10.15\n }\n package ungrouped {}\n package mysql_failover {\n mysql_failover_hosts - 10.10.10.11\n class mysql_failover_vars\n }\n class mysql_failover_vars {\n \"mysql_failover_config_file\": \"../../../../varfiles/vagrant/mysql/failover/config.yml\"\n }\n package mysql_replication_master {\n mysql_replication_master_hosts - 10.10.10.12\n }\n\n @enduml\n\n# License\nMIT License", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Yoshiyuki-Nakahara /python-ansible-dynamic-inventory", "keywords": "ansible dynamic inventory consul", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "ansible-dynamic-inventory", "package_url": "https://pypi.org/project/ansible-dynamic-inventory/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ansible-dynamic-inventory/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/Yoshiyuki-Nakahara /python-ansible-dynamic-inventory" }, "release_url": "https://pypi.org/project/ansible-dynamic-inventory/0.3.2/", "requires_dist": null, "requires_python": null, "summary": "A command line interface for Slack", "version": "0.3.2" }, "last_serial": 2828259, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "20089f105a18f1fc335ff9b852057cf4", "sha256": "9dc5a89fc46af7eb738c3fc98a377c551f9f80af2da7ca870481514ce176f269" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.1.2.tar.gz", "has_sig": false, "md5_digest": "20089f105a18f1fc335ff9b852057cf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5736, "upload_time": "2017-02-19T17:04:10", "url": "https://files.pythonhosted.org/packages/01/57/4c4e7948d7bcd101243532be445569129feb8acf88dd60b446d94c17796c/ansible-dynamic-inventory-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "302c8adc982848a912e239d880b78b10", "sha256": "8720a604921df9c4c9d123c0becaaf7d1d933e5c869d701f068889333e8ff812" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.1.3.tar.gz", "has_sig": false, "md5_digest": "302c8adc982848a912e239d880b78b10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5727, "upload_time": "2017-02-19T17:08:14", "url": "https://files.pythonhosted.org/packages/7a/5e/df9b6fbdff8ccac25e77f97b46193257773ed9fe0d99cbed07dfee33fc2d/ansible-dynamic-inventory-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "09386c08a686146eb43b67dda1fe5025", "sha256": "4a182677479f0ddef6de17cd42fff9369d2a5ce142afa9ac0e014f3fb4841cfc" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.1.4.tar.gz", "has_sig": false, "md5_digest": "09386c08a686146eb43b67dda1fe5025", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5926, "upload_time": "2017-02-20T07:58:10", "url": "https://files.pythonhosted.org/packages/82/37/ba90db21c27ffa6fdc6ebd47d4c9fbd0cb7f0770dc736d8e3950d7c1e86d/ansible-dynamic-inventory-0.1.4.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "0c43288a368c50d2f3821512359b9556", "sha256": "1cdee45fbe38bd1a92cad6784b3e9f8d638147a6b8d11c66dd8c321915f028bb" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.1.6.tar.gz", "has_sig": false, "md5_digest": "0c43288a368c50d2f3821512359b9556", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5925, "upload_time": "2017-02-20T16:16:17", "url": "https://files.pythonhosted.org/packages/c6/2b/a417de19fed34f4ab3f576e1a356e996d20f1c9bc4fc623656ffe484feca/ansible-dynamic-inventory-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "221f0d7624fa9628da07fa855eb85648", "sha256": "35428fb9184f60023cdd3a6a6583abbd914e4114bf8d017f2f13faa3a2123775" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.1.7.tar.gz", "has_sig": false, "md5_digest": "221f0d7624fa9628da07fa855eb85648", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5953, "upload_time": "2017-02-21T07:31:53", "url": "https://files.pythonhosted.org/packages/e6/50/9497738bc14dbb420e087ba1858c182a872664856995fa338371912b8389/ansible-dynamic-inventory-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "a9a4b4bd366cb18ffae1b78d1b408710", "sha256": "09720c514d54cc5a5dbc78dad47bc372b36595bcba998a7d0ab37996d9ae9dbf" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.1.8.tar.gz", "has_sig": false, "md5_digest": "a9a4b4bd366cb18ffae1b78d1b408710", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6151, "upload_time": "2017-02-21T11:05:48", "url": "https://files.pythonhosted.org/packages/17/84/83802e371cb5aa3959e6a29775f14706d096e94f1144bb016023828b5f96/ansible-dynamic-inventory-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "344f4a95b848b3a5f00baf5f2c116133", "sha256": "848ece879ad8abdb4274dc61bf578c2f8a61e707ffb016e20de49156eb949c68" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.1.9.tar.gz", "has_sig": false, "md5_digest": "344f4a95b848b3a5f00baf5f2c116133", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6186, "upload_time": "2017-02-21T11:42:04", "url": "https://files.pythonhosted.org/packages/01/03/6be810d4c7e1c3bfde21dae679f719ade1085c0e71d4d854a24f55186afd/ansible-dynamic-inventory-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b2f307be51ddd1a7fa8473d028a30c03", "sha256": "23cfb111333a678ad4f7f6165f1536713efceaa388209a7bfae3d80d7a956dc4" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.0.tar.gz", "has_sig": false, "md5_digest": "b2f307be51ddd1a7fa8473d028a30c03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6201, "upload_time": "2017-02-21T12:15:16", "url": "https://files.pythonhosted.org/packages/00/94/0377e28308e159ed0928d16d071e39657dbbe4b68930650fc152340160de/ansible-dynamic-inventory-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "6fda6c2174de4c45a5ac076aa60ce77d", "sha256": "189c58550af6f47e60a20a84b86e26f9e6a623593d826eceb7f7ca6bbdcb952d" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.1.tar.gz", "has_sig": false, "md5_digest": "6fda6c2174de4c45a5ac076aa60ce77d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6240, "upload_time": "2017-02-22T01:30:51", "url": "https://files.pythonhosted.org/packages/b6/32/b750dce60abf7add48e7b421a70572b2d2f61dec225a55a7b77cd038da03/ansible-dynamic-inventory-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "b5e7623dd7361881906c7bfa5c0c69e9", "sha256": "7d4c79b33ba24c54f45636fcdfa7484f56a5769e5c21634dedd9a76d709589bd" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b5e7623dd7361881906c7bfa5c0c69e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6294, "upload_time": "2017-02-22T04:02:25", "url": "https://files.pythonhosted.org/packages/86/c9/a2925e2d04c0a2f336eb92449c77bd754349161b17c67a29c291a538e2b7/ansible-dynamic-inventory-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "a854e879caaa90e9de3bdfc86a2b128b", "sha256": "8361b9602171f3af17b6752dc72068674e65f59dffe21042d6c410739d5effa8" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.3.tar.gz", "has_sig": false, "md5_digest": "a854e879caaa90e9de3bdfc86a2b128b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6296, "upload_time": "2017-02-22T06:46:49", "url": "https://files.pythonhosted.org/packages/ff/03/879aaa65270833c540dbb79d480e18cd51cc3df5a4011d8f980c20fff510/ansible-dynamic-inventory-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "908aed730313020df7baf86a736585e3", "sha256": "253df79c70263a0bc1e2c91e6f5f1f3534f0b1264f3f1e95528c7d4f7d801eda" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.4.tar.gz", "has_sig": false, "md5_digest": "908aed730313020df7baf86a736585e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6300, "upload_time": "2017-02-22T07:29:34", "url": "https://files.pythonhosted.org/packages/f0/a5/5faf43841723425801614113a7a3818b8c6b92c9f1ab75e1119534f66a26/ansible-dynamic-inventory-0.2.4.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "a8791388f12921f0585d6ac3ea3820a3", "sha256": "f00575806cf5c955633b05373229ee66b99cff5ea83978c621803be66cc41603" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.6.tar.gz", "has_sig": false, "md5_digest": "a8791388f12921f0585d6ac3ea3820a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6363, "upload_time": "2017-03-05T09:32:00", "url": "https://files.pythonhosted.org/packages/33/b3/a0df175b12991e7e777cd1132a1680ef286c52fb599a5ff1895e0be4f232/ansible-dynamic-inventory-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "60c741e2ba54574150259a8c576a9622", "sha256": "47f49fca83ef00f8ea26d183210e6c49ae9cfadd0cb1356b79d8a4289c3807ad" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.7.tar.gz", "has_sig": false, "md5_digest": "60c741e2ba54574150259a8c576a9622", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6947, "upload_time": "2017-03-20T03:50:17", "url": "https://files.pythonhosted.org/packages/2b/85/98b5d07da43d6938f4c2bd6038117f996a65c5a3c22b2afe844f6fb0d5fa/ansible-dynamic-inventory-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "4812d672e4b07171ff72f21cc3dcc28b", "sha256": "d060ba5e1173c5d2371446b62b996602c9d2fc21fa529ec3bb47e968d55ca0e8" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.8.tar.gz", "has_sig": false, "md5_digest": "4812d672e4b07171ff72f21cc3dcc28b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7670, "upload_time": "2017-03-20T04:51:08", "url": "https://files.pythonhosted.org/packages/2c/f2/ea24f13166e594f37df65a0ba838f06b4079f96ea1e9a3132cce56d3393d/ansible-dynamic-inventory-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "15eaf143cfba1975273fc31f141fd3dd", "sha256": "7837218cd9e8c2b852eb3add31f3155b44d3f7b0065f31466ec1a572347f95df" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.2.9.tar.gz", "has_sig": false, "md5_digest": "15eaf143cfba1975273fc31f141fd3dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8128, "upload_time": "2017-03-26T19:19:42", "url": "https://files.pythonhosted.org/packages/1a/8a/f473dde90f6c1b443bdded5b4e4523ada315215e358eece32332a9028c16/ansible-dynamic-inventory-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0e3d665434850404985c07c0ed060e60", "sha256": "08242c4a08cf5686aa24d5793058551e659ca404d7543386e945f455dd6a8e51" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.3.0.tar.gz", "has_sig": false, "md5_digest": "0e3d665434850404985c07c0ed060e60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7919, "upload_time": "2017-03-27T07:27:45", "url": "https://files.pythonhosted.org/packages/54/e9/21cc0cdea8b071f077dd66b509deb5897f3559c907315f6c3c7caf4d021d/ansible-dynamic-inventory-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "b485702184f02b2a27edaaeba5c55399", "sha256": "84ad10c27290b1edd65a0fc41324e8193382f662b81dff9795a122b33568b69c" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b485702184f02b2a27edaaeba5c55399", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7939, "upload_time": "2017-04-25T07:54:25", "url": "https://files.pythonhosted.org/packages/f8/97/45f71211416810d9866db46633e693b124206f6a0f720d8bc4c5c9d0ad73/ansible-dynamic-inventory-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "0216ac200b5d7fe7feff6bc3745a2037", "sha256": "07ab54e2e587cb645792649d233d45deb144d304321ce917a4fb2b820f5e855b" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.3.2.tar.gz", "has_sig": false, "md5_digest": "0216ac200b5d7fe7feff6bc3745a2037", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8075, "upload_time": "2017-04-25T09:26:38", "url": "https://files.pythonhosted.org/packages/32/9c/cab5ba32eb52f0cbd6bee000bd0645514ca170c5975a2ec700ca0d0d3b9b/ansible-dynamic-inventory-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0216ac200b5d7fe7feff6bc3745a2037", "sha256": "07ab54e2e587cb645792649d233d45deb144d304321ce917a4fb2b820f5e855b" }, "downloads": -1, "filename": "ansible-dynamic-inventory-0.3.2.tar.gz", "has_sig": false, "md5_digest": "0216ac200b5d7fe7feff6bc3745a2037", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8075, "upload_time": "2017-04-25T09:26:38", "url": "https://files.pythonhosted.org/packages/32/9c/cab5ba32eb52f0cbd6bee000bd0645514ca170c5975a2ec700ca0d0d3b9b/ansible-dynamic-inventory-0.3.2.tar.gz" } ] }