我需要在AWS中创建和管理多个客户环境,并且我希望利用Terraform来部署所有必要的资源。每个客户环境基本相同,但用于访问其中一个服务器的URL除外。
我已经整合了Terraform配置,该配置为给定客户部署了所有资源。但是......我如何采用相同的配置并将其应用于下一个客户,而无需复制整个Terraform目录并为每个客户复制该目录。 (我可以有100个这样的)
我听说过工作空间和模块,或两者兼而有之。有人在这看过最好的练习文章吗?
THX
答案 0 :(得分:5)
您应该modulerize your code,然后您可以轻松地重用该模块(来自git存储库),并使用不同的变量来为该客户使用。在这种情况下,对于每个客户,您最终只会得到一个配置主模块的文件。
为每个客户提供一个目录,其中包含一个加载模块并进行配置的terraform文件。如果在该目录中使用terraform apply
,则状态也将位于该目录中。为了确保您的团队还可以部署和进行更改,建议使用诸如S3之类的backend,因此状态将写在那里。请注意,您必须为各自目录中的每个客户配置后端。确保每个客户的后端不发生冲突(例如,在S3中使用不同的路径)。