Capistrano 部署到同一云服务上的多个节点
Capistrano deploy to many nodes on the same Cloud Service
我在 Azure 上有一个包含许多实例的云服务,每个实例都具有相同的地址,例如。 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
我在 Azure 上有一个包含许多实例的云服务,每个实例都具有相同的地址,例如。 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