Generate Ansible Inventory
Project description
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.
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:
Invoke Terraform with desired configuration. After finishing, terraform provides with a terraform state file.
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.
Invoke Ansible plays with the inventory file from above step to configure software on the infrastrucure.
Cluster is ready to use :)
Generating the Inventory file
How are we going to generate inventory file in step #2 above? Options:
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.
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ansinv-1.3.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fccba228cec8419acc0c2ebd45c12bb4f47996634b0c1df1d44c746cde15b4c |
|
MD5 | 9e5371747168d92a2ce7284e3c02926a |
|
BLAKE2b-256 | 84d00f2ba2faf2ac58383327200a2ad7267376bf37fb38226ced1c5a31beeb62 |