我需要部署到 2 台不同的服务器,这 2 台服务器具有不同的身份验证方法(一台是我大学的服务器,另一台是亚马逊网络服务器 AWS)
我已经为我大学的服务器运行了 capistrano,但我不知道如何将部署添加到 AWS,因为对于这个,我需要添加 ssh 选项,例如用于用户 .pem 文件,如下所示:
ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "test.pem")]
ssh_options[:forward_agent] = true
我已经浏览了starckoverflow,但没有帖子提到如何处理这个和这个不同的身份验证方法
我找到了一个关于 2 个不同密钥的帖子,但这个指的是服务器和一个 git,两者都使用不同的 pem 文件。事实并非如此。
我到了本教程,但找不到我需要的东西。
我不知道这是否与我所问的内容有关:我正在开发一个带有 ruby 1.9.2p290 和 rails 3.0.10 的 rails 应用程序,并且我正在使用 svn 存储库
欢迎任何帮助。多谢
您需要使用 capistrano 多级。有一个 gem 可以做到这一点,或者您可以直接将环境或暂存文件包含在 capfile 中。
您将无法同时部署到这些环境,但可以按顺序部署。
desc "deploy to dev environment"
task :dev do
set :stage_name, "dev"
set :user, "dev"
set :deploy_to, "/usr/applications/dev"
role :app, "10.1.1.1"
end
desc "deploy to aws environment"
task :aws do
set :stage_name, "aws"
set :user, "aws"
set :deploy_to, "/usr/applications/aws"
ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "test.pem")]
ssh_options[:forward_agent] = true
role :app, "10.2.2.2"
end
您将运行:
cap dev deploy; cap aws deploy
您可以将这种复杂性扩展到打开 VPN、用户、网关等。