AWS CD/CI 管道与 ASG 和 ELB (bitbucket)
AWS CD/CI pipeline with ASG and ELB (bitbucket)
我必须首先声明我对 AWS 比较陌生,但发现它非常有用。让我描述一下我的情况...
我目前拥有的
- 一个自动缩放组 (ASG)
- 弹性负载均衡器 (ELB)
- 使用 CodeDeploy 和 Bitbucket 的 CD/CI 管道
- Node/Express 应用程序在 EC2 实例
上提供自定义 API
- VPC 和子网运行良好
- 带有我的应用程序代码的 AMI
我的问题
当 ASG 决定使用我的启动模板和 AMI 扩展新的 EC2 实例时,它将使用 AMI 中的应用程序代码。但如果我在某个时候部署到 master,我的 AMI 将不会更新,但 ASG 中的实例会更新。确保 ASG 生成的新实例是 运行最新代码版本(master)的最佳方法是什么?
我的初步想法
我正在考虑在启动配置中包含一个 bash 脚本,该脚本将从 Bitbucket 中提取最新代码,并且 运行 任何后续步骤来获取我的应用程序 运行ning(例如如“npm install”、“npm 运行 start”等)。我相信有人有更优雅的解决方案,我很想听听一些建议。
对于来到这里的任何人,我确实解决了我的问题。一开始我是对的。一旦实例启动并且 运行,启动模板中的“用户数据”字段是 bootstrap 我的应用程序的好地方。它基本上是从远程仓库克隆,然后执行任何必要的步骤来启动应用程序。
例如,在 EC2 的启动配置中
#cloud-boothook
#!/bin/bash
git clone myremoterepo.git
cd myremoterepo
npm install
npm run start
此外,如果您是 运行 经典负载均衡器,当您的 ASG 扩展 EC2 实例时,CodeDeploy 将尝试根据您在 S3 中的最新代码存储库开始部署。所以上面的解决方案将是多余的。
我必须首先声明我对 AWS 比较陌生,但发现它非常有用。让我描述一下我的情况...
我目前拥有的
- 一个自动缩放组 (ASG)
- 弹性负载均衡器 (ELB)
- 使用 CodeDeploy 和 Bitbucket 的 CD/CI 管道
- Node/Express 应用程序在 EC2 实例 上提供自定义 API
- VPC 和子网运行良好
- 带有我的应用程序代码的 AMI
我的问题
当 ASG 决定使用我的启动模板和 AMI 扩展新的 EC2 实例时,它将使用 AMI 中的应用程序代码。但如果我在某个时候部署到 master,我的 AMI 将不会更新,但 ASG 中的实例会更新。确保 ASG 生成的新实例是 运行最新代码版本(master)的最佳方法是什么?
我的初步想法
我正在考虑在启动配置中包含一个 bash 脚本,该脚本将从 Bitbucket 中提取最新代码,并且 运行 任何后续步骤来获取我的应用程序 运行ning(例如如“npm install”、“npm 运行 start”等)。我相信有人有更优雅的解决方案,我很想听听一些建议。
对于来到这里的任何人,我确实解决了我的问题。一开始我是对的。一旦实例启动并且 运行,启动模板中的“用户数据”字段是 bootstrap 我的应用程序的好地方。它基本上是从远程仓库克隆,然后执行任何必要的步骤来启动应用程序。
例如,在 EC2 的启动配置中
#cloud-boothook
#!/bin/bash
git clone myremoterepo.git
cd myremoterepo
npm install
npm run start
此外,如果您是 运行 经典负载均衡器,当您的 ASG 扩展 EC2 实例时,CodeDeploy 将尝试根据您在 S3 中的最新代码存储库开始部署。所以上面的解决方案将是多余的。