如何使用AWS codedeploy将多个应用程序部署到实例

时间:2016-08-16 16:15:27

标签: amazon-web-services amazon-cloudformation aws-code-deploy

我是codedeploy的新手,我打算为单个实例部署多个应用程序。我使用cloudformation模板创建codedeploy,并且找不到任何部署多个应用程序修订的指令。这就是我想要做的事情:

  1. 我想使用相同的codedeploy组部署应用程序,每个应用程序源文件位于具有不同文件名的同一个S3存储桶中。
  2. 我想顺序部署这些应用程序。 我可以使用cloudformation模板吗?

2 个答案:

答案 0 :(得分:2)

这里有两个选项,它实际上取决于应用程序之间关系的性质以及它们需要按顺序部署的原因。

<击> 1。如果您的申请相当独立

执行此操作的最佳方法是为每个应用程序创建新的AWS CodeDeploy应用程序。每个应用程序都有自己的AWS CodeDeploy部署组 - 但是,所有部署组都可以指向相同的自动缩放组(或标记配置,如果这是您识别它的方式)。因此,尽管它们看起来像是单独的部署组(因为它们嵌套在每个单独的应用程序中),但实际上它们描述的是同一组服务器。

结构如下:

  • 申请1
    • DeploymentGroup1
      • ASG-ABC
  • 申请2
    • DeploymentGroup2
      • ASG-ABC

如果您想确保顺序部署应用程序,那么在使用API​​推送新版本时,您可以自行管理。我们通常编写脚本来推送修订版,然后定期轮询api以获取已创建部署的状态,直到完成为止(或者如果您使用的是AWS CLI,则可以使用aws deploy wait deployment-successful),然后继续到下一个申请。

此结构使您可以灵活地将更新部署到单个应用程序,而无需触及其他应用程序。

这也意味着每个应用程序将在下一个应用程序开始部署之前完全部署(即启动和运行)。

2。如果您的应用程序紧密耦合

您可能最好将所有应用程序捆绑到一个AWS CodeDeploy应用程序中,并使用与AfterInstall挂钩关联的脚本来顺序配置和打开&#39;每个应用程序(例如启动服务/守护程序)。有关如何执行此操作的详细信息将取决于应用程序的性质,并可能取决于您需要按顺序部署这些应用程序的原因。

这使您可以灵活地顺序执行配置逻辑并推迟启动&#39;应用程序,直到您确定已成功复制和配置所有应用程序。

编辑20170606 - 删除方法1

虽然原始问题仅涉及单个实例,而不是ASG,但我删除了方法1,因为它在技术上是不正确的。

如果你确实想要在同一个实例上使用多个应用程序,那么最近的做法似乎是将它们捆绑到同一个CodeDeploy应用程序中。

答案 1 :(得分:2)

AWS不建议将多个部署组关联到同一ASG, http://docs.aws.amazon.com/codedeploy/latest/userguide/auto-scaling-integ.html