如何解决带有ASG和ELB的AWS CD / CI管道位桶
首先,我必须说我对AWS相对陌生,但是发现它非常有用。让我描述一下我的情况...
我目前有什么
- 自动缩放组(ASG)
- 弹性负载平衡器(ELB)
- 使用CodeDeploy和Bitbucket的CD / CI管道
- 在EC2实例上提供自定义API的Node / Express应用
- VPC和子网运行正常
- 带有我的应用程序代码的AMI
我的问题
当ASG决定使用我的启动模板和AMI在新的EC2实例中进行扩展时,它将使用AMI中的应用程序代码。但是,如果我在某个时候部署为主服务器,则不会更新我的AMI,但是会更新ASG中的实例。确保由ASG生成的新实例运行最新代码版本(主版本)的最佳方法是什么?
我的初步想法
我正在考虑在启动配置中包含一个bash脚本,该脚本将从Bitbucket中提取最新代码并运行以下任何步骤以使我的应用程序运行(例如“ npm install”,“ npm run start”等)。我敢肯定有人会提供更好的解决方案,并且我很想听听一些建议。
解决方法
对于任何人,我确实解决了我的问题。最初我是正确的。实例启动并运行后,启动模板中的“用户数据”字段是引导我的应用程序的好地方。它基本上是从远程仓库中克隆出来的,然后执行所有必要的步骤以启动应用程序。
例如,在EC2的启动配置中
#cloud-boothook
#!/bin/bash
git clone myremoterepo.git
cd myremoterepo
npm install
npm run start
此外,如果您正在运行经典的负载均衡器,则当ASG扩展EC2实例时,CodeDeploy将基于S3中的最新代码存储库尝试启动部署。因此上述解决方案将是多余的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。