【发布时间】:2011-03-01 05:51:31
【问题描述】:
Capistrano 非常适合部署到单个服务器。但是,我的 Web 应用程序有多个生产 API 服务器。当我部署时,我的代码需要同时部署到每个 API 服务器。手动指定每个服务器不是我正在寻找的解决方案(例如,我不想做“cap api1 deploy; cap api2 deploy”)。
有没有办法使用 Capistrano 一次性部署到所有服务器,只需简单的“cap deploy”?我想知道我需要对典型的 deploy.rb 文件进行哪些更改,是否需要为每个服务器创建一个单独的文件,以及是否需要更改 Capfile 以及如何更改。此外,我需要能够为每台服务器指定不同的 deploy_to 路径。理想情况下,我不必为不同的服务器在不同的配置文件中重复操作(例如,不必多次指定 :repository、:application 等)。
我花了几个小时在 Google 上搜索并浏览教程,但没有发现任何帮助。
这是我当前 deploy.rb 文件中的一个 sn-p:
set :application, "testapplication"
set :repository, "ssh://domain.com//srv/hg/#{application}"
set :scm, :mercurial
set :deploy_to, "/srv/www/#{application}"
role :web, "domain.com"
role :app, "domain.com"
role :db, "domain.com", :primary => true, :norelease => true
我应该只使用多阶段扩展并执行此操作吗?
task :deploy_everything do
system "cap api1 deploy"
system "cap api2 deploy"
system "cap api2 deploy"
end
这可以工作,但我觉得这不是这个扩展的目的......
【问题讨论】:
标签: deployment capistrano