A focused implementation of cloud-init specifically for Proxmox VMs https://stb.hanse-page.de/cloud-init-pve/
  • Go 97.9%
  • Shell 2.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Stefan Bethke 79876618c5
All checks were successful
CI / test (push) Successful in 1m51s
Docs / build-and-deploy (push) Successful in 44s
CI / cross-build (amd64, linux) (push) Successful in 1m24s
Document the value of each custom-backend environment variable
The env var tables in backends.md left most rows undescribed beyond
the always-present ones. Fill in what each variable actually contains
and, where relevant, when it's set, based on how the network/system/
user custom backends populate them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V3hkxTY3qXLq2zugmN4nwK
2026-09-04 21:58:19 +00:00
.forgejo/workflows Switch docs theme to mkdocs-material 2026-09-04 21:52:43 +00:00
cmd/cloud-init-pve Add example systemd units, splitting boot-time and network-dependent config 2026-09-04 14:07:36 +00:00
contrib/systemd Fix .deb install not enabling systemd units in a chroot/container 2026-09-04 20:48:30 +00:00
docs Document the value of each custom-backend environment variable 2026-09-04 21:58:19 +00:00
internal Fix boot deadlock from v1.2.0's systemd-networkd activation 2026-09-04 21:26:04 +00:00
.gitignore Initial implementation of cloud-init-pve 2026-09-04 12:41:36 +00:00
go.mod Initial implementation of cloud-init-pve 2026-09-04 12:41:36 +00:00
go.sum Initial implementation of cloud-init-pve 2026-09-04 12:41:36 +00:00
LICENSE Initial implementation of cloud-init-pve 2026-09-04 12:41:36 +00:00
mkdocs.yml Switch docs theme to mkdocs-material 2026-09-04 21:52:43 +00:00
nfpm.yaml Enable systemd units on .deb install, without starting them 2026-09-04 20:09:00 +00:00
README.md Add example systemd units, splitting boot-time and network-dependent config 2026-09-04 14:07:36 +00:00

Cloud Init PVE

cloud-init-pve implements the functionality of cloud-init, but focused on the configuration that Proxmox Virtual Environment makes available. It also tries to limit the impact of changes of the configuration after initial setup, for example, when updating the password, or changing the IP address of a VM.

Documentation

Rendered docs: https://stb.hanse-page.de/cloud-init-pve/

  • Overview — overview and quick start.
  • Configuration — the /etc/cloud-init-pve.yaml config file reference.
  • Cloud-Init Data — exactly which cloud-init user/network fields are recognized.
  • Backends — what each built-in backend does, and the environment variables a custom backend script receives.
  • Running via systemd — example units in contrib/systemd/, and how boot-time and network-dependent config are split.

Installation

Download a release for Linux/amd64 — currently the only platform built — from Releases:

  • .deb: apt install ./cloud-init-pve-<version>-amd64.deb.
  • .tar.gz: a plain binary — extract it onto $PATH yourself.

Or build from source (Go 1.26+): go build ./cmd/cloud-init-pve.

Quick start

sudo cloud-init-pve

Run as root, with no arguments, cloud-init-pve reads /etc/cloud-init-pve.yaml (or the documented defaults if it's absent), locates and mounts the Proxmox-generated cloud-init config drive, applies the configured backends, and records what it applied so the next run can tell what changed. See https://stb.hanse-page.de/cloud-init-pve/ for more.