CodeDeploy 命令与 terraform 状态混淆

CodeDeploy command messes with terraform state

在我们的 CI/CD 解决方案中,我们的基础设施是通过 Terraform 设置的。该设置包括 ECS、CodeDeploy 部署组等,作为初始的一部分,我们使用准系统 taskdef 设置 ECS。

虽然这是我们的初始设置,但我们的常规代码增量是通过 Jenkins 和 aws code deploy cli 命令在最新版本的任务定义上部署最新版本的映像。

然而,这会带来一个问题,即在实时环境中通过 terraform 对 ECS 进行的任何新的基础设施相关更改都会将任务替换回原始的准系统,从而导致出现问题。

有人遇到过这个问题并有解决方案吗?

我们要尽可能坚持以下

  1. 仅通过 terrafdorm 进行基础设施设置
  2. 通过 aws code deploy cli 命令进行部署以影响新部署。

有没有办法让 terraform 知道不必担心仅在 ECS 中的 taskdef 并且在 terraform 状态之外进行管理?

lifecycle 元参数可以添加到任何 terraform 资源,当您重新应用 terraform 时有选择地防止不需要的更新。

https://www.terraform.io/docs/configuration/meta-arguments/lifecycle.html

prevent_destroy 有助于在您进行会破坏资源的更改时获取计划时间错误。

ignore_changes 将成为您防止不需要的更新的主要工具。