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

How can I deploy multiple applications to a instance using AWS codedeploy

我是 codedeploy 的新手,我打算部署多个应用程序以便将其部署到单个实例。我正在使用 cloudformation 模板创建 codedeploy,但找不到任何关于部署多个应用程序修订版的说明。这是我想要做的:

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

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

1.如果您的应用程序相当独立

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

结构如下所示:

  • 申请1
    • 部署组 1
      • ASG-abc
  • 申请2
    • 部署组 2
      • ASG-abc

如果您想确保应用程序按顺序部署,则由您在使用 API 推送新修订时进行管理。我们通常编写脚本来推送修订,然后定期轮询 api 以了解已创建部署的状态,直到它完成(或者如果您使用的是 AWS CLI,则可以使用 aws deploy wait deployment-successful),并且然后进行下一个申请。

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

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

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

您最好将所有应用程序捆绑到一个 AWS CodeDeploy 应用程序中,并使用与 AfterInstall 挂钩关联的脚本按顺序配置和 'turn on' 每个应用程序(例如启动 service/daemon).有关如何执行此操作的更多详细信息将取决于您的应用程序的性质,并且可能取决于您需要按顺序部署这些应用程序的原因。

这使您可以灵活地按顺序执行配置逻辑并推迟 'starting' 应用程序,直到您确定所有应用程序都已成功复制和配置。

编辑 20170606 - 删除方法 1

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

如果您确实希望在同一个实例上运行多个应用程序,目前最好的做法似乎是将它们捆绑到同一个 CodeDeploy 应用程序中。

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