/sous

An assistant for Chef to help provision servers and put cookbooks in place.

Primary LanguageRubyMIT LicenseMIT

sous

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
    end
    
    role :db
    role :worker
    
  end
  
  environment :staging do
    role :app
    role :db
    role :worker
  end
  
end

TODO

  • 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

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

Thanks

  • 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?