【发布时间】:2014-02-05 01:48:53
【问题描述】:
我正在使用 Capistrano 以非标准方式部署应用程序,并且我有一个非常大的文件,我通过网关将其上传到多个服务器。我想,而不是让 capistrano 将此文件从部署机器上传到列表中的每个服务器,而是将其上传到网关服务器,然后从那里在 LAN 周围 scp (当我手动测试它时,这要快得多) .
我很难找到让 capistrano 做到这一点的方法。我可以使用类似的东西:
myservers = find_servers_for_task(current_task)
myservers.each do |server|
run "scp HARDCODED_GATEWAY:/remote/file /local/file", :hosts => server.host
end
我不喜欢硬编码的网关;我在上面的一个名为 :gateway 的角色中定义了这个。有没有办法从 :gateway 符号中提取主机名?我知道一个角色中可能定义了多个服务器,但我会很满意只为角色数组中的第一台服务器或最后一台服务器提供服务器信息;就我的目的而言,其中只会有一台服务器,但哪台服务器可能会改变。
【问题讨论】:
标签: capistrano host