Terraform 如何在顶层和模块之外嵌套地形堆栈

Terraform 如何在顶层和模块之外嵌套地形堆栈,terraform,Terraform,Terraform通过模块解决组件的重用问题。因此,我可能会将AWS自动缩放组的定义放在一个模块中,然后让多个顶级资源文件使用该ASG。到目前为止还不错 我的问题是:如何使用Terraform对多个顶级资源文件进行分组和组织?换句话说,组织的下一个层次是什么 我们有一个有多个应用程序的系统……每个应用程序都对应一个TF资源文件,这些资源文件将使用这些模块。我们有不同的客户,他们使用不同的应用程序集,所以我们需要将它们保存在他们自己的资源文件中 我们在问,是否有一个TF概念用于部署多个顶级资源文件

Terraform通过模块解决组件的重用问题。因此,我可能会将AWS自动缩放组的定义放在一个模块中,然后让多个顶级资源文件使用该ASG。到目前为止还不错

我的问题是:如何使用Terraform对多个顶级资源文件进行分组和组织?换句话说,组织的下一个层次是什么

我们有一个有多个应用程序的系统……每个应用程序都对应一个TF资源文件,这些资源文件将使用这些模块。我们有不同的客户,他们使用不同的应用程序集,所以我们需要将它们保存在他们自己的资源文件中


我们在问,是否有一个TF概念用于部署多个顶级资源文件(我们的应用程序)。

在某些情况下,您无法或没有必要进一步抽象。您将始终拥有一个顶级资源文件(即
main.tf
)来描述要使用的模块。您可以通过以下方式组织这些顶级资源文件:

使用地形工作区 您可以使用-在您的情况下,可能每个客户名称使用一个。每个工作区都有自己的支持地形状态。然后可以在地形代码中使用
terraform.workspace
变量。工作空间也可用于针对不同的环境

使用单独的状态文件 每个客户端都有一个顶级状态文件,即
clienta.main.tf
clientb.main.tf
,等等。您可以将它们都放在同一个存储库中,并使用脚本单独或以您喜欢的任何模式运行它们;或者每个客户机可以有一个存储库

您还可以将工作区与单独的状态文件结合起来,以针对每个客户机的单个环境,即
暂存
生产
。本文将更详细地介绍工作区及其一些缺点