一些背景,我是capistrino运行2.9.0和capistrano-ext 1.2.1。多阶段部署按预期工作。就像在角色中添加服务器阵列一样。
INSTANCES = ["this.server.com", "that.server.com"]
role(:web) {INSTANCES}
我一直在尝试:deploy_to根据所部署服务器的名称生成一个路径,如下所示:
set :deploy_to, lambda { "/var/www/application/$HOSTNAME" }
这很好用,除了this.server.com和that.server.com实际上是同一个主机。在此示例中,不是基于我的deploy / stage.rb文件中定义的服务器名称而使用两个部署文件夹,而是生成一个/var/www/application/server.com /
我一直在寻找一种方法来在capistrano级别注入或引用保留这些细节的shell变量。似乎需要托管具有应用程序的多个实例的应用程序服务器是常见的。
我真正需要的是:
set :deploy_to, lambda { "/var/www/application/$SERVER_NAME_CAP_IS_USING" }
答案 0 :(得分:0)
也许this有帮助。您可以定义特定的ServerDefinition对象并调用每个任务或其他任何对象:
set(:boss_host, {
Capistrano::ServerDefinition.new('boss.reservoir.dogs', {
:user => 'boss',
:port => 2222,
:ssh_options => {
:keys => './keys/boss.pem'
}
})
run("date", :hosts => [ :boss_host ]