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-0.1.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-0.1.0-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ign8inventory-0.1.0.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.4 CPython/3.14.4 Darwin/25.4.0

File hashes

Hashes for ign8inventory-0.1.0.tar.gz
Algorithm Hash digest
SHA256 68034c99b28ccac9a7127f5df0036e36a67b3724d9857ed315ad68b745ff1b48
MD5 846e86ca0dc29968e9fa7b37a67dac22
BLAKE2b-256 f042b2d39ec6221e4ae72d517d9742615666921ef394d6e72ff6ebd1091df7ce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ign8inventory-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.4 CPython/3.14.4 Darwin/25.4.0

File hashes

Hashes for ign8inventory-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1746fa0bb498418155ba83ee1900d5b6d165ba63adf59ff8e5769e38491a50c9
MD5 c5d185af24c49398a275f246aed489bd
BLAKE2b-256 02b2fd535415da9364db1f7fe5ba6c070f40259e19582f0725258cc66d4e410e

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