【发布时间】:2020-12-02 14:36:29
【问题描述】:
我有一个特定模块将再次运行的用例。用例如下:
我创建了一个名为 google_compute_firewall 的资源。然后我通过模块调用了这个资源。该模块将从 yaml 文件中获取与防火墙相关的输入。第一次运行该模块时,它会创建一个 FW,但是当我尝试使用另一个 FW 配置运行相同的模块时,它会删除之前创建的 FW。
这意味着每次我想创建防火墙时,我都需要创建一个新模块。因此,对于 500 个请求,将有 500 个模块,这是没有意义的。有没有更好的选择可以探索?
提前谢谢你!!
【问题讨论】:
-
为什么人们喜欢投票问题?这个传送门是要问其他人不知道的问题。要么帮助,要么继续前进
-
这个问题有点不清楚,但您可能正在寻找在 Terraform 0.13 中添加元参数来迭代模块声明。
-
老实说,我想传达的是,如果我有一个配置防火墙部署的模块,我会将参数传递给该模块。然后我运行应用命令并部署防火墙。现在我不能使用同一个模块来创建另一个具有不同参数的防火墙。它将尝试破坏旧防火墙并使用新参数创建新防火墙。而且我不想要,所以我想行业如何在不同的参数上重用相同的模块
-
您是否在 CI/CD 环境中本地运行?我的猜测是你在本地运行。重新运行时,状态被覆盖,因此旧资源也被破坏了。如果您在其他地方保留状态并且在每次重新运行时,您指向状态文件持久性的新路径,您将不会遇到问题。这绝不是模块的问题。模块提供可重用性,但状态持久性是调用模块的调用函数的工作。
标签: terraform terraform-provider-gcp terraform0.12+ terraform-template-file terraform-modules