Capistrano部署到同一个Cloud Service上的许多节点

我在Azure上有一个Cloud Service,包含许多实例,每个实例都具有相同的地址,例如。 mycloudservice.cloudapp.net但是在随机端口上公开ssh服务,以便可以从外部访问任何实例。

问题是Capistrano不喜欢这个命名,更清楚:

使用不同的名称一切正常

 server 'myservice0.cloudapp.net', user: 'azureuser', roles: %w{web} server 'myservice1.cloudapp.net', user: 'azureuser', roles: %w{web} 

但是当我使用不同端口的相同名称时,Capistrano认为我只是重新定义了以前的服务器,所以它最终仅使用最后一个服务器

 server 'myservice.cloudapp.net', port: 53458, user: 'azureuser', roles: %w{web} server 'myservice.cloudapp.net', port: 62434, user: 'azureuser', roles: %w{web} 

是否有任何工作来定义具有相同名称的多个服务器?

Capistrano检查唯一的服务器名称。 您可以在〜/ .ssh / config中使用ssh别名来解决问题。

 server 'ssh_aliases1', roles: %w{web} server 'ssh_aliases2', roles: %w{web} 

并将其添加到〜/ .ssh / config

 Host ssh_aliases1 HostName myservice.cloudapp.net User azureuser port 53458 Host ssh_aliases2 HostName myservice.cloudapp.net User azureuser port 62434