Bird
Raised Fist0
Terraformcloud~5 mins

Comments in HCL in Terraform - Commands & Configuration

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
Introduction
When writing Terraform code, you often need to add notes or explanations to make your code easier to understand. Comments let you do this without affecting how Terraform runs your code.
When you want to explain why a resource is configured a certain way.
When you need to temporarily disable a line of code without deleting it.
When you want to leave reminders for yourself or others about future changes.
When you want to clarify complex expressions or variable usage.
When you want to document the purpose of a module or resource block.
Config File - main.tf
main.tf
terraform {
  required_version = ">= 1.0"
}

# This is a single line comment explaining the provider block
provider "aws" {
  region = "us-east-1"  # Inline comment about the region
}

/*
This is a
multi-line comment
explaining the resource below
*/
resource "aws_s3_bucket" "example" {
  bucket = "my-example-bucket"
  acl    = "private"
}

The # symbol starts a single-line comment. Anything after it on the same line is ignored by Terraform.

The /* ... */ syntax is used for multi-line comments that can span several lines.

Comments can be placed on their own line or at the end of a line of code (inline comments).

Commands
This command formats the Terraform file to standard style, ignoring comments but keeping them intact for readability.
Terminal
terraform fmt main.tf
Expected OutputExpected
main.tf
This command checks the Terraform configuration for syntax errors and validates that comments do not affect the code execution.
Terminal
terraform validate
Expected OutputExpected
Success! The configuration is valid.
Key Concept

If you remember nothing else from this pattern, remember: comments help explain your Terraform code without changing how it works.

Common Mistakes
Using incorrect comment syntax like // instead of # or /* */
Terraform's HCL does not recognize // as a comment, causing syntax errors.
Use # for single-line comments and /* */ for multi-line comments.
Placing comments inside strings or resource arguments incorrectly
Comments inside strings are treated as text, not comments, which can cause unexpected behavior.
Place comments outside strings and resource argument values.
Summary
Use # for single-line comments and /* */ for multi-line comments in Terraform HCL files.
Comments do not affect how Terraform runs your code but make it easier to understand.
Validate your configuration with terraform validate to ensure comments are correctly placed.

Practice

(1/5)
1. What is the purpose of comments in Terraform's HCL language?
easy
A. To explain the code without affecting its execution
B. To execute additional commands
C. To speed up the Terraform apply process
D. To delete unused resources automatically

Solution

  1. Step 1: Understand the role of comments

    Comments are notes in code that help explain what the code does but do not change how it runs.
  2. Step 2: Identify the correct purpose

    Since comments do not execute or affect resources, their purpose is purely explanatory.
  3. Final Answer:

    To explain the code without affecting its execution -> Option A
  4. Quick Check:

    Comments explain code [OK]
Hint: Comments never change code behavior, only explain it [OK]
Common Mistakes:
  • Thinking comments run code
  • Assuming comments speed up deployment
  • Believing comments delete resources
2. Which of the following is a valid single-line comment syntax in Terraform HCL?
easy
A. /* This is a comment */
B. # This is a comment
C. -- This is a comment
D. %% This is a comment

Solution

  1. Step 1: Recall single-line comment syntax in HCL

    Terraform HCL supports # and // for single-line comments.
  2. Step 2: Match options with valid syntax

    # This is a comment uses #, which is valid. /* This is a comment */ is multi-line comment syntax. Options C and D are invalid in HCL.
  3. Final Answer:

    # This is a comment -> Option B
  4. Quick Check:

    Single-line comment = # or // [OK]
Hint: Single-line comments start with # or // only [OK]
Common Mistakes:
  • Using -- or %% which are not valid in HCL
  • Confusing multi-line comment syntax for single-line
  • Omitting comment symbols
3. What will happen if you run this Terraform code snippet?
resource "aws_instance" "example" {
  ami           = "ami-123456"
  instance_type = "t2.micro"  # This is a small instance
  // This line is ignored
  /* multi-line
     comment here */
}
medium
A. Terraform will create an AWS instance ignoring all comments
B. Terraform will throw a syntax error due to comments
C. Terraform will create an instance but ignore the instance_type
D. Terraform will skip the resource block entirely

Solution

  1. Step 1: Understand how comments affect Terraform code

    Comments are ignored by Terraform during execution and do not affect resource creation.
  2. Step 2: Analyze the code snippet

    The resource block is valid with comments in single-line (#, //) and multi-line (/* */) forms. Terraform will create the instance as specified.
  3. Final Answer:

    Terraform will create an AWS instance ignoring all comments -> Option A
  4. Quick Check:

    Comments ignored, resource created [OK]
Hint: Comments do not affect resource creation or syntax [OK]
Common Mistakes:
  • Thinking comments cause syntax errors
  • Assuming comments disable resource properties
  • Believing comments skip resource blocks
4. Identify the error in this Terraform snippet:
resource "aws_s3_bucket" "bucket" {
  bucket = "my-bucket"
  /* This is a multi-line comment
  missing the closing tag
medium
A. Single-line comment used incorrectly
B. Incorrect resource type name
C. Bucket name must be numeric
D. Missing closing */ for multi-line comment

Solution

  1. Step 1: Check multi-line comment syntax

    Multi-line comments start with /* and must end with */. The snippet lacks the closing */.
  2. Step 2: Confirm other parts are correct

    Resource type and bucket name are valid. No single-line comment issues.
  3. Final Answer:

    Missing closing */ for multi-line comment -> Option D
  4. Quick Check:

    Unclosed multi-line comment [OK]
Hint: Always close multi-line comments with */ [OK]
Common Mistakes:
  • Forgetting to close multi-line comments
  • Confusing resource type errors with comment errors
  • Assuming bucket names must be numeric
5. You want to temporarily disable a block of Terraform code without deleting it. Which comment style should you use to comment out multiple lines safely?
hard
A. Use # at the start of each line
B. Use // at the start of each line
C. Use /* */ to wrap the entire block
D. Use XML style <!-- --> comments

Solution

  1. Step 1: Review comment styles for multiple lines

    Single-line comments (# or //) require prefixing each line, which is tedious for many lines.
  2. Step 2: Identify the best multi-line comment method

    Using /* */ wraps multiple lines easily, disabling the entire block at once.
  3. Step 3: Exclude invalid options

    XML style comments are not valid in HCL.
  4. Final Answer:

    Use /* */ to wrap the entire block -> Option C
  5. Quick Check:

    Multi-line comments use /* */ [OK]
Hint: Wrap multiple lines with /* and */ to comment out block [OK]
Common Mistakes:
  • Using # or // for many lines instead of block comment
  • Trying XML style comments which are invalid
  • Not closing multi-line comment properly