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

时间:2017-09-17 16:32:03

标签: module workspace terraform

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

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

我听说过工作空间和模块,或两者兼而有之。有人在这看过最好的练习文章吗?

THX

1 个答案:

答案 0 :(得分:5)

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

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

Nicki Watt对此作了很好的介绍。您可以在here上观看视频here和幻灯片。