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

gdi*_*x0n 4 terraform terraform-provider-azure

我现有的 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
    }
Run Code Online (Sandbox Code Playgroud)

Mat*_*ard 5

您可以修改状态以重命名状态中的资源以匹配您的配置中的内容。由于count元参数包含特殊字符,因此命令中的资源需要在 shell 解释器中转换为文字字符串:

terraform state mv 'module.compute.aws_kms_alias.kms-alias[1]' module.compute.aws_kms_alias.kms-alias
Run Code Online (Sandbox Code Playgroud)

  • 当删除列表中间的一个项目时,这对我来说也很有效,该项目动态地驱动资源的创建,以避免数据库被删除和重新创建:“tf state rm ref_to_database[1]”,然后是“tf state mv ref_to_database[2]”引用数据库[1]` (2认同)