Bird
Raised Fist0
Terraformcloud~10 mins

Why workspaces separate environments in Terraform - Visual Breakdown

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
Process Flow - Why workspaces separate environments
Start Terraform Project
Create Workspace: dev
Apply Config in dev
Create Workspace: prod
Apply Config in prod
Switch Workspace
Terraform uses workspace state
Separate environments managed
Terraform uses workspaces to keep environment states separate, allowing safe management of multiple environments like dev and prod.
Execution Sample
Terraform
terraform workspace new dev
terraform apply
terraform workspace new prod
terraform apply
terraform workspace select dev
terraform apply
This sequence creates two workspaces (dev and prod), applies infrastructure in each, and switches between them to manage separate environments.
Process Table
StepCommandWorkspace SelectedActionResult
1terraform workspace new devdevCreate new workspaceWorkspace 'dev' created and selected
2terraform applydevApply configInfrastructure deployed in 'dev' environment
3terraform workspace new prodprodCreate new workspaceWorkspace 'prod' created and selected
4terraform applyprodApply configInfrastructure deployed in 'prod' environment
5terraform workspace select devdevSwitch workspaceWorkspace switched to 'dev'
6terraform applydevApply configInfrastructure updated in 'dev' environment
💡 Execution stops after managing separate environments with distinct workspace states.
Status Tracker
VariableStartAfter Step 1After Step 3After Step 5Final
Current Workspacedefaultdevproddevdev
Infrastructure Stateemptydev stateprod statedev statedev state updated
Key Moments - 2 Insights
Why does switching workspaces change the infrastructure state?
Each workspace has its own state file, so switching changes which environment's state Terraform uses, as shown in steps 3 and 5 in the execution_table.
Can applying in one workspace affect another workspace's infrastructure?
No, because each workspace keeps its state separate, applying in 'dev' does not affect 'prod', as seen in steps 2 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, which workspace is active after step 3?
Adefault
Bdev
Cprod
Dnone
💡 Hint
Check the 'Workspace Selected' column at step 3 in the execution_table.
At which step does Terraform switch back to the 'dev' workspace?
AStep 5
BStep 4
CStep 2
DStep 6
💡 Hint
Look for the 'terraform workspace select dev' command in the execution_table.
If you applied changes in 'prod' at step 6 instead of 'dev', what would change in variable_tracker?
ACurrent Workspace would be 'prod' after step 6
BInfrastructure State for 'prod' would update after step 6
CInfrastructure State for 'dev' would update after step 6
DNo changes would occur
💡 Hint
Refer to the 'Current Workspace' and 'Infrastructure State' rows in variable_tracker after step 6.
Concept Snapshot
Terraform workspaces let you manage multiple environments by keeping separate state files.
Create or switch workspaces with 'terraform workspace new/select'.
Apply infrastructure per workspace to isolate changes.
Switching workspace changes which environment Terraform manages.
This avoids mixing dev and prod resources.
Full Transcript
Terraform workspaces separate environments by keeping their state files distinct. When you create a workspace like 'dev' or 'prod', Terraform stores the infrastructure state separately. Applying changes in one workspace affects only that environment. Switching workspaces changes which environment Terraform manages. This prevents accidental changes across environments and helps organize infrastructure safely.

Practice

(1/5)
1. What is the main reason Terraform workspaces are used to separate environments?
easy
A. To share the same state file across all environments
B. To keep state files separate for different environments
C. To write different Terraform code for each environment
D. To deploy resources only in the default environment

Solution

  1. Step 1: Understand workspace purpose

    Terraform workspaces allow managing multiple environments using the same code but separate state files.
  2. Step 2: Identify how environments stay separate

    Each workspace has its own state file, so resources do not mix between environments.
  3. Final Answer:

    To keep state files separate for different environments -> Option B
  4. Quick Check:

    Separate state files = separate environments [OK]
Hint: Workspaces separate state files, not code [OK]
Common Mistakes:
  • Thinking workspaces require different code files
  • Believing all environments share one state file
  • Assuming workspaces only work for default environment
2. Which command correctly creates a new Terraform workspace named staging?
easy
A. terraform new workspace staging
B. terraform create workspace staging
C. terraform workspace new staging
D. terraform workspace create staging

Solution

  1. Step 1: Recall Terraform workspace creation syntax

    The correct command to create a workspace is terraform workspace new <name>.
  2. Step 2: Match the command to options

    Only terraform workspace new staging matches the correct syntax exactly.
  3. Final Answer:

    terraform workspace new staging -> Option C
  4. Quick Check:

    Use 'terraform workspace new' to add workspaces [OK]
Hint: Remember: 'terraform workspace new' creates new workspace [OK]
Common Mistakes:
  • Using 'terraform create workspace' which is invalid
  • Using 'terraform new workspace' which is not a command
  • Using 'terraform workspace create' which is invalid
3. Given the following commands run in order:
terraform workspace new dev
terraform workspace select dev
terraform apply
terraform workspace select default
terraform apply

What happens to the resources?
medium
A. Resources are created separately in 'dev' and 'default' environments
B. Resources from 'dev' overwrite those in 'default'
C. Only one set of resources is created in the default workspace
D. Terraform throws an error on switching workspaces

Solution

  1. Step 1: Analyze workspace creation and selection

    The 'dev' workspace is created and selected, then resources are applied there.
  2. Step 2: Switch to 'default' workspace and apply again

    Switching to 'default' workspace applies resources separately using its own state file.
  3. Final Answer:

    Resources are created separately in 'dev' and 'default' environments -> Option A
  4. Quick Check:

    Different workspaces = separate resource sets [OK]
Hint: Switching workspaces uses separate states, so resources stay separate [OK]
Common Mistakes:
  • Assuming resources merge across workspaces
  • Thinking switching workspaces causes errors
  • Believing only one workspace can have resources
4. You run terraform workspace select prod but get an error: Workspace 'prod' does not exist. What is the best fix?
medium
A. Run terraform workspace new prod before selecting
B. Edit the Terraform code to add 'prod' workspace
C. Delete the current workspace and retry
D. Run terraform init again

Solution

  1. Step 1: Understand the error meaning

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

    Use terraform workspace new prod to add it before selecting.
  3. Final Answer:

    Run terraform workspace new prod before selecting -> Option A
  4. Quick Check:

    Create workspace before selecting it [OK]
Hint: Create workspace first, then select it [OK]
Common Mistakes:
  • Trying to select a workspace that doesn't exist
  • Editing code instead of managing workspaces
  • Reinitializing Terraform unnecessarily
5. You want to deploy the same Terraform configuration to dev, staging, and prod environments using workspaces. Which approach best avoids resource conflicts and keeps environments isolated?
hard
A. Deploy all environments in the default workspace with different variable files
B. Use one workspace and manually change resource names for each environment
C. Use different Terraform configuration files for each environment in one workspace
D. Create separate workspaces for each environment and deploy in each workspace

Solution

  1. Step 1: Understand workspace isolation

    Each workspace has its own state file, so creating separate workspaces isolates environments safely.
  2. Step 2: Compare options for managing multiple environments

    Using separate workspaces avoids manual renaming and code duplication, reducing errors.
  3. Final Answer:

    Create separate workspaces for each environment and deploy in each workspace -> Option D
  4. Quick Check:

    Separate workspaces = isolated environments [OK]
Hint: Use separate workspaces per environment for clean separation [OK]
Common Mistakes:
  • Trying to manage all environments in one workspace
  • Duplicating code instead of using workspaces
  • Relying on variable files without workspace separation