【发布时间】:2019-07-18 00:08:16
【问题描述】:
我目前正在使用 Terraform 将 PHP 应用程序部署到 AWS。
此 PHP 应用程序使用 AWS ECS 部署为服务。
我有多个使用这个应用程序的客户,每个客户都会收到他们自己的系统副本,并使用他们自己的配置作为他们自己的服务 - 如果您愿意,可以使用白标。
现在,在对 Terraform 进行了一些研究后,我将代码模块化并创建了以下文件结构:
+---my-application
| shared.tf
| iam_policies.tf
| iam_roles.tf
| variables.tf
| web-apps.tf
|
+---modules
| \---role
| | main.tf
| | outputs.tf
| | variables.tf
| |
| \---webapp
| main.tf
| variables.tf
|
+---templates
web_definition.tpl.json
我的问题在于web-apps.tf 文件,我将它用作所有webapp 模块的“粘合剂”:
module "client_bob" {
source = "modules/webapp"
...
}
module "client_alice" {
source = "modules/webapp"
...
}
... Over 30 more client module blocks ...
不用说,这不是一个好的设置。
它不可扩展,并且还会创建 巨大 .tfstate 文件。
有一次尝试使用 Consul 作为后端时,我收到一条错误消息,提示我已达到 Consul KV 值允许的大小限制。
处理这种情况的正确方法是什么?
当我写这篇文章时,我已经查看了类似问题部分中的所有问题,所有这些问题都围绕着使用多个.tfstate 文件的想法,但我没有非常了解这将如何解决我的问题,任何帮助将不胜感激!
【问题讨论】:
-
最初的想法是
modules应该是my-application配置的对等目录。不确定这是否能解决您的“巨大的.tfstate”问题,但它确实有助于组织。 -
很好的建议@MattSchuchard 谢谢,我稍后会做这个结构改变,现在我真的很难理解为我的所有客户实施这个基础设施的正确方法是什么...... .
标签: amazon-web-services terraform amazon-ecs consul