使用 Terraform(工作区、模块,?)配置客户帐户最佳实践?

Provisioning customer accounts with Terraform (workspaces, Modules, ?) Best Practice?

我需要在 AWS 中创建和管理多个客户环境,我想利用 Terraform 部署所有必要的资源。除了用于访问其中一台服务器的 URL 之外,每个客户环境基本相同。

我整理了一个 Terraform 配置,可以为给定客户部署所有资源。但是......我如何采用相同的配置并将其应用于下一个客户,而无需复制整个 Terraform 目录并为每个客户复制该目录。 (我可以有 100 个)

我听说过工作区和/或模块。有人看过关于这方面的最佳实践文章吗?

感谢

您应该 modulerize your code,然后您可以轻松地重用该模块(来自 git 存储库)和用于该客户的不同变量。在这种情况下,对于每个客户,您最终只会得到一个配置主模块的文件。

每个客户都有一个目录,其中包含一个加载模块并对其进行配置的 terraform 文件。如果您在该目录中使用 terraform apply,则状态也将位于该目录中。为确保您的团队也可以部署和进行更改,建议使用 backend,例如 S3,这样状态就会写在那里。请注意,您必须在各自的目录中为每个客户配置后端。确保每个客户的后端不冲突(例如在 S3 中使用不同的路径)。

Nicki Watt 对此做了很好的介绍。您可以观看视频 here and slides at here