Documentation
¶
Overview ¶
hlab is a CLI/TUI that creates and provisions Proxmox VMs. It discovers infrastructure via the Proxmox API, asks only what cannot be inferred, and orchestrates Terraform (and, later, Ansible) under the hood.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package assets embeds the Terraform workspace, the software catalog and (later) Ansible content into the hlab binary, so the tool is self-contained and distributable.
|
Package assets embeds the Terraform workspace, the software catalog and (later) Ansible content into the hlab binary, so the tool is self-contained and distributable. |
|
internal
|
|
|
ansible
Package ansible materializes the embedded Ansible content into the homelab-state workspace and runs ansible-playbook to provision a VM with its selected software.
|
Package ansible materializes the embedded Ansible content into the homelab-state workspace and runs ansible-playbook to provision a VM with its selected software. |
|
config
Package config manages hlab's global configuration, stored at ~/.hlab/config.yaml (override the home dir with $HLAB_HOME).
|
Package config manages hlab's global configuration, stored at ~/.hlab/config.yaml (override the home dir with $HLAB_HOME). |
|
engine
Package engine holds hlab's presentation-free orchestration: it persists VM declarations and drives Terraform (lifecycle) and Ansible (provisioning) over the homelab-state store.
|
Package engine holds hlab's presentation-free orchestration: it persists VM declarations and drives Terraform (lifecycle) and Ansible (provisioning) over the homelab-state store. |
|
plans
Package plans manages hlab's preconfigured VM "plans" (t-shirt sizes such as KVM1/KVM2/KVM4/KVM8).
|
Package plans manages hlab's preconfigured VM "plans" (t-shirt sizes such as KVM1/KVM2/KVM4/KVM8). |
|
proxmox
Package proxmox is a tiny client for the Proxmox VE API.
|
Package proxmox is a tiny client for the Proxmox VE API. |
|
software
Package software parses the embedded additional-software.yaml catalog used by the wizard's multi-select and (in M2) by the Ansible provisioner.
|
Package software parses the embedded additional-software.yaml catalog used by the wizard's multi-select and (in M2) by the Ansible provisioner. |
|
sshutil
Package sshutil holds the small SSH helpers shared by the CLI and the TUI: installing a public key into a live guest's authorized_keys over SSH.
|
Package sshutil holds the small SSH helpers shared by the CLI and the TUI: installing a public key into a live guest's authorized_keys over SSH. |
|
state
Package state manages the homelab-state working copy (default ~/.hlab): the versioned, declarative description of every VM hlab manages.
|
Package state manages the homelab-state working copy (default ~/.hlab): the versioned, declarative description of every VM hlab manages. |
|
terraform
Package terraform materializes the embedded Terraform workspace into the homelab-state directory, renders the tfvars from VM declarations, and drives the terraform binary (init/plan/apply/destroy/output).
|
Package terraform materializes the embedded Terraform workspace into the homelab-state directory, renders the tfvars from VM declarations, and drives the terraform binary (init/plan/apply/destroy/output). |
|
theme
Package theme holds hlab's semantic color palette.
|
Package theme holds hlab's semantic color palette. |
|
tui
Package tui implements hlab's full-screen dashboard (milestone M3): a persistent terminal UI that lists the managed VMs and runs the create / provision / setup / destroy flows over internal/engine — the same orchestration the CLI uses.
|
Package tui implements hlab's full-screen dashboard (milestone M3): a persistent terminal UI that lists the managed VMs and runs the create / provision / setup / destroy flows over internal/engine — the same orchestration the CLI uses. |
|
wizard
Package wizard implements the interactive `hlab vm create` flow described in docs/wizard.md.
|
Package wizard implements the interactive `hlab vm create` flow described in docs/wizard.md. |
Click to show internal directories.
Click to hide internal directories.