Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Terraform - data depends-on data

Tags:

json

terraform

I am using data external and data local_file in my terraform code. data external executes a script and create a json file. Now my data local_file has to read the json file.

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

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

Here data local_file is dependent on data external for the json file.

Is there a work aroud ?

like image 415
Manzoor Avatar asked Oct 26 '25 10:10

Manzoor


1 Answers

If your external data source outputs the filename you could use Terraform's interpolation to force a dependency between the 2 data sources.

So assuming the output of python XXXXX.py fileName gives {"filename": "dashboardData.json"} or similar then you could just use something like this:

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

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

Because the local_file data source now refers to the external data source it will force Terraform to wait for the external data source to complete.

An alternative is to set an explicit dependency between them by using 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]
}
like image 186
ydaetskcoR Avatar answered Oct 28 '25 03:10

ydaetskcoR