将两个现有Terraform状态合并为模块

时间:2018-11-19 15:25:30

标签: terraform

现在我有一个包含多个目录的Terraform项目:

root
|- stack
|- applications
   |- app1
   |- app2
   |- app3
  • Stack包含应用程序的所有常见依赖关系。
  • app1app2app3使用远程状态来引用stack资源。
  • 我目前必须分别在四个目录中分别使用单独的terraform apply运行.tfvars。 (这最初是设计使然。)

我想在根目录中使用单个.tf文件并将stack / app*目录作为模块来重构该项目。从TF的角度来看,我知道该怎么做,但是由于该项目已经部署在两个不同的环境中,因此我试图找出将现有stack/app*资源迁移到新的合并状态的最佳方法文件或至少自动执行我需要运行的所有terraform import命令。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可能想要使用terraform state mv将状态从每个app状态转移到stack状态。确切的用法将取决于您用于状态的后端类型。您可以从文档here中看到一个示例。在执行此操作之前,请确保备份所有状态文件,以便在出现问题时可以轻松恢复。