'Add a block of code with terraform in JSON file

I need to add a conditional when the variable is true, add a block of code in my JSON file but if this variable is false, I need it to do nothing

This is my main.tf

resource "grafana_dashboard" "dashboard_test" {
  conficonfig_json = template_file("dashboard.json")
    data_source   = var.data_source
}

I need add this a block of code in my file JSON

{
"datasource": {
    "type": "CloudWatch",
    "uid": "${mystring}"
}
}


Solution 1:[1]

You should probably switch to using templatefile function [1]. In your example, you would then have:

resource "grafana_dashboard" "dashboard_test" {
  config_json = templatefile("dashboard.json", {
    mystring = "somevalue"
  })
  data_source = var.data_source
}

If you do not want to hardcode the value for the mystring variable, you could alternatively use a Terraform variable e.g., mystring = var.mystring. I would also avoid giving just the filename and change the block of code to look like this:

resource "grafana_dashboard" "dashboard_test" {
  config_json = templatefile("${path.root}/dashboard.json", {
    mystring = var.mystring
  })
  data_source = var.data_source
}

variable "mystring" {}

More information about using path-based variables is in [2].


[1] https://www.terraform.io/language/functions/templatefile

[2] https://www.terraform.io/language/expressions/references#filesystem-and-workspace-info

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Marko E