Bird
Raised Fist0
Terraformcloud~5 mins

Terraform.workspace interpolation - 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 does terraform.workspace represent in Terraform?

terraform.workspace is a built-in variable that returns the name of the current workspace you are using in Terraform.

Click to reveal answer
beginner
How can terraform.workspace be used in resource naming?

You can include terraform.workspace in resource names to create unique names per workspace, helping avoid conflicts between environments.

Click to reveal answer
beginner
What is a Terraform workspace?

A workspace is like a separate environment in Terraform that keeps its own state file, allowing you to manage multiple environments (like dev, test, prod) with the same configuration.

Click to reveal answer
beginner
How do you reference the current workspace in a Terraform configuration?

Use ${terraform.workspace} or in Terraform 0.12+ simply terraform.workspace inside expressions to get the current workspace name.

Click to reveal answer
intermediate
Why is using terraform.workspace interpolation considered a best practice?

It helps keep resources isolated per environment by dynamically adjusting names or settings based on the workspace, reducing risk of accidental resource overlap.

Click to reveal answer
What does terraform.workspace return?
AThe current workspace name
BThe Terraform version
CThe current AWS region
DThe current user name
How can terraform.workspace help in managing multiple environments?
ABy creating separate state files per workspace
BBy changing the Terraform version automatically
CBy encrypting resource names
DBy deleting unused resources
Which syntax is correct to use terraform.workspace in Terraform 0.12+?
A${terraform.workspace}
Bterraform[workspace]
Cterraform.workspace
Dworkspace.terraform
What is the main benefit of interpolating terraform.workspace in resource names?
ATo reduce Terraform file size
BTo make resource names unique per environment
CTo speed up Terraform runs
DTo enable auto-scaling
Which command creates a new workspace in Terraform?
Aterraform apply workspace <name>
Bterraform create workspace <name>
Cterraform init workspace <name>
Dterraform workspace new <name>
Explain what terraform.workspace is and how it helps manage multiple environments.
Think about how Terraform keeps different environment states separate.
You got /4 concepts.
    Describe how you would use terraform.workspace interpolation to avoid resource name conflicts.
    Imagine you have dev and prod environments using the same config.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does terraform.workspace return when used inside a Terraform configuration?
      easy
      A. The name of the current workspace as a string
      B. The current Terraform version
      C. The list of all workspaces
      D. The current directory path

      Solution

      1. Step 1: Understand the purpose of terraform.workspace

        terraform.workspace is a built-in Terraform variable that returns the name of the workspace currently in use.
      2. Step 2: Identify what terraform.workspace returns

        It returns a string representing the workspace name, which helps differentiate environments.
      3. Final Answer:

        The name of the current workspace as a string -> Option A
      4. Quick Check:

        terraform.workspace = current workspace name [OK]
      Hint: Remember: terraform.workspace always gives current workspace name [OK]
      Common Mistakes:
      • Thinking it returns Terraform version
      • Confusing it with list of all workspaces
      • Assuming it returns file paths
      2. Which of the following is the correct syntax to use terraform.workspace inside a resource name in Terraform?
      easy
      A. name = myapp.${terraform.workspace}
      B. name = "myapp-${terraform.workspace}"
      C. name = 'myapp-terraform.workspace'
      D. name = "myapp.terraform.workspace"

      Solution

      1. Step 1: Understand string interpolation syntax in Terraform

        Terraform uses ${} inside double quotes to insert variable values into strings.
      2. Step 2: Identify correct usage of terraform.workspace

        The correct syntax is "myapp-${terraform.workspace}" to append the workspace name.
      3. Final Answer:

        name = "myapp-${terraform.workspace}" -> Option B
      4. Quick Check:

        Use ${} inside double quotes for interpolation [OK]
      Hint: Use ${terraform.workspace} inside double quotes for interpolation [OK]
      Common Mistakes:
      • Using single quotes which disable interpolation
      • Missing ${} around terraform.workspace
      • Using dot notation without quotes
      3. Given the Terraform code snippet:
      output "env_name" {
        value = "Current workspace is: ${terraform.workspace}"
      }

      If the active workspace is staging, what will be the output value?
      medium
      A. An error occurs because output cannot use terraform.workspace
      B. "Current workspace is: default"
      C. "Current workspace is: production"
      D. "Current workspace is: staging"

      Solution

      1. Step 1: Understand output interpolation with terraform.workspace

        The output value uses string interpolation to insert the current workspace name.
      2. Step 2: Substitute the active workspace name

        Since the active workspace is staging, the output string becomes "Current workspace is: staging".
      3. Final Answer:

        "Current workspace is: staging" -> Option D
      4. Quick Check:

        Output string includes current workspace name [OK]
      Hint: Replace ${terraform.workspace} with active workspace name [OK]
      Common Mistakes:
      • Assuming default workspace always
      • Thinking terraform.workspace cannot be used in outputs
      • Confusing workspace names
      4. You wrote this Terraform resource name:
      resource "aws_s3_bucket" "example" {
        bucket = 'mybucket-${terraform.workspace}'
      }

      But when you run Terraform, you get an error: Invalid reference. What is the likely cause?
      medium
      A. terraform.workspace is not available in resource blocks
      B. terraform.workspace must be assigned to a variable first
      C. You used single quotes instead of double quotes around the bucket name
      D. You forgot to initialize Terraform workspaces

      Solution

      1. Step 1: Check string interpolation rules in Terraform

        Terraform requires double quotes for string interpolation; single quotes treat content as literal.
      2. Step 2: Identify the error cause

        If single quotes were used, ${terraform.workspace} is not evaluated, causing an invalid reference error.
      3. Final Answer:

        You used single quotes instead of double quotes around the bucket name -> Option C
      4. Quick Check:

        Use double quotes for interpolation [OK]
      Hint: Always use double quotes for strings with ${} interpolation [OK]
      Common Mistakes:
      • Using single quotes disables interpolation
      • Assuming terraform.workspace needs variable assignment
      • Not initializing workspaces but error is different
      5. You want to create two S3 buckets using the same Terraform code but different names per workspace. You write:
      resource "aws_s3_bucket" "bucket1" {
        bucket = "app-${terraform.workspace}"
      }
      
      resource "aws_s3_bucket" "bucket2" {
        bucket = "app-${terraform.workspace}"
      }

      What problem will occur when you apply this configuration in the dev workspace?
      hard
      A. Terraform will create two buckets with the same name, causing a conflict
      B. Terraform will create only one bucket named "app-dev"
      C. Terraform will fail because terraform.workspace cannot be used twice
      D. Terraform will create buckets with different names automatically

      Solution

      1. Step 1: Analyze bucket names generated

        Both resources use the same bucket name pattern: "app-${terraform.workspace}". In the dev workspace, both names become "app-dev".
      2. Step 2: Understand AWS S3 bucket naming constraints

        S3 bucket names must be unique globally. Creating two buckets with the same name causes a conflict error.
      3. Final Answer:

        Terraform will create two buckets with the same name, causing a conflict -> Option A
      4. Quick Check:

        Duplicate resource names cause conflicts [OK]
      Hint: Ensure unique names per resource even with terraform.workspace [OK]
      Common Mistakes:
      • Assuming terraform.workspace makes names unique per resource
      • Thinking Terraform merges resources automatically
      • Believing terraform.workspace cannot be used multiple times