Currently, I’m not doing any Infrastructure-as-code in my “homelab” (I hesitate to call it that now since my family now relies on portions of it, such as Plex and DNS).
Plex is out of scope for me at the moment for IaC, but I’ve had to fiddle with the DNS portion recently due to hardware failure in my “primary” DNS server.
I have two LXC containers providing DNS service running on my proxmox cluster. One recently corrupted and I had to reinstall it, which made me realize that it is essentially a stock Ubuntu LXC + bind9 package and some files in /etc/bind- which seems to me to be the perfect sort of thing to start with IaC.
I do a bit of IaC at work via Terraform. The community-provided Proxmox TF provider seems fairly robust these days, and I’m contemplating doing LCM on DNS “serving” nodes via GitOps.
While thinking about it, I realized that I’d like to put my BIND9 zonefiles into Git, and as part of that thought process, I discovered an, at least somewhat, established GitOps model for BIND9, where you use pipelines to automatically deploy updated zonefiles to shadow-primary nodes (non-serving BIND9 servers) that then allow zone transfer (AXFR/IXFR). I have shadow-primary and client-seving secondaries already, so I’m interested in exploring that further as well.
I toyed with GitLab runners before, but GitLab is so clumsy already, and the runners add to that even more, I started searching around and saw that Gitea offers automation pipelines in a much more svelte deployment model.