CodeDeploy 命令与 terraform 状态混淆
CodeDeploy command messes with terraform state
在我们的 CI/CD 解决方案中,我们的基础设施是通过 Terraform 设置的。该设置包括 ECS、CodeDeploy 部署组等,作为初始的一部分,我们使用准系统 taskdef 设置 ECS。
虽然这是我们的初始设置,但我们的常规代码增量是通过 Jenkins 和 aws code deploy cli 命令在最新版本的任务定义上部署最新版本的映像。
然而,这会带来一个问题,即在实时环境中通过 terraform 对 ECS 进行的任何新的基础设施相关更改都会将任务替换回原始的准系统,从而导致出现问题。
有人遇到过这个问题并有解决方案吗?
我们要尽可能坚持以下
- 仅通过 terrafdorm 进行基础设施设置
- 通过 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
将成为您防止不需要的更新的主要工具。
在我们的 CI/CD 解决方案中,我们的基础设施是通过 Terraform 设置的。该设置包括 ECS、CodeDeploy 部署组等,作为初始的一部分,我们使用准系统 taskdef 设置 ECS。
虽然这是我们的初始设置,但我们的常规代码增量是通过 Jenkins 和 aws code deploy cli 命令在最新版本的任务定义上部署最新版本的映像。
然而,这会带来一个问题,即在实时环境中通过 terraform 对 ECS 进行的任何新的基础设施相关更改都会将任务替换回原始的准系统,从而导致出现问题。
有人遇到过这个问题并有解决方案吗?
我们要尽可能坚持以下
- 仅通过 terrafdorm 进行基础设施设置
- 通过 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
将成为您防止不需要的更新的主要工具。