What configuration tools/language do you use for your homelab? Terraform? Dagger? Anisible? something else?
My Raspberry Pi has died so I'm about to recreate it, but figure I would like all the config somewhere so I can easily recreate it in future.
Looking for recommendations! Thanks :grinning_face_with_smiling_eyes:
I'm using saltstack but mostly because I work with Industrial IoT devices where that works better than something like Ansible so wanted to get some hands on time with it. I do like it, but I don't have enough experience to say if it is the best option for most people.
I guess it kind of depends on how far you want to go. Personally, I have a git repo on github that holds a lot of docker compose stacks, which I push via github actions over tailscale down to my NAS. Renovate is watching the repo and proposes updates.
I manage a few things that way, other systems like pihole I just set up manually, but I push my dns records into it via github actions as well. But the base OS was hand crafted more or less, I only automated the software provisioning on top.
A fun project I am tinkering on uses talos. If you can run your workload on kubernetes, that might be an option as well. It is basically a fully api driven OS to run Kubernetes. You push your config and get a kubeconfig, from there you can push your YAML to the cluster or pull it e.g. via ArgoCD.
I’ve used a git repo to keep track of changes and typically start with a bunch of notes, references, and commands recorded in Markdown files. I’ve tried to build out Ansible configs for the bare metal hosts I have in my home lab, but that is more for the practice and possible ability to reproduce the same configuration across multiple mini PCs. It likely depends on how complex the hosts end up being and what all you want to have documented.
My approach to a home lab is to establish something I can spin up VMs on top of and I organize all the VMs as independent experiments that I keep in separate directories in the git repo so that I can spin something up or down locally using terraform and manage the configuration with ansible. It’s a lot of work up front… but once there is an established pattern it’s nice to be able to reuse pieces for playing with different kinds of software and other infrastructure.
I'm using Ansible to configure my Raspberry Pis (LEDs/Bluetooth/WiFi on/off), to do dist-upgrades and setup containers with Docker. That's been working well for me so far.
I've started using Terraform to configure my domains' DNS and my home network's Mikrotik Router and UniFi AP. But that is still in its early stages and I can't give any recommendation either way :-).
I use NixOS for most OS's (which has its own language to configure itself), with Ansible to orchestrate both NixOS nodes, and fully provision other misc things.
I'm using Ansible aswell. Haven't yet figured out how to manage bhyve virtual machines but I'm guessing it's doable with Ansible.
Last updated: Dec 12 2024 at 16:20 UTC