AWS AutoScaling实例克隆git

时间:2014-12-15 11:54:46

标签: git amazon-web-services deployment autoscaling

我正在使用自定义AMI在AWS中设置自动缩放组。 我知道AWS保留了一个“用户数据”部分,人们可以在这里输入他们的脚本,并且可以在创建实例时执行这些部分,但我想我更愿意将启动脚本添加到图像本身。

我将创建自定义映像(设置Web服务器和所需的所有其他包),然后需要创建一个启动脚本,将我的git存储库(ssh)克隆到“/ var / www /”中。 / p>

我的问题是:将存储库直接克隆到Web服务器文件夹有什么缺点吗? 整个想法是:当平衡器上的负载过高时,将从AMI创建一个新实例,并且在启动时,实例将从私有git存储库中获取源代码。 - >有关进行此过程的最佳方法的建议吗?我很感激一些指导!

至于为已经运行的实例部署新代码,我将使用Capistrano。

提前致谢!

2 个答案:

答案 0 :(得分:0)

有一些缺点,是的:

  1. 如果回购邮件特别大,这需要一段时间 - 您需要在每个自动扩展引导程序中删除大量不需要的数据(可以使用git clone --depth = 1尝试最小化您下载的数据。)
  2. 您希望为此运行您自己的独立远程,因为依赖第三方能够部署代码并不是很好 - 您不希望在部署流程中依赖github。
  3. 您的部署工件不会是不可变的,因为它可以编辑标签/ rebase提交不存在/无论如何。
  4. 另一种方法是使用fpm之类的东西来构建部署工件,将其作为构建的一部分存储在S3中,然后使用capistrano-artifact让服务器在启动时从S3获取工件。天真的,您也可以在特定版本中添加其中的内容。这具有超级快速下载的额外好处。尽管如此,你可能会失去一些灵活性 - 像slugforge这样的东西可能有助于将前面的车辆放在盒子上,并明确支持基于符号链接的回滚。

    顺便说一句,我认为你很聪明,不要在用户数据中添加太多逻辑 - 你希望尽可能简单,因为更改它意味着构建一个全新的启动配置。我建议不要在AMI上使用引导程序,而是将其存储在S3中并使用runurl从userdata脚本执行它。

答案 1 :(得分:0)

您可以尝试使用git clone命令中的--depth = 1选项最小化下载大小。这将使git仅提取包的最后一个版本。