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

标签 terraform infrastructure

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

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

最佳答案

我不建议在静态环境中使用工作区(以前的“环境”),因为它们增加了相当多的复杂性并且更难跟踪。

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

相反,我仍然主张 separate folders for every static environment并使用符号链接(symbolic link)在所有环境中保持所有 .tf 文件相同,并使用 terraform.tfvars 文件在每个环境中提供任何差异。

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

关于terraform - 理想的 terraform 工作空间项目结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45717688/

相关文章:

amazon-web-services - AWS Golang S3管理器上传: Access denied

azure - Terraform 应用到 Azure - 在哪里可以看到通过对 Azure 运行应用所做的更改列表

hadoop - MapR 架构与 Cloudera 架构

django - 在多容器 Docker 设置中运行 Django 迁移

asp.net-mvc - Asp.Net MVC 应用程序中的子域

terraform - 如何使 Terraform 使用 AWS credential_process?

amazon-web-services - Terraform 中 S3 存储桶的 AWS Cloudtrail 事件

google-cloud-functions - trigger_topic 不适用于 terraform 资源 google_cloudfunctions_function

git - 跨多个站点管理 git

rest - RESTful Web 服务是重用基础设施的正确方式吗?