我可以使用AWS代码部署在自动缩放时提取应用程序代码吗?

Nik*_*kla 16 github amazon-web-services autoscaling aws-code-deploy

我想在负载变高时自动调整基础架构.我正在运行我的基础设施AWS.我有一个要求,我需要从Github何时发出应用程序代码autoscaling.由于代码经常更改,我们无法从中获取AMI并启动实例AMI.所以我想从中提取最新的代码repositories.AWS刚刚推出了一项名为的服务AWS CodeDeploy.如何在实例启动时使用此服务自动执行代码拉取过程?

PS我已经编写了一个init script自动附加EIP白名单的白名单,将IP放在不同的安全组上,并load-balancer在实例启动时将实例放在a 下,并在实例在autoscaling中终止时撤销所有内容.

Jon*_*pie 25

CodeDeploy是解决您问题的绝佳方案.如果配置正确,它可以自动部署到由Autoscaling旋转的新EC2实例.要实现这一点,您需要做三件事:

  1. Auto Scaling组,用于在安装并运行最新Host Agent的情况下启动实例.
  2. 已配置为部署到该Auto Scaling组的代码部署部署组(作为Auto Scaling组而不是标签).
  3. 要自动部署到新实例的目标修订.如果没有目标修订,Code Deploy将看到实例启动,但不会部署任何内容.

以下是可用于帮助入门的教程:教程:使用AWS CodeDeploy将应用程序部署到Auto Scaling组.该教程将指导您在安装代理的情况下烘焙AMI并设置部署组以将代码部署到新实例.

如果您在预安装代理的情况下烘焙AMI,则需要定期使用代理版本更新该映像.安装代理程序后,它将自行更新,但如果代码部署不再支持代理程序版本,则Auto Scaling可能会使实例启动失败.对于实际的生产用途,我建议不要烘焙AMI,而是在启动实例时安装最新的代理.(应该更新教程以尽快使用此方法.)

您可以设置实例以在引导时自动下载并运行最新的安装程序.实际上,在创建Auto Scaling组时,您将shell脚本粘贴为用户数据.

例如,我在Amazon Linux上测试了以下脚本(取自设置新的Amazon EC2实例以使用AWS CodeDeploy):

#!/bin/bash
yum -y update
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
chmod +x ./install
./install auto
Run Code Online (Sandbox Code Playgroud)

您可以将其粘贴到user data创建Auto Scaling组时.对于Auto Scaling,您可以在配置详细信息 - >高级详细信息下创建启动配置时进行设置.

要设置部署组并设置目标修订:

  1. 创建或编辑部署组以包括Auto Scaling组.(注意:首先必须存在Auto Scaling组才能使其正常工作.)
  2. 确保Auto Scaling组中至少有一个实例.
  3. 部署要自动部署到部署组的工件包.
  4. 假设步骤3成功,部署组现在将该捆绑设置为其目标修订.对于自动部署,这将成为已知的良好部署修订版.

Auto Scaling组中Auto Scaling启动的新实例将自动部署部署组的目标修订版.手动部署失败的修订不会自动自动部署.