首页 > 解决方案 > Terraform 工作空间命名约定

问题描述

我有 4 个 terraform 目录,用于存储库的 4 个分支(dev、qa、uat、prod)。通过在 TF 云中添加“分支”作为环境变量,并在我的资源中使用它,我能够插入我需要的每个变量。但是,工作区名称本身就是问题所在。尝试向其添加插值变量会引发错误 - 工作区名称不能包含这些。而且由于我的分支自动相互 PR(代码立即从 dev 一直提升到 prod)它会导致冲突 - 因为所有 tf​​ 文件现在都有不同的硬编码工作区名称。是的,当我推广我的分支时,我可以忽略 terraform 文件,但我的想法是编辑 dev.tf 会影响所有其他人。有什么办法可以解决这个问题?

标签: azure-devopsterraform

解决方案


我认为你需要远离拥有多个分支机构。分支跟踪同一代码库上的更改。此外,当您有一个后端配置但您的基础设施有多个实例时,工作区是可用的。例如,多个开发人员使用单个 AWS 账户使用相同的 IaC 创建自己的沙盒应用程序。

由于您有多个环境(dev、qa、uat、prod),我建议使用相同的代码库和不同的配置文件。就像是:

  • common.tfvars
  • 开发者.tfvars
  • qa.tfvars
  • uat.tfvars
  • prod.tfvars

当您想更改某些内容时,仅编辑dev.tfvars,测试您的更改,然后将这些配置更改添加到其余文件中。此外,考虑标记您的 prod infra 并仅在此处使用 git 标签应用更改。


推荐阅读