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

use*_*728 5 workspace module terraform

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

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

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

谢谢

Far*_*hat 7

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

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

Nicki Watt对此做了很好的介绍.您可以查看视频在这里在和幻灯片在这里.