Sprinkle: Build remote servers in repeatable way

Cloud Computing helps us be really easy to scale more servers or relaunch new servers when something went wrong. But setting up a new server to be the same as existing one is not easy because we have to remember all installed packages, custom configurations, and commands that you need to run them in order.

Sprinkle is a software provisioning tool you can use to build remote servers with, after the base operating system has been installed. For example, to install a Rails or Merb stack on a brand new slice directly after its been created. ”

Sprinkle uses Ruby’s DSL to define packages/steps that are going to execute on remote servers, so that makes it easy to read and write. Here is an example of package description follows:

  verify do
    has_directory REE_PATH
    has_executable "#{REE_PATH}/bin/ruby"
    binaries.each {|bin| has_symlink "/usr/local/bin/#{bin}", "#{REE_PATH}/bin/#{bin}" }

  requires :ree_dependencies

package :ree_dependencies do
  apt %w(zlib1g-dev libreadline5-dev libssl-dev)
  requires :build_essential

There are few other tools as well like Chef and Puppet, and they are popular and really good. But after I spent a few hours to try Chef, then I feel it’s not so friendly tool for getting started. So that’s why I choose Sprinkle instead.