我正在使用自定义AMI在AWS中设置自动缩放组。 我知道AWS保留了一个“用户数据”部分,人们可以在这里输入他们的脚本,并且可以在创建实例时执行这些部分,但我想我更愿意将启动脚本添加到图像本身。
我将创建自定义映像(设置Web服务器和所需的所有其他包),然后需要创建一个启动脚本,将我的git存储库(ssh)克隆到“/ var / www /”中。 / p>
我的问题是:将存储库直接克隆到Web服务器文件夹有什么缺点吗? 整个想法是:当平衡器上的负载过高时,将从AMI创建一个新实例,并且在启动时,实例将从私有git存储库中获取源代码。 - >有关进行此过程的最佳方法的建议吗?我很感激一些指导!
至于为已经运行的实例部署新代码,我将使用Capistrano。
提前致谢!
答案 0 :(得分:0)
有一些缺点,是的:
另一种方法是使用fpm之类的东西来构建部署工件,将其作为构建的一部分存储在S3中,然后使用capistrano-artifact让服务器在启动时从S3获取工件。天真的,您也可以在特定版本中添加其中的内容。这具有超级快速下载的额外好处。尽管如此,你可能会失去一些灵活性 - 像slugforge这样的东西可能有助于将前面的车辆放在盒子上,并明确支持基于符号链接的回滚。
顺便说一句,我认为你很聪明,不要在用户数据中添加太多逻辑 - 你希望尽可能简单,因为更改它意味着构建一个全新的启动配置。我建议不要在AMI上使用引导程序,而是将其存储在S3中并使用runurl从userdata脚本执行它。
答案 1 :(得分:0)
您可以尝试使用git clone命令中的--depth = 1选项最小化下载大小。这将使git仅提取包的最后一个版本。