是否可以从索引中删除 terraform 资源而不重建

问题描述 投票:0回答:2

我现有的 terraform 基础设施是由我之前的人创建的,他们使用计数创建了实例,我们想要删除计数,但 terraform 想要重建实例。

有没有办法可以删除计数而无需重建实例?

我想知道诸如 terraform state mv 之类的东西是否能够实现这一目标,或者是否有其他可能。

提前致谢!

更新:示例如下所示

  # module.compute.aws_kms_alias.kms-alias will be created
  + resource "aws_kms_alias" "kms-alias" {
      + arn            = (known after apply)
      + id             = (known after apply)
      + name           = "alias/kms-eks"
      + name_prefix    = (known after apply)
      + target_key_arn = (known after apply)
      + target_key_id  = (known after apply)
    }

  # module.compute.aws_kms_alias.kms-alias[1] will be destroyed
  - resource "aws_kms_alias" "kms-alias" {
      - arn            = "arn:aws:kms:::alias/kms-eks" -> null
      - id             = "alias/kms-eks" -> null
      - name           = "alias/kms-eks" -> null
      - target_key_arn = "" -> null
      - target_key_id  = "" -> null
    }
terraform terraform-provider-azure
2个回答
5
投票

您可以修改状态以重命名状态中的资源以匹配您的配置中的内容。由于

count
元参数包含特殊字符,因此命令中的资源需要在 shell 解释器中转换为文字字符串:

terraform state mv 'module.compute.aws_kms_alias.kms-alias[1]' module.compute.aws_kms_alias.kms-alias

0
投票

请注意,如果您要创建一个索引为字符串的资源,则需要使用如下语法:

terraform state mv 'module.compute.aws_kms_alias.kms-alias["element_1"]' module.compute.aws_kms_alias.kms-alias
© www.soinside.com 2019 - 2024. All rights reserved.