capstrap

A command to remotely install git, rvm, ruby, and chef-solo using capistrano.

To get started, install capstrap:

gem install capstrap

capstrap assumes you are operating as root so you might want to drop in your ssh key to root's authorized_keys:

ssh root@zland '(if [ ! -d "${HOME}/.ssh" ]; then \
  mkdir -m 0700 -p ${HOME}/.ssh; fi; \
  cat - >> .ssh/authorized_keys)' < ${HOME}/.ssh/id_dsa.pub

To install a baseline RVM/ruby environment (ree-1.8.7 is default):

capstrap ruby root@zland

To use a custom RVM ruby:

capstrap ruby root@zland --ruby=ruby-1.8.7

To install the chef gem:

capstrap chef root@zland

To install a chef cookbooks repository and chef configuration:

capstrap solo root@zland \
  --cookbooks-repo=git://github.com/fnichol/chef-repo.git \
  --config-repo=git://github.com/fnichol/chef-dna-spike.git

To override the default cookbooks and configuration paths:

capstrap solo root@zland \
  --cookbooks-repo=git://github.com/fnichol/chef-repo.git \
  --cookbooks-path=/opt/chef \
  --config-repo=git://github.com/fnichol/chef-dna-spike.git \
  --config-path=/opt/chef/config

To use a rake update instead of the default git submodule init && git submodule update after a git update:

capstrap execute root@zland \
  --cookbooks-rake-update \
  --config-rake-update

To execute a chef configuration (the full monty):

capstrap execute root@zland \
  --cookbooks-repo=git://github.com/fnichol/chef-repo.git \
  --config-repo=git://github.com/fnichol/chef-dna-spike.git

To set some other crazy configuration (the full monty with cheese):

capstrap execute root@zland \
  --ruby=ruby-1.8.7 \
  --cookbooks-repo=git://github.com/fnichol/chef-repo.git \
  --cookbooks-path=/opt/chef \
  --config-repo=git://github.com/fnichol/chef-dna-spike.git \
  --config-path=/opt/chef/config

To pull new cookbook/configuration updates and run chef-solo:

capstrap update root@zland

To save config options to a yaml file to be read by capstrap:

cat > "$HOME/.capstraprc" <<END_OF_CAPSTRAPRC
---
cookbooks-repo: git://github.com/fnichol/chef-repo.git
cookbooks-rake-update: true
config-repo: git://github.com/fnichol/chef-dna-spike.git
config-rake-update: true
END_OF_CAPSTRAPRC

To set the remote hostname and domain name, use the --hostname and --domainname flags:

capstrap solo root@zland --hostname=zland --hostname=example.com

To get more help:

capstrap help

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) 2010 Fletcher Nichol. See LICENSE for details.