Chef Cap

DESCRIPTION

capistrano + chef-solo == deployment + server automation

Using chef’s JSON configuration format to drive capistrano and chef-solo so you can use both to not only deploy your application but also completely automate the configuration of your servers.

INSTALL

Add chef_cap to your Gemfile

gem 'chef_cap'

Then run:

$ bundle install

Rails 3

$ rails generate chef_cap:install

Rails 2

Edit your Rakefile and add:

require 'chef_cap/tasks'

Then run:

$ bundle exec rake chef_cap:install

Which will overwrite your Capfile and create a chef directory with sample files unless one already exists.

Tasks

Remove all chef-cap files from /tmp

$ cap <environment> chef:cleanup

Run chef-solo on the server(s)

$ cap <environment> chef:deploy

Setup chef solo on the server(s)

$ cap <environment> chef:setup

Run chef without deploy

$ cap <environment> cook

Deploy a particular Git branch, tag, or revision (overriding the default)

$ cap <environment> deploy BRANCH=my_branch
$ cap <environment> deploy TAG=my_tag
$ cap <environment> deploy REVISION=abc1234

chef/node.json

The following JSON keys are required in your node.json file:

{ "application": { "name": NAME } }
{ "application": { "repository": REPOSITORY } }
{ "environments": { ENVIRONMENT: { "rails_env": RAILS_ENV } } }
{ "roles": { ROLE: { "run_list": [] } } }
{ "run_list": [] }

Optional JSON keys:

{ "environments": { ENVIRONMENT: { "role_order": { FIRST_ROLE: [OTHER_ROLES] } } } }
{ "environments": { ENVIRONMENT: { "environment_settings": ENV_HASH } } }
{ "rollback_run_list": [] }
{ "deploy_recipe": "[some_cookbook]::[some_recipe]" }

RVM/RBENV

You can set which ruby version switcher to use. RVM is the default. ruby_version can be set as well.

{
  "environments": {
    ENVIRONMENT: {
      "ruby_version_switcher": "rvm",
      "ruby_version": "1.9.3-p125"
    }
  }
}

REQUIREMENTS

  • Capistrano 2.x

LICENSE

MIT

NOTICE

Chef and chef-solo are © 2010 Opscode (www.opscode.com/)