Bird
Raised Fist0
Terraformcloud~5 mins

When workspaces are appropriate 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 a Terraform workspace?
A Terraform workspace is a way to have multiple instances of the same infrastructure configuration, each with its own state. It helps manage different environments like development, testing, and production using the same code.
Click to reveal answer
beginner
When should you use Terraform workspaces?
Use workspaces when you want to manage multiple similar environments with the same configuration but separate states, such as dev, staging, and prod, without duplicating code.
Click to reveal answer
intermediate
Why not use workspaces for completely different projects?
Workspaces are not ideal for completely different projects because they share the same configuration files. Different projects should have separate Terraform configurations to avoid confusion and errors.
Click to reveal answer
beginner
How do workspaces help avoid state file conflicts?
Each workspace has its own state file, so changes in one workspace do not affect others. This separation prevents conflicts when managing multiple environments.
Click to reveal answer
beginner
What is a common real-life analogy for Terraform workspaces?
Think of workspaces like different folders for your school projects. Each folder has similar files but for different subjects. Workspaces keep your environments organized like these folders.
Click to reveal answer
What does a Terraform workspace primarily manage?
ADifferent Terraform versions
BSeparate state files for different environments
CMultiple cloud providers in one config
DUser access permissions
When is it NOT appropriate to use Terraform workspaces?
AHandling completely different projects
BManaging dev and prod environments
CTesting infrastructure changes
DKeeping state files separate
How do workspaces help with environment management?
ABy sharing one state file across all environments
BBy duplicating configuration files
CBy creating separate state files per environment
DBy locking the state file
Which command switches between Terraform workspaces?
Aterraform workspace select
Bterraform apply
Cterraform plan
Dterraform init
What is a benefit of using workspaces instead of duplicating code for each environment?
AIncreases complexity
BShares state files
CRequires multiple Terraform versions
DReduces code duplication and errors
Explain when and why you would use Terraform workspaces in managing infrastructure.
Think about managing dev, test, and prod with one codebase.
You got /4 concepts.
    Describe the limitations or situations where Terraform workspaces are not the best choice.
    Consider when projects are very different.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using terraform workspaces?
      easy
      A. To store Terraform modules
      B. To write Terraform code faster
      C. To manage multiple environments like development and production with one configuration
      D. To increase the speed of Terraform apply

      Solution

      1. Step 1: Understand workspace purpose

        Workspaces allow you to keep separate states for different environments using the same Terraform code.
      2. Step 2: Compare options

        Options A, B, and C do not relate to managing environments or state separation.
      3. Final Answer:

        To manage multiple environments like development and production with one configuration -> Option C
      4. Quick Check:

        Workspaces = separate environment states [OK]
      Hint: Workspaces separate states for different environments [OK]
      Common Mistakes:
      • Thinking workspaces speed up Terraform runs
      • Confusing workspaces with modules
      • Believing workspaces store code
      2. Which command correctly switches to a workspace named testing?
      easy
      A. terraform workspace select testing
      B. terraform switch workspace testing
      C. terraform workspace switch testing
      D. terraform use workspace testing

      Solution

      1. Step 1: Recall correct workspace switch syntax

        The correct command to switch workspaces is terraform workspace select [name].
      2. Step 2: Validate options

        Options A, B, and D use incorrect command syntax not recognized by Terraform.
      3. Final Answer:

        terraform workspace select testing -> Option A
      4. Quick Check:

        Switch workspace = terraform workspace select [name] [OK]
      Hint: Use 'terraform workspace select <name>' to switch [OK]
      Common Mistakes:
      • Using 'switch' instead of 'select'
      • Mixing command order
      • Adding extra words like 'workspace' twice
      3. Given the commands below, what will be the output of terraform workspace show after these steps?
      terraform workspace new dev
      terraform workspace select dev
      terraform workspace new prod
      terraform workspace select prod
      terraform workspace show
      medium
      A. prod
      B. dev
      C. default
      D. Error: workspace not found

      Solution

      1. Step 1: Follow workspace creation and switching

        First, 'dev' workspace is created and switched to. Then 'prod' workspace is created and switched to.
      2. Step 2: Check current workspace

        After switching to 'prod', running 'terraform workspace show' outputs the current workspace name, which is 'prod'.
      3. Final Answer:

        prod -> Option A
      4. Quick Check:

        Last switched workspace = prod [OK]
      Hint: Last 'terraform workspace select' sets current workspace [OK]
      Common Mistakes:
      • Assuming default workspace remains active
      • Confusing creation with switching
      • Expecting error without reason
      4. You run terraform workspace select staging but get an error saying the workspace does not exist. What should you do to fix this?
      medium
      A. Rename the workspace to default
      B. Run terraform init again
      C. Delete the current workspace and try again
      D. Run terraform workspace new staging to create it first

      Solution

      1. Step 1: Understand error cause

        The error means the workspace 'staging' does not exist yet in Terraform state.
      2. Step 2: Create the missing workspace

        Use terraform workspace new staging to create it before switching.
      3. Final Answer:

        Run terraform workspace new staging to create it first -> Option D
      4. Quick Check:

        Workspace must exist before select [OK]
      Hint: Create workspace before using it [OK]
      Common Mistakes:
      • Trying to switch without creating workspace
      • Reinitializing Terraform unnecessarily
      • Deleting workspaces without cause
      5. You want to manage three environments: dev, test, and prod using one Terraform configuration. Which approach best uses workspaces to achieve this safely?
      hard
      A. Use one workspace and manually change resource names for each environment
      B. Create separate workspaces named dev, test, prod and switch before applying changes
      C. Create three separate Terraform configurations for each environment
      D. Use workspaces only for prod and dev, but not test

      Solution

      1. Step 1: Identify workspace use for multiple environments

        Workspaces allow managing multiple environment states with one config by switching between them.
      2. Step 2: Evaluate options for safety and simplicity

        Create separate workspaces named dev, test, prod and switch before applying changes uses separate workspaces for each environment, which is safe and clean. Use one workspace and manually change resource names for each environment risks conflicts. Create three separate Terraform configurations for each environment duplicates code. Use workspaces only for prod and dev, but not test is inconsistent.
      3. Final Answer:

        Create separate workspaces named dev, test, prod and switch before applying changes -> Option B
      4. Quick Check:

        Separate workspaces = safe multi-env management [OK]
      Hint: Use one workspace per environment for safety [OK]
      Common Mistakes:
      • Mixing environments in one workspace
      • Duplicating configs unnecessarily
      • Ignoring test environment