Chef

Yesterday we announced Engine Yard Solo which is our new Engine Yard on AWS platform. If you haven’t yet watched the screencast then you should check it out:

I’m using a really sweet configuration management engine called Chef that is being open sourced today. My good friends at OpsCode are responsible for the project.

If you have ever used or thought about using a system like Puppet then you owe it to your self to give Chef a try. Chef is a state based, declarative configuration management engine. You define recipes of how you want your system to look and then Chef makes it so.

The big advantage Chef has over Puppet is that the codebase is 1/10th the size and it is pure ruby, including the recipe DSL. Puppet’s biggest flaw is its configuration language that is not quite ruby and not quite turing complete. So you end up wrestling with it to get it to do anything.

Chef is just pure ruby so anything you can do in ruby you can do in your recipes. It also uses a simple merb-core/couchdb server for centralized storage of node configs and each server you manage gets an openid for identity.

If you have a hand in building or configuring any servers, you need to learn Chef now.

You need two repos to get Chef running, chef and ohai:

Ohai is a gem that interrogates your system and gathers facts about it. Chef is the gem that runs your recipes and actually does the work of configuring the system.

Here are the docs to get started with:

I believe that Chef will play a very important role in the future of building and managing servers in the ruby community as well as anyone else who needs repeatable server build outs.

We will expose a way to have your own custom Chef recipes applied via our management app so that anything we haven’t already written recipes for you can write yourself and get applied as part of a server build.