Generate Ansible Inventory
Project description
|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.
Head over to the `wiki page <https://github.com/rsjethani/ansinv/wiki#welcome-to-the-ansinv-wiki>`_ for more expanation about this project.
Installation
************
Simply say::
pip install ansinv
Usage
*****
Working with ansible inventory hosts
====================================
Creating a host object with optional `host variables <https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#host-variables>`_:
----------------------------------------
::
host1 = ansinv.AnsibleHost("192.168.10.11", affinity=12, scan="no")
Get a host object's ip/name:
----------------------------
::
print(host1.name)
Read and update a host object's host variables. The ``hostvars`` attribute is essentially a dictionary:
-------------------------------------------------------------------------------------------------------
::
print(host1.hostvars["scan"])
host1.hostvars["affinity"] = 5
host1.hostvars.update(x=100)
Working with ansible inventory groups
=====================================
Creating a group object with optional `group variables <https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#group-variables>`_:
-----------------------------------------
::
group1 = ansinv.AnsibleGroup("group1", ssh_port=8800)
Read and update a group object's group variables. The ``groupvars`` attribute is essentially a dictionary:
----------------------------------------------------------------------------------------------------------
::
print(group1.groupvars["ssh_port"])
group1.groupvars["ssh_port"] = 22
group1.groupvars.update(x=100)
Adding hosts to a group:
------------------------
::
group1.add_hosts(host1, host2, ...) # host1, host2, etc. must already exist
group1.add_hosts(ansinv.AnsibleHost("192.168.12.12", hostvar1="value")) # creating and adding hosts at the same time
**Please note:** Adding a host object actually creates a **copy** of the host object under the group object. So to make modifications to a host object after it has been added, use ``AnsibleGroup.host(hostname)`` method.
Get access to a host object using ``AnsibleGroup.host(hostname)`` method:
-------------------------------------------------------------------------
::
group1.host("192.168.1.12").hostvars["hostvar1"] = "new value"
Get a list of all host objects in a group:
------------------------------------------
::
group1.hosts
Establish parent-child relation between groups:
-----------------------------------------------
::
child1 = AnsibleGroup("master")
child2 = AnsibleGroup("worker")
parent = AnsibleGroup("cluster")
parent.add_children(child1, child2)
parent.add_children(parent) # ValueError when trying to add itself as a child
child1.add_children(parent) # ValueError when trying to add a parent group as a child
Check whether the group is the parent of a given group:
-------------------------------------------------------
::
group1.is_parent_of(group2) # Returns a bool value
Check whether the group is the child of a given group:
------------------------------------------------------
::
group1.is_child_of(group2) # Returns a bool value
Get a list of names (not objects) of all child groups:
------------------------------------------------------
::
group1.children # ["child1", "child2", ...]
For more explanation and a full example please refer the `wiki page <https://github.com/rsjethani/ansinv/wiki#welcome-to-the-ansinv-wiki>`_.
.. |pic1| image:: https://img.shields.io/badge/License-MIT-yellow.svg
:target: https://opensource.org/licenses/MIT
.. |pic2| image:: https://badge.fury.io/py/ansinv.svg
:target: https://pypi.org/project/ansinv
.. |pic3| image:: https://travis-ci.com/rsjethani/ansinv.svg?branch=master
:target: https://travis-ci.com/rsjethani/ansinv
.. |pic4| image:: https://codecov.io/gh/rsjethani/ansinv/branch/master/graph/badge.svg
:target: https://codecov.io/gh/rsjethani/ansinv
####################################
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.
Head over to the `wiki page <https://github.com/rsjethani/ansinv/wiki#welcome-to-the-ansinv-wiki>`_ for more expanation about this project.
Installation
************
Simply say::
pip install ansinv
Usage
*****
Working with ansible inventory hosts
====================================
Creating a host object with optional `host variables <https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#host-variables>`_:
----------------------------------------
::
host1 = ansinv.AnsibleHost("192.168.10.11", affinity=12, scan="no")
Get a host object's ip/name:
----------------------------
::
print(host1.name)
Read and update a host object's host variables. The ``hostvars`` attribute is essentially a dictionary:
-------------------------------------------------------------------------------------------------------
::
print(host1.hostvars["scan"])
host1.hostvars["affinity"] = 5
host1.hostvars.update(x=100)
Working with ansible inventory groups
=====================================
Creating a group object with optional `group variables <https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#group-variables>`_:
-----------------------------------------
::
group1 = ansinv.AnsibleGroup("group1", ssh_port=8800)
Read and update a group object's group variables. The ``groupvars`` attribute is essentially a dictionary:
----------------------------------------------------------------------------------------------------------
::
print(group1.groupvars["ssh_port"])
group1.groupvars["ssh_port"] = 22
group1.groupvars.update(x=100)
Adding hosts to a group:
------------------------
::
group1.add_hosts(host1, host2, ...) # host1, host2, etc. must already exist
group1.add_hosts(ansinv.AnsibleHost("192.168.12.12", hostvar1="value")) # creating and adding hosts at the same time
**Please note:** Adding a host object actually creates a **copy** of the host object under the group object. So to make modifications to a host object after it has been added, use ``AnsibleGroup.host(hostname)`` method.
Get access to a host object using ``AnsibleGroup.host(hostname)`` method:
-------------------------------------------------------------------------
::
group1.host("192.168.1.12").hostvars["hostvar1"] = "new value"
Get a list of all host objects in a group:
------------------------------------------
::
group1.hosts
Establish parent-child relation between groups:
-----------------------------------------------
::
child1 = AnsibleGroup("master")
child2 = AnsibleGroup("worker")
parent = AnsibleGroup("cluster")
parent.add_children(child1, child2)
parent.add_children(parent) # ValueError when trying to add itself as a child
child1.add_children(parent) # ValueError when trying to add a parent group as a child
Check whether the group is the parent of a given group:
-------------------------------------------------------
::
group1.is_parent_of(group2) # Returns a bool value
Check whether the group is the child of a given group:
------------------------------------------------------
::
group1.is_child_of(group2) # Returns a bool value
Get a list of names (not objects) of all child groups:
------------------------------------------------------
::
group1.children # ["child1", "child2", ...]
For more explanation and a full example please refer the `wiki page <https://github.com/rsjethani/ansinv/wiki#welcome-to-the-ansinv-wiki>`_.
.. |pic1| image:: https://img.shields.io/badge/License-MIT-yellow.svg
:target: https://opensource.org/licenses/MIT
.. |pic2| image:: https://badge.fury.io/py/ansinv.svg
:target: https://pypi.org/project/ansinv
.. |pic3| image:: https://travis-ci.com/rsjethani/ansinv.svg?branch=master
:target: https://travis-ci.com/rsjethani/ansinv
.. |pic4| image:: https://codecov.io/gh/rsjethani/ansinv/branch/master/graph/badge.svg
:target: https://codecov.io/gh/rsjethani/ansinv
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
ansinv-2.0.2.tar.gz
(3.6 kB
view hashes)
Built Distribution
Close
Hashes for ansinv-2.0.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 672f98e73a6f08be530f3e90a0856175174647e59e2726762e2448e580a4498c |
|
MD5 | f13f73f4fdd42e2c41dbe9f753f05a83 |
|
BLAKE2b-256 | b67f302218f8d32866a40ced2934cea1c9493285ee41ba90e99686c46a65e151 |