Dumbwaiter Build Status Code Climate

Dumbwaiter hoists your Rails application up to OpsWorks and ratchets deployment information back down.

Origin

Before Scalarium became OpsWorks, they maintained a gem that did the sorts of functions described here. Like Heroku Toolbelt, the Scalarium gem offered users a very basic workflow experience: upload and run Chef recipes, execute commands remotely and watch their output.

Goals

Dumbwaiter prescribes a very specific OpsWorks-centric workflow with the same feeling of the Scalarium gem's CLI:

  • Create OpsWorks stacks, layers and instances via YAML files
  • Assign a stack's custom Chef cookbooks as a custom GitHub repo
  • Create an application corresponding to a GitHub repo
  • Run versioned deployments, rollbacks and one-off recipes

Non-Goals

Dumbwaiter only deals with OpsWorks workflow, excluding:

  • Standing up VPCs
  • Running CloudFormation templates
  • One-off bash-level commands(^) and log tailing

^ Making a cookbook to run one-off commands is totally not unheard-of.

Installation

Add this line to your application's Gemfile:

gem 'dumbwaiter'

And then execute:

$ bundle

Or install it yourself as:

$ gem install dumbwaiter

Usage

Deploy the "cinnamon" branch of the "syrup" application to the "Pancake" stack:

dumbwaiter deploy Pancake syrup cinnamon

List all the layers of the "Pizza" stack:

dumbwaiter layers Pizza

List the deployments on the "Maniacal Checklist" stack:

dumbwaiter list "Maniacal Checklist"

Upload all the custom cookbooks for the "Sweden" stack:

dumbwaiter rechef Sweden

Roll back the "Snowman" stack's "dandruff" application:

dumbwaiter rollback Snowman dandruff

Run the sneakers recipe on all the angsty instances of the "Documentarian" stack:

dumbwaiter run_recipe Documentarian angsty sneakers

List the stacks and apps in your OpsWorks environment:

dumbwaiter stacks

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request