Tree data structure

Using an input tree data structure, the whole template file can be scanned for interpolation.

Input file content

terraform {
  required_providers {
    (providers)[
      {{name}} = {
        source = "{{namespace}}/{{name}}"
        version = "{{version}}"
      }
    ]
  }
  experiments = {{experiments}}
}

Data structure

{
  "experiments": true,
  "providers": [
    {
      "namespace": "hashicorp",
      "name": "aws",
      "version": "2.0.1"
    },
    {
      "namespace": "hashicorp",
      "name": "azure",
      "version": "3.4.2"
    },
    {
      "namespace": "hashicorp",
      "name": "google",
      "version": "1.2.1"
    }
  ]
}

Result

terraform {
    required_providers {
        azure = {
            source = 'az/azure'
            version = '1.0.0'
        }
        aws = {
            source = 'aws/aws'
            version = '1.1.0'
        }
        gcp = {
            source = 'gcp/gcp'
            version = '1.2.0'
        }
    }
    experiments = true
}

Last updated

Was this helpful?