I have been building my homelab using Infrastructure as Code (IaC) so that VM provisioning and host configuration are repeatable, versioned, and easier to maintain over time.
This project combines:
Terraform for provisioning virtual machines on Proxmox. Ansible for post-provisioning configuration (base packages, Docker host setup, and future monitoring roles). What is implemented today The current workflow is intentionally simple and predictable:
Define Docker host VM parameters in Terraform variables (CPU, memory, disk, network, addressing). Use Terraform to clone VMs from a cloud-init-enabled Ubuntu template in Proxmox. Use Ansible playbooks to apply baseline OS configuration and install Docker. From a technical perspective, the provisioning layer currently uses the telmate/proxmox provider and a proxmox_vm_qemu resource to configure:
...