Created
January 4, 2012 05:44
-
-
Save babysnakes/1558678 to your computer and use it in GitHub Desktop.
Trying to create rolling deploy via capistrano.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
role :servers, "server1", "server2" | |
set :user, 'ubuntu' | |
def stop_load_balancer | |
run "echo service registerelb stop" | |
end | |
def start_load_balancer | |
run "echo service registerelb start" | |
end | |
def stop_app | |
run "echo service app stop" | |
end | |
def start_app | |
run "echo service app start" | |
end | |
namespace :deploy do | |
desc "Deploy" | |
task :default, :roles => :servers, :max_hosts => 1 do | |
stop_load_balancer | |
stop_app | |
start_app | |
start_load_balancer | |
end | |
end | |
__END__ | |
Here is the output of running the command. As you can see it runs each | |
remote command on both servers (consecutively) before getting to the next | |
remote command. This WILL cause downtime! | |
╭─haim@sunra ~/cap_tests ‹1.8.7-p352› | |
╰─$ cap -f deploy_via_methods.rb deploy 1 ↵ | |
* executing `deploy' | |
* executing "echo service registerelb stop" | |
servers: ["server1", "server2"] | |
[server1] executing command | |
** [out :: server1] service registerelb stop | |
command finished in 1404ms | |
[server2] executing command | |
** [out :: server2] service registerelb stop | |
command finished in 1124ms | |
* executing "echo service app stop" | |
servers: ["server1", "server2"] | |
[server1] executing command | |
** [out :: server1] service app stop | |
command finished in 1515ms | |
[server2] executing command | |
** [out :: server2] service app stop | |
command finished in 1239ms | |
* executing "echo service app start" | |
servers: ["server1", "server2"] | |
[server1] executing command | |
** [out :: server1] service app start | |
command finished in 969ms | |
[server2] executing command | |
** [out :: server2] service app start | |
command finished in 823ms | |
* executing "echo service registerelb start" | |
servers: ["server1", "server2"] | |
[server1] executing command | |
** [out :: server1] service registerelb start | |
command finished in 1759ms | |
[server2] executing command | |
** [out :: server2] service registerelb start | |
command finished in 664ms |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
role :servers, 'server1', 'server2' | |
set :user, 'ubuntu' | |
namespace :deploy do | |
desc "Deploy" | |
task :default do | |
find_servers(:roles => :servers).each do |server| | |
run "echo service registerelb stop", :hosts => server | |
run "echo service app stop", :hosts => server | |
run "echo service app start", :hosts => server | |
run "echo service registerelb start", :hosts => server | |
end | |
end | |
end | |
__END__ | |
This setup actually works as I want it to work (rolling deploy without | |
downtime) but it will cause code duplication because I want to be able | |
to run each command separately. | |
╭─haim@sunra ~/cap_tests ‹1.8.7-p352› | |
╰─$ cap -f rolling.rb deploy | |
* executing `deploy' | |
* executing "echo service registerelb stop" | |
servers: ["server1"] | |
[server1] executing command | |
** [out :: server1] service registerelb stop | |
command finished in 1095ms | |
* executing "echo service app stop" | |
servers: ["server1"] | |
[server1] executing command | |
** [out :: server1] service app stop | |
command finished in 337ms | |
* executing "echo service app start" | |
servers: ["server1"] | |
[server1] executing command | |
** [out :: server1] service app start | |
command finished in 338ms | |
* executing "echo service registerelb start" | |
servers: ["server1"] | |
[server1] executing command | |
** [out :: server1] service registerelb start | |
command finished in 352ms | |
* executing "echo service registerelb stop" | |
servers: ["server2"] | |
[server2] executing command | |
** [out :: server2] service registerelb stop | |
command finished in 1127ms | |
* executing "echo service app stop" | |
servers: ["server2"] | |
[server2] executing command | |
** [out :: server2] service app stop | |
command finished in 347ms | |
* executing "echo service app start" | |
servers: ["server2"] | |
[server2] executing command | |
** [out :: server2] service app start | |
command finished in 325ms | |
* executing "echo service registerelb start" | |
servers: ["server2"] | |
[server2] executing command | |
** [out :: server2] service registerelb start | |
command finished in 330ms |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment