Proxmox VE
The 5-node high-availability cluster that provides the compute foundation for the lab's VM estate.
What it is & why I use it
Proxmox VE is an open-source virtualization platform that combines KVM virtual machines and LXC containers with clustering, high availability, and software-defined storage under one API. I chose it as the base layer for AutomationLab because it gives me a real, API-driven hypervisor cluster - the same primitives a production platform team works with - without a per-socket licensing model getting in the way of experimentation.
The point of the lab is to treat infrastructure as something you declare and automate, not something you click together. Proxmox exposes everything through a REST API, which is exactly what lets Terraform stand VMs up from code instead of from a wizard.
How I use it in the lab
- 5 nodes, clustered. The cluster runs as a single management plane with a shared quorum, so I administer all nodes as one system rather than 5 separate hosts.
- High availability. Selected VMs are enrolled in HA groups; if a node fails, the cluster restarts those guests elsewhere automatically. Enrollment is the final, deliberate step of provisioning - not the default - so I control exactly what is allowed to migrate.
- Terraform-driven. Each VM gets its own Terraform workspace using the
bpg/proxmoxprovider. A pipeline plans and applies against the cluster API; there is no hand-built VM anywhere in the lab. - Dynamic load balancing. The cluster rebalances running guests across nodes based on load, so no single node becomes a hotspot as the lab grows.
- Clean decommission. The provisioning flow reverses cleanly - HA de-registration, then destroy - so tearing a VM down is as automated as building it.
Architecture
Lessons learned & gotchas
- HA is a promise you have to mean. Enrolling a guest in HA means the cluster will happily restart it on another node - including after a transient blip. Anything with node-local state has to be designed for that before you enroll it, or you will be surprised at the worst time.
- The API is the contract. Once every VM comes from Terraform against the API, drift shows up as a plan diff instead of a mystery. Clicking a change in the UI just means the next apply wants to undo it - so I stopped doing that.
Impact
Proxmox turned "the lab" from a pile of machines into a single programmable substrate. Everything above it - GitOps, monitoring, identity - assumes it can ask for a VM and get one, reliably, from code. That assumption is what makes the rest of the platform possible.