mlimaloureiro / ansible-maas-dynamic-inventory

Dynamic inventory for MAAS
14 stars 7 forks source link

Build Status License

ansible-maas-inventory

A inventory generator script to work with Ubuntu MAAS. It will generate your groups by looking at either the tags or hostname prefix you have in your MAAS nodes.

Requirements

Example

By looking at the tests it's quite easy to understand how it works. Just look at the fixtures file test_fixtures.py.

Set environment variables for MAAS_API_URL and MAAS_API_KEY. After that you can run

   $ python maas.py --list

and with ansible

    $ ansible -i maas.py some-playbook.yml

Output

{
    '_meta': {
        'hostvars': {
            'web-node1.dev': {
                'ansible_ssh_host': '127.0.0.1',
                'ansible_ssh_host_private': '127.0.0.1',
            },
            'web-node2.dev': {
                'ansible_ssh_host': '127.0.0.20',
                'ansible_ssh_host_private': '127.0.0.20',
            },
            'database1.dev': {
                'ansible_ssh_host': '192.168.0.1',
                'ansible_ssh_host_private': '192.168.0.1',
            },
            'database2.dev': {
                'ansible_ssh_host': '192.168.0.2',
                'ansible_ssh_host_private': '192.168.0.2',
            },
            'database3.dev': {
                'ansible_ssh_host': '192.168.0.4',
                'ansible_ssh_host_private': '192.168.0.4',
            },
        },
    },
    'web': {
        'hosts': [
            'web-node1.dev',
            'web-node2.dev',
        ],
        'vars': {},
    },
    'db': {
        'hosts': [
            'database1.dev',
            'database2.dev',
            'database3.dev',
        ],
        'vars': {},
    },
    'unnused_tag': {
        'hosts': [],
        'vars': {},
    },
}

Configuration

Configuration can be done by editing the maas.ini file or defining a new environment variable MAAS_INI_PATH indicating a new configuration file.

Available configuration:

[maas]
group_machines_by = tags | hostnames

[auth]
maas_api_key = XXXX:XXXX:XXXX
maas_api_url = https://docs.maas.io/MAAS/api/2.0/

[cache]
cache_path = ~/.ansible/tmp
cache_max_age = 300