terraform - 将两个现有的 Terraform 状态组合为模块
问题描述
现在我有一个由多个目录组成的 Terraform 项目:
root
|- stack
|- applications
|- app1
|- app2
|- app3
Stack
包含应用程序的所有常见依赖项。app1
,app2
, 并app3
使用远程状态来引用stack
资源。- 我目前必须
terraform apply
使用单独的.tfvars
. (这最初是设计使然。)
我想用.tf
根目录中的单个文件和stack
/app*
目录作为模块来重构这个项目。从 TF 的角度来看,我知道如何做到这一点,但由于这个项目已经部署在两个不同的环境中,我试图找出将现有stack/app*
资源迁移到新的组合状态文件或至少自动化的最佳方法terraform import
我需要运行的所有命令。
有任何想法吗?
解决方案
您可能想要使用terraform state mv
将状态从每个app
状态移动到stack
状态。确切的用法将取决于您用于您的状态的后端类型。您可以从此处的文档中看到一个示例。请务必在执行此操作之前备份所有状态文件,以便在出现问题时轻松恢复。