我将capistrano配置为跨三个物理服务器进行部署.我想配置重启任务以顺序转到每个服务器并重新启动应用程序,而不是一次性转到所有服务器的默认方式.
这是当前的部署任务:
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,:except => { :no_release => true } do run "kill `cat #{current_path}/tmp/pids/unicorn.pid`" end task :restart,:except => { :no_release => true } do stop sleep(10) start end end
我在想这样的事情:
#this does not work task :sequential_restart do find_servers(:roles => :app).each restart end end
有任何想法吗?
解决方法
我使用HOSTFILTER环境变量执行非常类似的操作,该环境变量有效地将所有内容限定到与过滤器匹配的主机.
就像是
find_servers(:roles => :app).each do |server| ENV['HOSTFILTER'] = server.host restart end ENV['HOSTFILTER'] = nil
应该做的伎俩.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。