我需要在 AWS 中创建和管理多个客户环境,并且希望利用 Terraform 来部署所有必要的资源。每个客户环境基本相同,只是用于访问其中一台服务器的 URL 不同。
我已经整理了一个 Terraform 配置,可以为给定客户部署所有资源。但是...我如何采用相同的配置并将其应用到下一个客户,而不复制整个 Terraform 目录并为每个客户复制该目录。 (我可以有 100 个)
我听说过工作区和模块或两者兼而有之。有人看过关于此的最佳实践文章吗?
Thx
你应该模块化你的代码 https://www.terraform.io/docs/configuration/modules.html,然后您可以轻松地重用该模块(来自 git 存储库),并为该客户使用不同的变量。在这种情况下,对于每个客户,您最终只会得到一个配置主模块的文件。
为每个客户提供一个目录,其中包含一个用于加载模块并配置它的 terraform 文件。如果你使用terraform apply
在该目录中,那么状态也将在该目录中。为了确保您的团队也可以部署和进行更改,建议使用backend https://www.terraform.io/docs/backends/index.html比如S3,所以状态会写在那里。请注意,您必须在各自的目录中为每个客户配置一个后端。确保每个客户的后端不会发生冲突(例如在 S3 中使用不同的路径)。
Nicki Watt 对此做了精彩的演讲。您可以观看视频here https://www.youtube.com/watch?v=wgzgVm7Sqlk并幻灯片于here https://www.slideshare.net/opencredo/hashidays-london-2017-evolving-your-infrastructure-with-terraform-by-nicki-watt.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)