Terraform - 模块之间的依赖关系

Mac*_*zuk 4 terraform

我试图告诉 terraform 资源依赖于其他资源。问题是资源位于不同的模块中。依赖资源看起来像这样:

variable dependency {
  type = "list"
  default = []
}

resource "docker_container" "web" {
  depends_on = "${var.dependency}"
...
Run Code Online (Sandbox Code Playgroud)

然后我“调用”模块:

module "wordpress" {
  source = "../modules/wordpress"
  dependency = [ "${module.provision.res}" ]
}
Run Code Online (Sandbox Code Playgroud)

我得到了错误:

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

A static list expression is required.
Run Code Online (Sandbox Code Playgroud)

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

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

con*_*ier 8

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

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

resource "docker_container" "web" {
  depends_on = ["${var.dependency}"]
...
Run Code Online (Sandbox Code Playgroud)

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