我在自己的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文件的外部数据。
有没有工作?
答案 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"
}