Making my homelab fully “IaC”, I have some questions.
I’m rebuilding my homelab from scratch using Infrastructure as Code.
At this point, OpenTofu is provisioning all of my Proxmox VMs, and I’m using Talos OS for Kubernetes. The infrastructure side is working, and I’m now at the stage where I need to bootstrap the cluster itself.
This is where I’m unsure about the “proper” approach.
My plan is to have Argo CD to manage everything inside Kubernetes, but something has to get me from a fresh Talos cluster to an operational Argo CD installation. My initial thought was to have a bootstrap script that installs/configures the essentials (for example, Cilium and Argo CD via Helm), after that Argo CD takes over. However, I’m wondering if there’s a cleaner or more idiomatic approach.
For those of you running GitOps-first homelabs or production clusters:
How do you bootstrap a brand-new cluster?
Do you use a one-time script, OpenTofu/Terraform providers, Helm, or something else?
Where do you draw the line between infrastructure provisioning and GitOps?
Thanks for any and all input/insight! It was much fun learning IaC / opentofu up to this point