理想的terraform工作空间项目结构

mar*_*ark 7 infrastructure terraform

我想设置Terraform来管理dev/stage/prod环境.所有环境中的基础结构都是相同的,但每个环境中的变量都存在差异.

现在,在Terraform 0.10中引入了工作空间,理想的Terraform项目结构是什么样的?在命名/标记基础架构时如何引用工作区?

yda*_*coR 8

我不建议在静态环境中使用工作空间(以前的"环境"),因为它们会增加一些复杂性并且更难以跟踪.

您可以为所有环境使用单个文件夹结构,使用工作空间分隔环境,然后使用基于工作空间的条件值来设置差异.在实践中(尤其是超过2个导致嵌套三元语句的环境),您可能会发现这很难管理.

相反,我仍然主张为每个静态环境提供单独的文件夹,并使用符号链接在所有环境中保持所有.tf文件相同,并使用terraform.tfvars文件在每个环境中提供任何差异.

我建议在动态环境中使用工作空间,例如短期审查/实验室环境,因为这样可以提供很大的灵活性.我目前正在使用它们在Gitlab CI中创建审阅环境,因此每个分支都可以有一个可选的部署审阅环境,可用于手动集成或探索性测试.