我正在寻找有关如何最好地将 terraform 状态文件分解为更小的状态文件的指导/建议。
我们目前为每个环境都有一个状态文件,但它已经变得无法管理,所以我们现在希望每个 terraform 模块都有一个状态文件,因此我们需要分离出当前状态文件。
最好将其指向一个新的 s3 存储桶,然后运行计划并申请分解的模块并为每个模块生成一个新的状态文件,或者有更简单或更好的方法来实现这一点吗?
>答案 0 :(得分:3)
这完全取决于您的环境是如何配置的以及停机时间有多重要?
以下是两种一般情况,我可以从您的问题中想到。
第一个场景 -(如果你能抽出时间)
第二个场景 - (如果你不能抽出时间)
terraform state mv
的命令,它可以帮助您将一种 terraform 状态迁移到另一种状态。一些有用的链接 https://www.terraform.io/docs/cli/commands/state/mv.html https://www.terraform.io/docs/cli/commands/init.html#backend-initialization
答案 1 :(得分:0)
尽管唯一的其他答案(截至目前)仅列出了两个选项 - 另一个选项是您可以简单地制作 terraform 存储库(或文件夹,但您正在处理您的基础架构) - 然后执行 terraform import
以将现有基础设施引入那些(希望如此)存储库。
一旦所有的导入都被证明是成功的,你就可以删除原始的 repo/source/etc。整体地形状态。
需要注意的是,每个新状态源的代码必须与现有代码和状态匹配,否则会失败。