我可以告诉 Terraform 在创建资源 B 之前删除资源 A 吗?

我可以告诉 Terraform 在创建资源 B 之前删除资源 A 吗?

我正在迁移 Terraform 存储库中的某些内容,并将资源 A 替换为不同类型的资源 B。如果细节很重要,A 是 CloudFormation 堆栈,B 是同一事物的原生 Terraform 资源。

我想告诉 Terraform 在尝试创建资源 B 之前删除资源 A,因为它们设置了相同的东西,否则我会从 AWS 收到有关重复事物的错误。

我可以巧妙地使用它depends_on来按照我想要的顺序删除它吗?

来自文档:

Depends_on 元参数指示 Terraform 在对声明依赖项的对象执行操作之前完成对依赖项对象的所有操作(包括读取操作)。

删除时是否反向执行相同的操作?因此,我可以这么说,B depends_on A并让它在创建 B 之前对 A (删除) 执行所有操作吗?或者还有其他方法可以做到这一点?

目前,我只需要运行 2 次,让第一次失败。但感觉应该有一种方法可以在 1 次内完成这项工作……

答案1

如果您要替换现有资源的 Terraform 配置,则无需删除该资源。您可以从状态中删除资源 A,然后添加资源 B。以下步骤很有帮助:

  1. 运行terraform state rm以从 Terraform 状态中删除资源 A
  2. 删除资源 A Terraform 配置代码
  3. 添加资源 B Terraform 配置代码
  4. 运行terraform import以将现有资源 B 的状态添加到状态

相关内容