自动执行AWS AMI更新和部署过程

时间:2017-12-12 09:34:31

标签: amazon-web-services continuous-integration autoscaling ami packer

我已经设置了一个在ubuntu基础映像上安装和设置应用程序堆栈然后从机器创建AMI的过程。所有这些都是使用包装机自动完成的。现在,一旦我有了ami-id,一旦打包器完成,我手动创建一个新的启动配置并更新我的ASG配置,然后安排向上扩展和缩小操作,从而摆脱旧实例。

所以我要找的是:

  1. 如果有任何软件版本的新更新(例如ngnix ruby​​等),请建议更好的方法来更新我的应用程序堆栈。
  2. 如何自动化推出流程,以便拾取新的ami并使旧实例降级。

1 个答案:

答案 0 :(得分:3)

Faster Auto Scaling in AWS CloudFormation Stacks with Lambda-backed Custom Resources

有一个很好的策略
  

要编排此过程,请使用a引导引用实例   用户数据脚本,使用等待条件触发AMI捕获,以及   最后创建一个Auto Scaling组启动配置   引用新创建的AMI。使用的引用实例   然后可以终止捕获AMI,或者可以将其重新用于   管理访问或执行计划任务。

该过程不使用Packer,也不需要专用服务器来创建AMI,而是使用Lambda支持的自定义资源。

第二个选项

由于您已经在Packer中创建了AMI,因此您应该考虑使用Lambda使用更新的AMI复制现有的启动配置。你可以从Patch an AMI and Update an Auto Scaling Group找到一个很好的方法:

  

以下示例以Simplify AMI Patching Using为基础构建   Automation,Lambda和Parameter Store示例,通过添加一个步骤   使用新修补的AMI更新Auto Scaling组。这个   方法确保自动提供新图像   使用Auto Scaling组的不同计算环境。

     

此示例中自动化工作流程的最后一步使用AWS   Lambda函数用于复制现有的启动配置并设置   新修补的AMI的AMI ID。然后是Auto Scaling组   使用新的启动配置进行更新。在这种类型的汽车   扩展方案,用户可以终止Auto中的现有实例   缩放组以强制启动使用新实例的新实例   图片。或者,用户可以等待并允许扩展或向外扩展事件   自然地推出更新的实例。