我需要在AWS中创建和管理多个客户环境,并希望利用Terraform部署所有必要的资源。每个客户环境基本相同,唯一区别是他们用来访问其中一个服务器的URL。 我已经编写了一个Terraform配置,可以部署给定客户的所有资源。但是...如何将相同的配置应用于下一个客户,而不复制整个Terraform目录并为每个客户重复该过程。(我可能有数百个这样的客户) 我听说工作区和模块或两者都可以使用。是否有关于此的最佳实践文章? 谢谢
您应该将代码 模块化,然后可以使用不同的变量从 git 存储库中轻松地重用该模块来为客户提供服务。在这种情况下,您将最终得到一个只配置主模块文件的文件。 每个客户都有一个目录,其中包含加载模块并对其进行配置的 terraform 文件。如果您在该目录中使用 terraform apply,则状态也将保存在该目录中。为确保您的团队也能够部署和更改,请使用后端,例如 S3,以使状态被写入那里。请注意,您必须在各自的目录中为每个客户配置后端。确保每个客户的后端不会冲突(例如,在 S3 中使用不同的路径)。 Nicki Watt 在此方面做了一次很好的演讲。您可以在这里观看视频,在这里查看幻灯片。
工作区
,根据Farid的答案,一定是模块。文档明确建议不要将工作区用于环境或系统分解。它们用于实验或类似事情。 - Davos