2012-01-10 27 views
5

Üç fiziksel sunucuya dağıtmak üzere yapılandırılmış capistrano'm var. Yeniden başlatma görevini sıralı olarak her sunucuya gidip, tüm sunuculara aynı anda gitmenin varsayılan yolu yerine uygulamayı yeniden başlatmak için yapılandırmak istiyorum.capistrano ardışık yeniden başlatılıyor

namespace :deploy do 

    task :start, :roles => :app, :except => { :no_release => true } do 
    run "cd #{current_path} && bundle exec unicorn_rails -C#{current_path}/config/unicorn.rb -E #{rails_env} -D" 
    end 

    task :stop, :roles => :app, :except => { :no_release => true } do 
    run "kill `cat #{current_path}/tmp/pids/unicorn.pid`" 
    end 

    task :restart, :roles => :app, :except => { :no_release => true } do 
    stop 
    sleep(10) 
    start 
    end 

end 

Böyle bir şey düşünüyorum:

#this does not work 
task :sequential_restart do 
    find_servers(:roles => :app).each 
    restart 
    end 
end 

Herhangi Fikirler İşte

mevcut dağıtım iştir?

cevap

5

HOSTFILTER ortam değişkenini kullanarak çok benzer bir şey yapıyorum, bu da her şey filtreyle eşleşen ana bilgisayarlara etkili bir şekilde odaklanır.

find_servers(:roles => :app).each do |server| 
    ENV['HOSTFILTER'] = server.host 
    restart 
end 
ENV['HOSTFILTER'] = nil 

gibi

şey hile yapmak gerekir.

İlgili konular