Opscode Chef is system for automating the configuration of (typically) Linux / UNIX based machines and virtuals. See http://www.opscode.com/chef/ for details.

The basic idea is that configuration tasks are performed using Recipes. These are (mostly) declarative scripts written in the Chef's Ruby-based "domain specific language". Recipes are run on "nodes" (i.e. computers) which are configured using Node and Role specifications. These typically say what Recipes to run, and provide various attributes that parameterize the Recipe behaviour. Recipes and their associated files are bundled up as Cookbooks, and the whole lot are (typically) checked into version control.

Chef can either be used in two ways:

  • You can use a central server to hold all of the configuration specifications, and manage the configuration state and authorization details. This mode of operation is best if you have a number of machines to manage, but it requires you to either set up and maintain a Chef server, or use the "Enterprise Chef" service managed by Opscode. (The latter is free for up to 5 nodes. After that you pay by the month.)

  • You can use Chef solo mode where you essentially manage each system individually, and take care of the distribution of configuration specs and state yourself. (Chef solo does not support shared Data Bags or dynamic Node attribute storage ... or any form of authorization.)

Filed under: ,