【问题标题】:How do I move a resource to a new tf file and state without destroying and recreating?如何在不破坏和重新创建的情况下将资源移动到新的 tf 文件和状态?
【发布时间】:2018-10-24 13:54:48
【问题描述】:

我的 tf 文件中有一个使用此状态的资源 (aws_iam_role.derp):

terraform {
  backend "s3" {
    bucket = "mybucket"
    region = "us-east-1"
    key = "aaaaaa"
  }
}

我想将它移动到另一个状态文件(名为“bbbbbb”)。

我不想移动这个 tf 文件中的所有其他资源。

如何将此资源移动到另一个状态文件?我创建了一个新的 tf 文件(在不同的文件夹中)并指定了一个新状态:

terraform {
  backend "s3" {
    bucket = "mybucket"
    region = "us-east-1"
    key = "bbbbb"
  }
}

当我运行 terraform 时,应用 terraform 将其视为新资源。

我想将此资源移动到新的 tf 文件中,而不必销毁并重新创建它。

【问题讨论】:

    标签: terraform


    【解决方案1】:

    我不确定这是唯一的方法,但我通常会使用“terraform state rm”从当前状态文件中删除资源的状态,然后将资源定义移动到新文件夹,然后将该资源导入到新状态文件

    【讨论】:

      【解决方案2】:

      你能做的是,

      1. 您可以在新的 tfstate 文件中导入您的资源。
      2. 将相关代码移至新的 tf 文件。
      3. 从旧的 tf 文件中删除移动的代码。

      【讨论】:

        【解决方案3】:

        您可以使用terraform state rm 从状态文件中删除资源。
        您可以使用terraform import 将资源导入状态文件

        确保按照其他提及的方式相应地重构您的代码,以免您的资源被破坏/重新创建。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-11
          • 2019-10-07
          • 1970-01-01
          • 2020-12-28
          • 1970-01-01
          • 2020-01-03
          • 2021-04-08
          相关资源
          最近更新 更多