gpt4 book ai didi

terraform - 在应用调用之间存储 tfstate

转载 作者:行者123 更新时间:2023-12-04 03:30:06 25 4
gpt4 key购买 nike

我已经使用 Terraform 为我的 AWS VPC 设置创建配置。这个想法是在每个部署中使用 terraform apply 以及 terraform destroy -target aws_nat_gateway.nat_gateway 删除 AWS NAT 网关,因为它只需要正确部署应用程序。

  • 我应该如何在每次部署之间共享/存储我的 terraform.tfstate
  • 我还应该存储 terraform.tfstate.backup 它的职责吗?
  • 是否有其他方法可以确保使用现有的 VPC? (硬编码它的名字就像一个 SQL 表 if exists )

最佳答案

Terraform 的 -target 选项并非旨在用作任何常规工作流的一部分,而是作为一种在特殊情况下解决错误和限制的方法,否则您可能会被阻止。

考虑到您的潜在问题而不是您提出的解决方案,听起来您的系统设计要求 NAT 网关仅在某些其他操作发生时存在,之后您希望将其销毁。

Terraform 不是这种情况的理想工具,因为它通常用于描述和管理长期存在的基础设施,这些基础设施在您最初创建后会无限期地保持事件状态。但是,如果您确实希望使用 Terraform 来解决这个问题,那么我建议将问题分解成更小的部分,然后使用 automation以正确的顺序编排运行几个单独的 Terraform 操作。

具体来说,我会写一个 Terraform 配置,它只描述你想在采取其他行动后立即销毁的“临时”对象(你的 NAT 网关,以及与之相连的任何其他东西),然后是另一个单独的Terraform 配置暗示依赖于该 NAT 网关的操作。举个例子,我们假设它们位于两个名为 transientpersistent 的同级目录中,每个目录都是一个单独的 Terraform 配置,具有自己配置的后端。

然后您可以使用如下序列自动执行此操作:

  • terraform -chdir=transient init(准备“transient”工作目录)
  • terraform -chdir=transient apply(创建 NAT 网关)
  • terraform -chdir=persistent init(准备“持久”工作目录)
  • terraform -chdir=persistent apply(计划并将任何必要的更改应用到长生命周期对象)
  • terraform -chdir=transient destroy(销毁 NAT 网关)

这个答案间接解决了你的一个问题,我现在也将更直接地回答这个问题:transientpersistent 目录在这里都有自己的状态,使得当某人打算只破坏 NAT 网关时,错误不太可能导致他们破坏长期存在的对象。

关于terraform - 在应用调用之间存储 tfstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67087260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com