https://github.com/lig/pyventory
Ansible Inventory implementation that uses Python syntax
https://github.com/lig/pyventory
ansible inventory python python3 terraform
Last synced: 8 months ago
JSON representation
Ansible Inventory implementation that uses Python syntax
- Host: GitHub
- URL: https://github.com/lig/pyventory
- Owner: lig
- License: mit
- Created: 2016-11-25T14:14:16.000Z (over 9 years ago)
- Default Branch: main
- Last Pushed: 2022-12-09T08:33:07.000Z (over 3 years ago)
- Last Synced: 2025-02-05T12:08:02.530Z (over 1 year ago)
- Topics: ansible, inventory, python, python3, terraform
- Language: Python
- Homepage: https://pyventory.readthedocs.io
- Size: 132 KB
- Stars: 24
- Watchers: 5
- Forks: 3
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
[](https://github.com/lig/pyventory/actions)
# Pyventory
Ansible Inventory implementation that uses Python syntax
## Install
```shell
pip3 install pyventory
```
## Features
* Modular inventory.
* Assests inheritance using Python classes.
* Support for multiple inheritance.
* Support for mixins.
* Support for vars templating using [Python string formatting](https://docs.python.org/3/library/string.html#format-specification-mini-language).
* Python 3 (>=3.6) support.
* Python 2 is not supported.
## Usage
Create `hosts.py` and make it executable.
A short example of the `hosts.py` contents:
```python
#!/usr/bin/env python3
from pyventory import Asset, ansible_inventory
class All(Asset):
run_tests = False
use_redis = False
redis_host = 'localhost'
minify = False
version = 'develop'
class Staging(All):
run_tests = True
staging = Staging()
ansible_inventory(locals())
```
Consider a [more complex example](tests/example) which passes the following [json output](tests/example.json) to Ansible.
Run Ansible playbook with the `-i hosts.py` key:
```shell
ansible-playbook -i hosts.py site.yml
```
Notice that you need to have your inventory package in `PYTHONPATH`.