【问题标题】:Jenkins: Deploy application to an EC2 instanceJenkins:将应用程序部署到 EC2 实例
【发布时间】:2019-05-17 02:40:25
【问题描述】:
我一直在为我的环境制作云形成模板。我最终得到一个
- VPC
- 子网 x2
- 自动扩缩组
- 启动配置(AWS Linux AMI 上的 EC2 实例)
- 应用负载平衡器
- Codedeploy(用于部署)
但我在使用 Cloud Formation 配置 CodeDeploy 时遇到了问题,因为并非所有功能都适用于 EC2 实例。手动配置 CodeDeploy 后,我在部署时遇到错误,例如“不健康的实例太少”,之后即使启用了回滚,创建的实例也不会被销毁。我现在只使用一个 EC2 实例进行应用,但计划在未来进行扩展。
CodeDeploy 有替代方案吗?我有兴趣从 Jenkins Machine 触发部署。
【问题讨论】:
标签:
amazon-web-services
jenkins
amazon-ec2
deployment
amazon-cloudformation
【解决方案1】:
对于以上您的要求,我强烈建议使用 aws elastic beanstalk 将代码部署到 aws 的更好方法。因为我们可以在elastic beanstalk 中管理这些并且对于代码部署,使用codeship 也是管理与github 集成的部署而不是aws 代码部署的更好方法。
【解决方案2】:
转到“实例设置”,确保您已为 EC2 实例分配了正确的 IAM 角色。这将确保您的部署顺利进行而不会引发该错误。
您还可以通过 jenkins 使用 CodeDeploy 将部署配置到 EC2。
要遵循的步骤:
AWS CodeDeploy:
- 创建一个新的 CodeDeploy 应用程序。
- 输入合适的应用程序名称并选择“EC2/本地”作为计算平台。
- 在应用程序下添加部署组。例如:“测试”。
- 选择就地部署。
- 将服务角色添加为“Codedeploy 开发”。
这将允许 codedeploy 与其他 AWS 服务进行交互。
- 最好选择合适的部署配置:“OneAtATime”
如果部署到单个 EC2 实例。
- 环境配置:
选择您要在其中部署应用程序的 EC2 实例
詹金斯:
- 在 Jenkins 上,使用合适的应用程序名称创建作业。
- 在“构建后操作”部分中,单击“添加构建后操作”
Jenkins - post build configuration
- 选择:“将应用程序部署到 AWS CodeDeploy”
- 在该部分中输入 CodeDeploy 和 S3 详细信息
- S3 存储桶将包含用于使用 Codedeploy 部署到 EC2 上的所有构建