Terraform-数据取决于数据

时间:2018-08-29 10:23:20

标签: terraform

我在自己的Terraform代码中使用数据外部和数据local_file。 外部数据执行脚本并创建json文件。现在我的数据local_file必须读取json文件。

data "external" "example" {
   program = ["python", "XXXXX.py", "${var.fileName}"]
}

data "local_file" "dashboard" {
    filename = "${path.module}/dashboardData.json"
}

此处的数据local_file取决于json文件的外部数据。

有没有工作?

1 个答案:

答案 0 :(得分:2)

如果外部数据源输出文件名,则可以使用Terraform的插值来强制2个数据源之间具有依赖性。

因此,假设python XXXXX.py fileName的输出给出了{"filename": "dashboardData.json"}或类似的值,那么您可以使用如下所示的内容:

data "external" "example" {
  program = ["python", "XXXXX.py", "${var.fileName}"]
}

data "local_file" "dashboard" {
  filename = "${path.module}/${data.external.example.result.filename}"
}

由于local_file数据源现在引用了external数据源,它将迫使Terraform等待external数据源完成。

另一种方法是使用depends_on在它们之间设置显式依赖关系:

data "external" "example" {
  program = ["python", "XXXXX.py", "${var.fileName}"]
}

data "local_file" "dashboard" {
  filename   = "${path.module}/dashboardData.json"
  depends_on = "data.external.example"
}