Terraform - 模块之间的依赖关系

Posted

技术标签:

【中文标题】Terraform - 模块之间的依赖关系【英文标题】:Terraform - dependency between modules 【发布时间】:2019-09-05 13:57:28 【问题描述】:

我正在尝试告诉 terraform 资源依赖于其他资源。问题是资源位于不同的模块中。依赖资源如下所示:

variable dependency 
  type = "list"
  default = []


resource "docker_container" "web" 
  depends_on = "$var.dependency"
...

然后我“调用”模块:

module "wordpress" 
  source = "../modules/wordpress"
  dependency = [ "$module.provision.res" ]

我得到了错误:

  on ../modules/wordpress/main.tf line 11, in resource "docker_container" "web":
  11:   depends_on = "$var.dependency"

A static list expression is required.

看起来我不能在“depends_on”中使用变量。如何创建模块之间的依赖关系?

PS:我依赖的资源是一个 null_resource,它提供了一些配置。每次更改时我都需要重建一些东西。

【问题讨论】:

不确定是否可以依赖变量。也许这个GitHub issue 会有所帮助。 depends_on 用于非隐式生成的资源之间的依赖关系。 【参考方案1】:

解决错误:“需要静态列表表达式。”

你需要用 [] 包装 var.dependency:

resource "docker_container" "web" 
  depends_on = ["$var.dependency"]
...

更新:上述语法适用于 terraform。 对于 terraform >=0.12,正如@Maciej Wawrzyńczuk 指出的那样,[var.dependency] 仅适用于这种情况。 ["$var.dependency"] 也可以在 0.12 中向后兼容,但如果您运行 tf 0.12,您可能希望以新的方式进行。

【讨论】:

差不多。 “depends_on = [var.dependency]”工作正常。 :)

以上是关于Terraform - 模块之间的依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

使用 terraform 脚本的 pubsub 主题和订阅之间的依赖关系

如何解决多模块项目中模块之间的依赖关系?

模块之间的Python依赖关系[重复]

多模块项目构建期间模块之间的 Maven 依赖关系解析

商店之间的循环模块依赖关系

如何管理 Gradle 模块之间的依赖关系?