ign8inventory
Provision a production-ready NetBox DCIM/IPAM instance in minutes — Hetzner Cloud VM, Cloudflare DNS, Let's Encrypt TLS, PostgreSQL, and an opinionated default layout, all from a single CLI command.
pip install ign8inventory
ign8inventory setenv # configure credentials
ign8inventory up # provision everything
ign8inventory bootstrap # populate regions, sites, locations
Features
- Single command provisioning — one
ign8inventory upcreates the Hetzner VM, DNS record, TLS certificate, and a fully configured NetBox instance - Idempotent — re-running any command is safe; existing resources are detected and reused
- No Terraform, no Ansible — pure Python using the official Hetzner and Cloudflare SDKs
- Database backup —
ign8inventory backupexports the PostgreSQL database via SSH and commits it to your repository - Live server seeding —
ign8inventory seedqueries your Hetzner projects and upserts running servers into NetBox - Vault integration — secrets in
infrastructure.ymlcan be stored in and resolved from HashiCorp Vault
Requirements
- Python 3.9+
- A Hetzner Cloud account and API token
- A Cloudflare account managing your domain, with a Zone DNS Edit token
Installation
pipx install ign8inventory # recommended
# or
pip install ign8inventory
Quickstart
# 1. Configure — writes a .env file with all credentials
ign8inventory setenv
# 2. Provision — Hetzner VM + Cloudflare DNS + TLS + NetBox
ign8inventory up
# 3. Bootstrap — create regions, sites, and availability zones
ign8inventory bootstrap
# 4. Backup — export the database and commit it
ign8inventory backup
Run ign8inventory quickstart for the full step-by-step guide.
Commands
| Command | Description |
|---|---|
up |
Provision Hetzner VM, Cloudflare DNS, TLS, and install NetBox |
bootstrap |
Populate NetBox with regions, sites, and locations |
seed |
Query live Hetzner projects and upsert servers into NetBox |
backup |
Export the PostgreSQL database via SSH, save to backup/netbox.sql, and commit |
show-users |
List all NetBox users |
add-user |
Create a new NetBox user |
vault-put |
Push infrastructure.yml secrets to HashiCorp Vault |
setenv |
Interactive credential setup — writes .env |
destroy |
Tear down the server and DNS records |
Default layout
ign8inventory bootstrap creates:
- Regions: Europe, North America, Asia Pacific
- Sites: nbg1, fsn1, hel1 (EU) · ash1, hil1 (US) · sin1 (APAC)
- Locations: zone-a, zone-b per site
Environment variables
| Variable | Description |
|---|---|
IGN8_DOMAIN |
Base domain — inventory.DOMAIN will be created |
IGN8_ADMIN_EMAIL |
Contact email for Let's Encrypt |
IGN8_HETZNER_TOKEN |
Hetzner Cloud API token |
IGN8_CLOUDFLARE_TOKEN |
Cloudflare API token (Zone DNS Edit) |
IGN8_CLOUDFLARE_ZONE_ID |
Cloudflare Zone ID |
IGN8_NETBOX_SUPERUSER |
NetBox admin username (default: admin) |
IGN8_NETBOX_PASSWORD |
NetBox admin password |
IGN8_NETBOX_TOKEN |
API token — filled in after up, used by bootstrap and seed |
All variables can also be set via a .env file or passed as CLI flags.
License
MIT
Metadata
Release files for ign8inventory 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ign8inventory-1.0.0.tar.gz | 20.5 kB | Without provenance | Details for ign8inventory-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ign8inventory-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for ign8inventory-1.0.0-py3-none-any.whl |
Total release size: 43.7 kB
Release files / ign8inventory-1.0.0.tar.gz
| Download URL | ign8inventory-1.0.0.tar.gz |
|---|---|
| Size | 20.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
64fc19d9a88f397e25ef82a8a2988955bcd60d5d733fe955daf144cd737acdcf
|
|
BLAKE2b-256 checksum How to use checksums |
3bb7ddcf9e2082ae0c66f856f17a2a24ee30c7105059ea0d9c347f575df0f5dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / ign8inventory-1.0.0-py3-none-any.whl
| Download URL | ign8inventory-1.0.0-py3-none-any.whl |
|---|---|
| Size | 23.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6102ee04f6a1417f353b973cdb95bf069b5668cc93bc62590a9864fd004e7ed
|
|
BLAKE2b-256 checksum How to use checksums |
5c5fb1c14298818a3acd72bd1ada3052a77d10e657171ba908240b95e5adcbcc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for ign8inventory 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.