【问题标题】:Deployment in Amazon VPC with custom gems hosted inside company's network使用托管在公司网络内的自定义 gem 在 Amazon VPC 中进行部署
【发布时间】:2014-06-01 16:43:45
【问题描述】:

我有一个非常有趣的问题。以下是我当前在 Amazon EC2 中以经典模式部署的工作流程。

  1. 在我公司的网络中部署主机。

  2. 部署目标是 AWS 中的 EC2 机器。

  3. 在公司的 git 帐户中有自定义 ruby​​ gem(因此无法从我的公司网络外部安装 gem)。

  4. 解决第 3 点中提到的问题。我在部署主机和部署目标之间使用了反向隧道。

  5. 我正在使用 capistrano 进行部署。


现在问题出现了,当我们决定从 Amazon Classic 迁移到 Amazon VPC 时,部署目标只有私有 IP 地址。这是我想到的在 VPC 实例中部署代码的工作流程。

  1. 在 Amazon VPC 中创建一个部署主机并将公共 dns 附加到它,以便我可以从我的主要部署主机(位于我公司的网络内)访问它。

  2. 通过从 AWS 部署主机运行部署脚本来部署代码。

问题是我无法找到一种方法来安装托管在我公司的 git 帐户中的 gem。你们能帮我解决这个问题吗?

【问题讨论】:

  • 您是否考虑将该 gem 缓存在我们的供应商文件夹中?
  • 你的VPC不是也在你的公司网络里吗?
  • @Rico:不,VPC 不在公司网络内。有办法吗?
  • @spickermann:谢谢。我会探索这个选项。

标签: ruby amazon-web-services amazon-ec2 capistrano amazon-vpc


【解决方案1】:

在部署之前,您只需推送到 AWS 部署主机中的 git 裸存储库即可设置生产存储库的 git 镜像。

然后,该 AWS 部署主机也可以访问您的 VPC,因此您可以从那里进行部署。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    先下载 gems,然后使用 scp 将其传递给 vpc 中的 ec2 实例

    scp -r -i key ubuntu@ip-address:/ruby-app
    

    然后从文件夹中运行gem install gem-name,它将从与名称匹配的文件夹中安装gem。

    运行bundle package,这将下载所有的gem并出现在vendor/cache文件夹中。现在将此文件移动到 ec2 实例。

    【讨论】:

      猜你喜欢
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2015-01-17
      • 2012-02-06
      • 1970-01-01
      相关资源
      最近更新 更多