Chef: Quick and Tasty Ruby Powered Server Configuration
Basically, Chef is a Ruby-based configuration management engine. You set up recipes for how you want your system configured, and then Chef will cook it up for you. So, you can write lovely Ruby code to manage your servers, rather than running commands directly on your server.
With Chef, one of your systems is the server and all others are clients that communicate with the Chef "server" via REST over HTTPS. The server is a Merb application that stores cookbooks for your nodes using CouchDB.
The work is done by the clients, running the recipes for one or many nodes thus configuring that particular machine. The Chef server is only there to provide information to the clients. Once configured, you can access your Chef server and its cookbooks via a Web interface. You can create your own cookbooks from scratch but it's worth checking to see if one already exists in the Chef repository or one of its forks.
Once you've got your recipes sorted out, Chef allows you to programatically set up and commission production-ready server instances in next to no time.