使用 Terraform 的大型基础设施

来源: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform

此示例包含的代码作为为大型基础设施构建 Terraform 配置的示例,该基础设施使用:

  • 2个AWS账户

  • 2个地区

  • 2 个独立的环境(prodstage 什么都不共享)。 每个环境都位于一个单独的 AWS 账户中,并跨越 2 个区域之间的资源

  • 每个环境都使用来自 Terraform Registry 的不同版本的现成基础设施模块 (alb)

  • 每个环境都使用相同版本的内部模块modules/network,因为它来自本地目录

在此处描述的大型项目中,使用 Terragrunt 的好处变得非常明显。请参阅Code Structures examples with Terragrunt

  • 非常适合基础设施在逻辑上分离的项目(单独的 AWS 账户)

  • 适合不需要修改 AWS 账户之间共享的资源(一个环境 = 一个 AWS 账户 = 一个状态文件)

  • 适合不需要编排环境之间的变化

  • 适合基础设施资源因环境而异且无法一概而论时(例如,在一个环境或某些地区缺少某些资源)

随着项目的增长,让这些环境彼此保持最新状态将变得更加困难。 考虑使用基础设施模块(现成的或内部的)来完成可重复的任务。

Last updated