Today I decided to take a look at Chef (you know, this Infrastructure-as-code stuff) and see what it can do for me.
Sadly, installing a standalone version (“Chef Solo”) on a Windows box is not that simple, even if there are some instructions available. So, here is a step-by-step guide of what I did:
  1. Install the Chef client (it is only available as an .MSI file – I would prefer a .ZIP or such, since the installer just copies a few files and modifies the PATH variable)
  2. Create a Chef repository:
    > git clone git://
    > cd chef-repo
    Yes, this requires a Git client
  3. Configure Knife (the commandline interface) by creating the file .chef/knife.rb:
    root = File.absolute_path(File.dirname(__FILE__))
    cookbook_path root + '/../cookbooks'
  4. Download a sample cookbook:
    > cd cookbooks
    > knife cookbook site download getting-started
    > tar zxvf getting-started-0.3.0-tar.gz
    > del getting-started-0.3.0-tar.gz
  5. Configure Chef-Solo by creating the files .chef/solo.rb
    root = File.absolute_path(File.dirname(__FILE__))
    file_cache_path root + '/..'
    cookbook_path root + '/../cookbooks'
    …and .chef/solo.json:
    "run_list": [ "recipe[getting-started::default]" ]
  6. Run the recipe:
    > chef-solo -c .chef/solo.rb -j .chef/solo.json
    ...which creates a "chef-getting-started.txt" file in your home directory.

Now you can create your own cookbook (“knife cookbook create my_cookbook”) and start cooking