Skip to content

Instantly share code, notes, and snippets.

@bmarini
Created June 1, 2010 23:26
Show Gist options
  • Save bmarini/421682 to your computer and use it in GitHub Desktop.
Save bmarini/421682 to your computer and use it in GitHub Desktop.
require 'capistrano'
unless Capistrano::Configuration.respond_to?(:instance)
abort "capistrano/ext/multiserver requires Capistrano 2"
end
# Example Usage:
# servers.define :app1, 'user@app1.servers', :port => 9999
# servers.define :app2, 'user@app2.servers', :port => 9999
# servers.define :db1, 'user@db1.servers', :port => 9999
# servers.define :db2, 'user@db2.servers', :port => 9999
module MultiServer
def define(name, host, options={})
options = {:roles => [:app, :web]}.merge(options)
desc "Add #{name} to servers to perform subsequent tasks on"
task(name) do
options.delete(:roles).each do |r|
role(r, host, options)
end
end
end
end
Capistrano.plugin :servers, MultiServer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment