I experimented with using Puppet and later Chef to manage my home server and all the virtual machines on it. After automating the installation and management of most of the services I use (rutorrent, sabnzbd, sickbeard, couchpotato, gitlab, etc.), I decided that both Puppet and Chef were just too much trouble for my needs. They were too heavyweight for managing single instances of each service.
However, I wrote quite a bit of code during that time which may be of some use. Though most of it is very specific to my setup, I published some of it on Github.
Gentoo Linux is my Linux distribution of choice. However, Chef doesn’t have much support for Gentoo out of the box. In fact, portage support was outright broken when I first tried it (packages which have the same name in two different categories such as
virtual/mysql would always fail). I made a simple cookbook which fixed those issuses (based on a Chef bug report) and made it easy to add keywords, use flags, mask, and unmask for packages and manage eselect as well. You can check it out on Github.
Chef’s Users cookbook is a great way to add users from a Chef data bag. I wanted each user to have their dotfiles git repository checked out, linked to the home directory, and updated during each Chef run. The code is again on Github.
Gentoo Install Script
When testing my Chef cookbooks, I’d find myself often reinstalling Gentoo from scratch in a virtual machine. To automate this process, I created a simple install script for Gentoo. While some things are hardcoded and it assumes you want an amd64 install, it may be of some use. The code is up on Github.
I still have a few other projects I’ve been meaning to upload for a while now. The biggest problem is writing meaningful README files for code I haven’t touched in months.