是否有一种通用策略来设置自动扩展的脚本以更新capistrano部署层次结构中的代码,以便在自动扩展事件上启动AMI时从存储库中提取,以确保在自动扩展计算机上运行的提交与提交时的提交相匹配非自动缩放实例?
答案 0 :(得分:11)
我运行的设置有点像这样。我选择不设置实例以便在启动时与git进行交互,因为:
我所做的是我部署的应用程序位于/ var / www / myapp。这实际上是一个单独的EBS卷,安装在该位置。文件系统是xfs,因为您可以使用xfs_freeze安全地获取已装入卷的ebs快照
部署完成后,在钩子后的capistrano中我快照/ var / www / myapp卷。然后,我将自动扩展启动配置的块设备映射更新为"当您启动实例时,从快照创建一个新卷并将其附加到/ dev / sdf。
启动时所有实例都要在/ var / www / myapp上安装该设备,方法是编辑/ etc / fstab或运行超级简单的启动时脚本。 Bundler设置为将其宝石保存在/ var / www / myapp / shared中,以便宝石得到照顾
答案 1 :(得分:2)
万一有人落到这里,我发现了这个宝石:
https://github.com/lserman/capistrano-elbas
将(如自述文件中所述):
- 将代码部署到连接到给定AutoScale组的每个正在运行的实例
- 部署后,从其中一个正在运行的实例
创建AMI- 将AMI与新代码附加到新的AWS Launch Configuration
- 更新AutoScale组以使用新的启动配置
- 删除ELBAS创建的所有旧AMI
- 删除ELBAS创建的所有旧启动配置
因此,它确保自动扩展组的所有实例(正在运行的那些实例和那些 future )将运行相同的代码。
希望这有帮助