2015-06-02 43 views
0

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

的问题是,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} 

是否有任何变通定义与日多台服务器结束同名吗?

回答

1

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