Skip to main content

pic1 pic2 pic3 pic4

A Simple Ansible Inventory Generator

Overview

This simple library makes it easier to write glue code between infrastructure bringup/deployment and software provisioning stages of a one-click deployment.

Use Case

Picture the following Docker Swarm cluster that needs to be brought up and provisioned all in one go. The infrastructure has one manager, two workers, and a cluster heath monitoring node.

pic5

Automation Steps

Let’s say you are using Terraform tool to bringup cluster on AWS and using Ansible for software provisioning. Following can be the basic steps:

  1. Invoke Terraform with desired configuration. After finishing, terraform provides with a terraform state file.

  2. Use information (like host IP addresses) from this terraform.tfstate file to generate an inventory file to be given to Ansible in the next step.

  3. Invoke Ansible plays with the inventory file from above step to configure software on the infrastrucure.

  4. Cluster is ready to use :)

Generating the Inventory file

How are we going to generate inventory file in step #2 above? Options:

  1. Creating manually by looking at the terraform state file and hand-editing the inventory file. It works! but not inline with one-click deployment philosophy.

  2. Writing code to parse the terraform state file for required information and generating inventory file on the fly. This is where ansinv can help.

While writing code to parse terraform state file and generating the the inventory file in INI format, we have to write quite a bit of boiler-plate code which doesn’t change from one deployment to another. For example: generating inventory file’s INI template, dealing with hosts, groups and their inter-relation, adding hostvars and groupvars at proper place in the inventory file etc. Here ansinv comes to the rescue and wraps all that common functionality into a nice and easy to use API.

A Code Example

If you browse the example directory, you will find example/generate_inventory.py python file. This file reads example/terraform.tfstate.example and generates inventory file similar to example/inventory.example. FYI, the ordering of sections in the inventory file can be different every time you generate it. But this doesn’t matter.

Release files for ansinv 1.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ansinv 1.3.3
File Size Uploaded
ansinv-1.3.3.tar.gz 4.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ansinv 1.3.3
File Interpreter ABI Platform
ansinv-1.3.3-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 9.9 kB

Release files / ansinv-1.3.3.tar.gz

Download URL ansinv-1.3.3.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6d927190e8ed21e1725eadbff42e26997103f03470aa448934683beed6cd5f58
BLAKE2b-256 checksum
How to use checksums
e28bb997af1fb6c61a014dabb801671b801d876469f6436c3192ffa34fcaf665
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

Release files / ansinv-1.3.3-py2.py3-none-any.whl

Download URL ansinv-1.3.3-py2.py3-none-any.whl
Size 5.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
1fccba228cec8419acc0c2ebd45c12bb4f47996634b0c1df1d44c746cde15b4c
BLAKE2b-256 checksum
How to use checksums
84d00f2ba2faf2ac58383327200a2ad7267376bf37fb38226ced1c5a31beeb62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

Release history Release notifications | RSS feed

4.0.0

2 release files

3.0.0

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

This release

1.3.3 This release

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page