如何在不应用更改的情况下更新Terraform状态

时间:2019-10-03 15:23:35

标签: terraform

情况是:

  • 我有1个存储库,其中包含许多terraform文件,包括IAM,实例等
  • 我必须将此存储库一分为二(IAM配置将迁移到另一个将地形状态存储在另一个存储桶中的存储库)

因此,我想更新此新存储库的状态,添加IAM配置状态并从旧存储库中删除IAM状态,但是我不想在基础架构中应用更改,因为我必须从旧存储库中删除所有配置,并然后重新创建所有内容。

是否可以在不应用更改的情况下更新状态?

1 个答案:

答案 0 :(得分:1)

最好的方法是创建每个都包含新状态文件的新存储库。 假设从您的旧存储库创建的资源存储在称为“ repo1.tfstate”的状态中。然后,您需要在此处创建一个新的存储库,其中需要一些与repo1分开的东西。然后,您可以使用terraform import将资源导入到repo2中。不要忘记删除刚刚从terraform状态rm的repo1中导入的资源。

另一种方法是执行Terraform状态提取> state-for-repo-2.tfstate,手动编辑该代码,将其放入repo2,然后进行Terraform状态推送。当然,您还必须编辑repo1的状态。但是请注意,terraform状态推送将覆盖原始状态文件...