In the recent past, I've been bitten by the Chef virus and I've used it to install and configure my Mac. The parts of that setup are described in detail in this blogpost: Automating the Setup of My Perfect Developer Environment on OSX 10.8 Mountain Lion.
Central in this story was the pivotal_workstation project, this project by Pivotal Labs is used to setup the developer workstations at Pivotal Labs, and as such any and especially my involvement with the project was limited to writing new recipes within the structure and behaviour that was predefined.
While learing more about Chef and Ruby in general, I learned that their default framework had some issues, or at least so it seems to me. The most important were that there was almost no use of community cookbooks and, since it is used in “production” at Pivotal Labs, the potential for large scale changes is limited. For example there is no room for a full Linux support, big changes that need integration in the Pivotal workflow are slow to get merged, etc. This is obviously understandable, but limiting what I wanted to do.
A while back GitHub released Boxen. Boxen has the same goals as pivotal_workstation, but uses Puppet. Where Boxen excells was in the delivery method (one line installers, dependency management) and the cleanliness of the manifest files. But unfortunately, it also has some issues I cannot look past. First off, I want to use tools like rbenv/rvm and Homebrew like they are meant to be used, and not some weird custom setup. It also uses Puppet, and by no means faulting GitHub, Puppet or Boxen, but I just cannot get Puppet to do what I want, my bad, but it's the truth.
So I started to write Kitchenplan, and by write I also mean lots of copy/paste from other projects. Kitchenplan is based around a few basic principles. I want it's installation to be as flawless, smooth and easy as Boxen. I want it to be based on Chef, librarian-chef and soloist. I want to use as much community work as possible and make very clean and easy to maintain recipes. These recipes will also be as “default” as possible (so no special Homebrew installs), it should be able to support Linux and it shouldn't destroy your prompt and ruby setup if you sudo to another user.
It will inherit one flaw from both Boxen and Pivotal workstation, I will be using it to manage the workstations at Kunstmaan but I will try to keep everything as default as possible so it will port to another company easily. This is why I used a different org on Github to make it more generic.