【问题标题】:How to break down terraform state file如何分解 terraform 状态文件
【发布时间】:2021-07-13 21:10:18
【问题描述】:

我正在寻找有关如何最好地将 terraform 状态文件分解为更小的状态文件的指导/建议。

我们目前每个环境都有一个状态文件,但它变得无法管理,因此我们现在希望为每个 terraform 模块创建一个状态文件,因此我们需要分离出当前的状态文件。

最好将其指向一个新的 s3 存储桶,然后运行计划并申请分解的模块并为每个模块生成一个新的状态文件,还是有更简单或更好的方法来实现这一点?

【问题讨论】:

    标签: module terraform terraform-provider-aws


    【解决方案1】:

    这一切都取决于您的环境是如何配置的以及停机时间有多重要?

    以下是两种一般情况,我可以从您的问题中想到。

    第一个场景 - (如果你能抽出时间)

    1. 通过为每个模块定义单独的后端并从那时起配置基础架构,销毁您获得的所有内容并从头开始。因此,现在您可以进行后端隔离,并且基础架构管理变得更加容易。

    第二个场景——(如果你不能放下时间)

    1. 假设您正在运行任务关键型工作负载,绝对不能让任何停机时间。
    2. 在这种情况下,您必须制定适当的计划,将庞大的单体后端迁移到较小的后端。
    3. Terraform 有一个名为 terraform state mv 的命令,它可以帮助您将一种 terraform 状态迁移到另一种状态。
    4. 在处理场景时,从较低级别的环境开始,然后从那里开始工作。
    5. 记下您在较低级别环境中迁移过程中遇到的任何警告,同样的警告也适用于较高级别的环境

    一些有用的链接 https://www.terraform.io/docs/cli/commands/state/mv.html https://www.terraform.io/docs/cli/commands/init.html#backend-initialization

    【讨论】:

      【解决方案2】:

      虽然唯一的其他答案(截至目前)仅列出了两个选项 - 另一个选项是您可以简单地制作 terraform repos(或文件夹,但是您正在处理您的基础架构) - 然后执行 terraform import 以将现有的基础设施到那些(希望)回购。

      一旦所有的导入都被证明是成功的,你就可以删除原来的 repo/source/etc。整体地形状态。

      需要注意的是,每个新状态源的代码必须与现有代码和状态匹配,否则会失败。

      【讨论】:

        猜你喜欢
        • 2021-09-09
        • 2021-12-11
        • 1970-01-01
        • 2021-09-30
        • 2016-04-29
        • 2021-05-20
        • 2021-04-05
        • 2020-10-26
        • 2022-01-26
        相关资源
        最近更新 更多