首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一次部署一个服务器

一次部署一个服务器
EN

Stack Overflow用户
提问于 2017-07-21 10:52:04
回答 2查看 967关注 0票数 1

在RAILS部署中,我使用了capistrano。我们希望先部署到一台服务器,然后在第一台服务器上完成部署之后,然后在第二台服务器上开始部署。我们不希望拖延地重新开始。我们希望一次有一个完整的部署。到目前为止我有这样的想法:

代码语言:javascript
运行
复制
namespace :deploy do
  task :sequence do
    on roles(:app), in: :sequence do |host|
      invoke 'deploy'
    end
  end
end

问题在于,invoke 'deploy'为所有应用服务器调用deploy,这些应用服务器依次并行部署。

最后,如何为特定主机调用部署任务?

EN

回答 2

Stack Overflow用户

发布于 2017-07-21 15:59:04

以下内容将帮助您在顺序模式下运行deploy任务:

代码语言:javascript
运行
复制
task :my_task, roles: :web do
  find_servers_for_task(current_task).each do |server|
    run "YOUR_COMMAND", hosts: server.host
  end
end
票数 1
EN

Stack Overflow用户

发布于 2017-07-22 13:00:11

如果我有这个要求,我可能会写它。您可以使用--hosts参数运行Capistrano,以定义您在舞台文件(config/deploy/dev|stage|prod|somethingelse.rb)中描述的服务器中的哪个服务器,您实际上希望在哪个服务器上运行该命令。这可以有两种形式。假设我有三个服务器,test1、test2和prod1。我可以使用一个列表来运行它,比如cap prod --hosts=test1,test2 deploy,只有test1和test2才会接收部署。您还可以使用正则表达式来实现相同的功能,比如cap prod --hosts=^test deploy

这里记录了这一点:http://capistranorb.com/documentation/advanced-features/host-filtering/

考虑到这一点,我可能会编写一个脚本(或Makefile),它每次为不同的服务器运行capistrano时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45235809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档