【问题标题】:Terraform module override problem. The module updates the value every timeTerraform 模块覆盖问题。模块每次更新值
【发布时间】: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


【解决方案1】:

Terraform 无法按照您执行的方式运行。当您将模块添加到配置中然后执行它时。它创造了这种状态。如果您删除该模块,它将在执行时将其删除。如果你改变它。它在执行时发生变化。现在,对于您的情况,您希望保留第一个模块,然后为下一次设置添加第二个模块。

【讨论】:

    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多