digitalocean-inventory

An ansible dynamic inventory for DigitalOcean


License
MIT
Install
pip install digitalocean-inventory==1.1.0

Documentation

DigitalOcean inventory

An ansible dynamic inventory for DigitalOcean

Status

Source Shields
Project license release
Raised issues pulls

Installation

pip install digitalocean_inventory

Usage

Export the project environment variables:

export DO_PROJECT=example
export DO_ENV=production
export DO_SSH_DIR=/Users/joel/.ssh/example

Export an access token:

export DO_ACCESS_TOKEN=<token>

The pacakges exposes the executable:

digitalocean-inventory --list

Tags and inventory metadata are compiled into the output:

{
  "meta": {
    "hostvars": {
      "123.123.123.123": {
        "ansible_python_interpreter": "/usr/bin/python3",
        "ansible_ssh_extra_args": "-o StrictHostKeyChecking=no",
        "ansible_ssh_private_key_file": "/Users/joel/.ssh/example/example-production-0"
      }
    }
  },
  "all": {
    "hosts": [
      "123.123.123.123"
    ],
    "vars": {},
    "children": {}
  },
  "production": {
    "hosts": [
      "123.123.123.123"
    ]
  },
  "manager": {
    "hosts": [
      "123.123.123.123"
    ]
  }
}

The executable has support for host, list and debug flags:

usage: Digital ocean inventory [-h] [--host [HOST]] [--list [LIST]] [--debug [DEBUG]]
                               [--private-ips [PRIVATE_IPS]]

optional arguments:
  --host [HOST]
  --list [LIST]
  --debug [DEBUG]
  --private-ips [PRIVATE_IPS]

To use with the ansible-playbook cli:

inventory.py:

#!/usr/bin/env python

from digitalocean_inventory import fetch

if __name__ == '__main__':
    fetch()
ansible-playbook -i inventory.py <playbook>

You can consume the inventory in order to mutate it before outputting:

#!/usr/bin/env python

from digitalocean_inventory import fetch

if __name__ == '__main__':
    inventory = fetch(stdout=False)
    print(inventory)

Docs

Additional details are available in the Documentation.

Tests

Install dependencies:

pip install .[tests]

Run with pytest

pytest

Versioning

SemVer is used for versioning. For a list of versions available, see the tags on this repository.

Bump2version is used to version and tag changes. For example:

bump2version patch

Releases are made on every major change.

Author

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

None yet!