【问题标题】:Separate Terraform state files for each service?为每个服务单独的 Terraform 状态文件?
【发布时间】:2018-07-05 08:48:52
【问题描述】:

我一直关注这篇特定的博文作为指导。

https://blog.gruntwork.io/how-to-manage-terraform-state-28f5697e68fa

所以我理解每个环境都需要有状态文件,但是是否有人会花费额外的长度并为每个组件使用状态文件?例如,我们的应用程序堆栈有模块。为了简单起见,假设我有两个模块。

App1 - 包含一个 LAMP 堆栈

App2 - LAMP 堆栈加上 rabbitmq 和 redis

每个环境(dev、uat 和 prod)都会有两个应用程序堆栈。你会为每个组件创建一个状态文件,给你 6 个状态文件吗?

【问题讨论】:

    标签: terraform


    【解决方案1】:

    我过去曾使用过这种方法 - 我有 3 个独立的组件和 3 个不同的环境。不同的组件有不同的变化率和一些依赖关系,所以我使用remote state datasource 在它们之间共享输出变量。

    这种方法的最大问题是维护不同环境/组件的管理开销。

    另一种方法是结合workspaces使用不同的组件

    【讨论】:

    • 我的脚趾仍在 TF 中,但你在处理什么类型的偷听?我认为在一个完美的世界中它可以正常工作,并且唯一需要手动管理文件的时间是当事情变糟时。
    • 抱歉,可能不够清楚。我并不是说处理/技术开销只是一种心理“我在正确的环境中工作吗?”高架。您不想认为您正在对 DEV 进行快速更新,但实际上您正在使用 PROD 设置。
    • 我们有 3 个环境(scratch、dev 和 prod,每个环境 2 个区域),我使用了很多模块来完成所有繁重的工作。对于每个设置 env 特定事物(帐户 ID、存储远程状态的位置等)的 env,我都有一点 TF。该 TF 调用一个模块来完成这项工作。虽然 env 特定的 TF 是分开的,但它们都调用相同的模块,这就是我必须进行大部分代码修改的地方。在这种情况下,您可以使用版本化模块来帮助防止在错误的环境中工作,但这会增加我愿意处理的开销。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多