Bird
Raised Fist0
Terraformcloud~5 mins

JSON configuration alternative in Terraform - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the JSON configuration alternative in Terraform?
Terraform supports using JSON syntax as an alternative to its native HCL (HashiCorp Configuration Language) for writing configuration files.
Click to reveal answer
beginner
How do you name a Terraform JSON configuration file?
Terraform JSON configuration files must have the extension .tf.json to be recognized and processed correctly.
Click to reveal answer
intermediate
What is a key difference between HCL and JSON configurations in Terraform?
HCL is designed to be human-friendly and easier to read and write, while JSON is more verbose but can be generated programmatically and is widely supported.
Click to reveal answer
intermediate
Can you use comments in Terraform JSON configuration files?
No, JSON does not support comments. This is a limitation compared to HCL, which allows comments in configuration files.
Click to reveal answer
intermediate
Why might someone choose JSON over HCL for Terraform configurations?
JSON configurations can be generated automatically by tools or scripts, making them useful for dynamic or automated infrastructure setups.
Click to reveal answer
What file extension must Terraform JSON configuration files use?
A.tf
B.tf.json
C.json
D.json.tf
Which of the following is NOT a feature of Terraform JSON configuration files?
ASupport for comments
BCan be generated programmatically
CUse JSON syntax
DRecognized by Terraform CLI
Why might JSON be preferred over HCL in some Terraform use cases?
ABecause JSON files can be generated by scripts
BBecause JSON is easier for humans to read
CBecause JSON supports comments
DBecause JSON files are smaller
Which language is Terraform's native configuration language?
AYAML
BJSON
CHCL
DXML
If you want to add comments to your Terraform configuration, which format should you use?
AYAML
BJSON
CXML
DHCL
Explain the advantages and limitations of using JSON as an alternative configuration format in Terraform.
Think about automation benefits and readability trade-offs.
You got /5 concepts.
    Describe how Terraform processes JSON configuration files compared to HCL files.
    Consider file recognition, syntax differences, and output.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the main reason to use JSON configuration files in Terraform instead of the usual HCL language?
      easy
      A. To enable automation and integration with other tools
      B. Because JSON files are easier to read for humans
      C. To reduce the size of the configuration files
      D. Because Terraform does not support HCL anymore

      Solution

      1. Step 1: Understand Terraform configuration formats

        Terraform supports both HCL and JSON formats for configuration files.
      2. Step 2: Identify the benefit of JSON format

        JSON is often used for automation and integration with other tools because it is a widely supported data format.
      3. Final Answer:

        To enable automation and integration with other tools -> Option A
      4. Quick Check:

        JSON helps automation = C [OK]
      Hint: JSON is best for automation and tool integration [OK]
      Common Mistakes:
      • Thinking JSON is easier for humans to read than HCL
      • Believing Terraform no longer supports HCL
      • Assuming JSON reduces file size
      2. Which of the following is the correct way to start a Terraform JSON configuration file?
      easy
      A. { "resource": { "aws_instance": { "example": { "ami": "ami-123456", "instance_type": "t2.micro" } } } }
      B. { resource: { aws_instance: { example: { ami: "ami-123456", instance_type: "t2.micro" } } } }
      C. { "resource": [ { "aws_instance": { "example": { "ami": "ami-123456", "instance_type": "t2.micro" } } } ] }
      D. [ "resource": { "aws_instance": { "example": { "ami": "ami-123456", "instance_type": "t2.micro" } } } ]

      Solution

      1. Step 1: Check JSON syntax rules

        JSON keys and strings must be in double quotes, and objects use curly braces {}.
      2. Step 2: Identify correct Terraform JSON structure

        Terraform expects "resource" as a key with nested objects, not arrays or unquoted keys.
      3. Final Answer:

        { "resource": { "aws_instance": { "example": { "ami": "ami-123456", "instance_type": "t2.micro" } } } } -> Option A
      4. Quick Check:

        Proper JSON syntax with quoted keys = A [OK]
      Hint: Always use double quotes for keys and strings in JSON [OK]
      Common Mistakes:
      • Using unquoted keys in JSON
      • Using arrays instead of objects for resources
      • Mixing JSON and HCL syntax
      3. Given this Terraform JSON snippet:
      {
        "variable": {
          "region": {
            "default": "us-west-2"
          }
        },
        "provider": {
          "aws": {
            "region": "${var.region}"
          }
        }
      }

      What will happen when you run terraform apply?
      medium
      A. Terraform will deploy resources in the us-west-2 region
      B. Terraform will throw an error because variable interpolation is not supported in JSON
      C. Terraform will ignore the provider region and use the default AWS region
      D. Terraform will deploy resources but with an empty region value

      Solution

      1. Step 1: Understand variable interpolation in Terraform JSON

        Terraform JSON does not support interpolation syntax like "${var.region}" inside JSON files.
      2. Step 2: Identify the error cause

        Using interpolation in JSON causes Terraform to fail parsing or applying the configuration.
      3. Final Answer:

        Terraform will throw an error because variable interpolation is not supported in JSON -> Option B
      4. Quick Check:

        Interpolation not allowed in JSON = A [OK]
      Hint: No interpolation syntax allowed in Terraform JSON files [OK]
      Common Mistakes:
      • Assuming interpolation works same as HCL
      • Thinking Terraform ignores invalid region values
      • Believing Terraform defaults region silently
      4. You have this JSON Terraform config snippet:
      {
        "resource": {
          "aws_instance": {
            "ami": "ami-123456",
            "instance_type": "t2.micro",
            "tags": {
              "Name": "ExampleInstance"
            }
          }
        }
      }

      When running terraform apply, you get a syntax error. What is the most likely cause?
      medium
      A. The JSON keys are not properly quoted
      B. The "tags" block should be an array, not an object
      C. The JSON file is missing a root-level "terraform" key
      D. The JSON file uses incorrect nesting for resource blocks

      Solution

      1. Step 1: Review Terraform JSON resource structure

        Terraform expects resource blocks nested as: resource type -> resource name -> attributes.
      2. Step 2: Check the nesting in the snippet

        The snippet places attributes directly under the resource type "aws_instance" without the required instance name (e.g., "example") as an intermediate object key.
      3. Final Answer:

        The JSON file uses incorrect nesting for resource blocks -> Option D
      4. Quick Check:

        Resource nesting must follow Terraform JSON schema = B [OK]
      Hint: Check resource nesting carefully in JSON configs [OK]
      Common Mistakes:
      • Confusing JSON object vs array for tags
      • Expecting a "terraform" root key in JSON
      • Not quoting JSON keys properly
      5. You want to convert this HCL Terraform config to JSON:
      resource "aws_s3_bucket" "bucket" {
        bucket = "my-bucket"
        acl    = "private"
        tags = {
          Environment = "Dev"
          Team        = "Cloud"
        }
      }

      Which JSON configuration correctly represents this resource?
      hard
      A. { "resource": { "aws_s3_bucket": { "bucket": "my-bucket", "acl": "private", "tags": { "Environment": "Dev", "Team": "Cloud" } } } }
      B. { "resource": [ { "aws_s3_bucket": { "bucket": { "bucket": "my-bucket", "acl": "private", "tags": { "Environment": "Dev", "Team": "Cloud" } } } } ] }
      C. { "resource": { "aws_s3_bucket": { "bucket": { "bucket": "my-bucket", "acl": "private", "tags": { "Environment": "Dev", "Team": "Cloud" } } } } }
      D. { "resources": { "aws_s3_bucket": { "bucket": { "bucket": "my-bucket", "acl": "private", "tags": { "Environment": "Dev", "Team": "Cloud" } } } } }

      Solution

      1. Step 1: Understand Terraform JSON resource format

        Terraform JSON uses "resource" (singular) as the root key with nested resource type and name.
      2. Step 2: Compare options for correct keys and structure

        { "resource": { "aws_s3_bucket": { "bucket": { "bucket": "my-bucket", "acl": "private", "tags": { "Environment": "Dev", "Team": "Cloud" } } } } } correctly uses "resource" with nested "aws_s3_bucket" and resource name "bucket" with attributes.
      3. Final Answer:

        { "resource": { "aws_s3_bucket": { "bucket": { "bucket": "my-bucket", "acl": "private", "tags": { "Environment": "Dev", "Team": "Cloud" } } } } } -> Option C
      4. Quick Check:

        Correct root key and nesting = D [OK]
      Hint: Use singular "resource" key with nested type and name [OK]
      Common Mistakes:
      • Using "resources" instead of "resource"
      • Using arrays instead of objects for resources
      • Incorrect nesting of resource name and attributes