Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

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

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 examples
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .document
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.markdown
Octocat-spinner-32 Rakefile
Octocat-spinner-32 VERSION
Octocat-spinner-32 sous.gemspec
README.markdown

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?
Something went wrong with that request. Please try again.