mikerain / ansible-inventory

Ansible dynamic inventory example

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dynamically build Ansible inventory

This is a dynamic alternative to Ansible static inventory file

Instead of writing a static hosts file with groups and hosts, it simply reads the YAML files in host_vars/*.yml and creates a dynamic inventory based on them.

The dynamic inventory script is called inventory in this example and simply by running it you should get some json output:

~/ansible-inventory (master) $ ./inventory.py | python -m json.tool
{
    "databases": {
        "hosts": [
            "db1.example.com"
        ]
    },
    "dc_atlanta": {
        "hosts": [
            "db1.example.com",
            "web1.example.com",
            "worker4.example.com"
        ]
    },
    "dc_london": {
        "hosts": [
            "web2.example.com"
        ]
    },
    "webservers": {
        "hosts": [
            "web1.example.com",
            "web2.example.com"
        ]
    },
    "workers": {
        "hosts": [
            "worker4.example.com"
        ]
    }
}

You also need to set the inventory script in ansible.cfg:

~/ansible-inventory (master) $ cat ansible.cfg
[defaults]
inventory = ./inventory

And you are good to go. When running ansible and ansible-playbook it will read the output from the dynamic inventory. Adding/removing a host is as simple as adding/removing a file in host_vars/. Just make sure that host_fqdn and host_groups is set.

More info

About

Ansible dynamic inventory example

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 100.0%