Find file
Fetching contributors…
Cannot retrieve contributors at this time
74 lines (51 sloc) 2.38 KB


An assistant for chef to handle server provisioning and other related tasks.

Sample Usage

In a config/cluster.rb file, you'll use a DSL to define your cluster, its environments and their roles.

# Start by defining and naming the cluster for the application.
# You can have as many clusters as you like, and each can have
# as many environments and roles as it needs.

cluster :app_name do

  aws_access_key_id 'abc123'
  aws_secret_access_key 'cba321'

  # (TODO) set up properties that all environments will inherit
  # for example, credentials and default instance sizes

  environment :production do

    # (TODO) set up properties that apply only to this environment
    # and override the otherwise inherited cluster properties

    role :app do
      # (TODO) finally, set up any properties that are specific
      # to this role alone, such as number of instances

    role :db
    role :worker


  environment :staging do
    role :app
    role :db
    role :worker



  • Cluster properties
    • DSL support to set cluster, environment and role properties in cluster.rb
    • Modeling to inherit/override properties
  • Command-line interface
    • List the instances already running, and show their status
    • Provision instances for roles that do not have any running
    • Bootstrap newly provisioned instances so they can run Chef
    • Configure instances by syncing Chef cookbooks and running chef-solo
  • Provisioning logic for all of the above, with Fog

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2009 Nick Zadrozny. See LICENSE for details.


  • Digitaria Interactive for sponsoring the development of the initial concept and prototype.
  • Rob Kaufman for suggesting "sous chef" for the name. Why is naming a project always the hardest part?