一个人在多个环境中应拥有多少个地形状态?

时间:2018-09-14 16:06:51

标签: terraform

但是,我对每个环境应该有多少tfstates感到困惑。我了解stage/prod/dev中的每个环境都应该分别拥有自己的tfstate。但这是否意味着每个环境中应该只有一个tfstate(例如:一个用于阶段,一个用于生产,一个用于开发)总共三个tftstates,其中所有配置都驻留在该环境将被记录?还是每个环境都应具有多个tftstates(例如:阶段将为tftstate提供vpc config,为frontend-apps配置提供另一个tftstate,为后端提供另一个tftstate应用…等),以及与prod和dev相似吗?

1 个答案:

答案 0 :(得分:0)

我玩了一堆堆东西来进行状态管理,并将所有内容分开。您应该为每个环境设置单独的状态。

这可能与您在互联网上遇到的建议不同。即。创建单独的文件夹并在默认环境下具有状态。

我通过单个S3存储桶和dynamodb的状态和锁定来维护特定于client-env的工作区命名,从而维护单个工作区的状态。

Terraform使它们保持独立的w.r.t工作区前缀,S3存储桶如下所示。

-terraform (workspace-prefix)
     -clientA-ENV-A
     -clientA-ENV-B
     -clientB-ENV-A
     ...

我为所有客户端和环境运行相同的Terraform配方,因此不会复制粘贴任何代码。

多个用户可以在客户端和env特定的工作区上工作,这有助于CI / CD避免重复初始化。