首页 > 解决方案 > Terraform - 模块之间的依赖关系

问题描述

我试图告诉 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 ,它提供了一些配置。每次更改时我都需要重建一些东西。

标签: terraform

解决方案


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

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

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

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


推荐阅读