Skip to main content

Spin up a NetBox inventory environment in minutes — Hetzner Cloud, Cloudflare DNS, opinionated regions/sites/locations.

Project description

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 up creates 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 backupign8inventory backup exports the PostgreSQL database via SSH and commits it to your repository
  • Live server seedingign8inventory seed queries your Hetzner projects and upserts running servers into NetBox
  • Vault integration — secrets in infrastructure.yml can 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ign8inventory-1.0.0.tar.gz (20.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ign8inventory-1.0.0-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file ign8inventory-1.0.0.tar.gz.

File metadata

  • Download URL: ign8inventory-1.0.0.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for ign8inventory-1.0.0.tar.gz
Algorithm Hash digest
SHA256 64fc19d9a88f397e25ef82a8a2988955bcd60d5d733fe955daf144cd737acdcf
MD5 76f3775f9b804e422ce96d835f8226dd
BLAKE2b-256 3bb7ddcf9e2082ae0c66f856f17a2a24ee30c7105059ea0d9c347f575df0f5dc

See more details on using hashes here.

File details

Details for the file ign8inventory-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ign8inventory-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for ign8inventory-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d6102ee04f6a1417f353b973cdb95bf069b5668cc93bc62590a9864fd004e7ed
MD5 09c6be55ba67629c14d9ad8c347936f2
BLAKE2b-256 5c5fb1c14298818a3acd72bd1ada3052a77d10e657171ba908240b95e5adcbcc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page