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, allowing you to manage different environments like dev, test, and prod within the same directory.
Click to reveal answer
beginner
How does directory-based separation differ from using workspaces in Terraform?
Directory-based separation means creating separate folders for each environment with its own Terraform files and state, while workspaces use one directory but switch states internally to manage multiple environments.
Click to reveal answer
intermediate
What is a key advantage of using Terraform workspaces over directory-based separation?
Workspaces allow you to reuse the same configuration files for multiple environments, reducing duplication and making it easier to maintain consistent infrastructure setups.
Click to reveal answer
intermediate
What is a potential downside of using Terraform workspaces?
Workspaces can be confusing because the same configuration is used for all environments, so mistakes in variable values or state management can affect multiple environments if not handled carefully.
Click to reveal answer
intermediate
When might directory-based separation be preferred over workspaces?
Directory-based separation is preferred when environments have very different configurations or when teams want clear physical separation of code and state files to avoid accidental changes across environments.
Click to reveal answer
What does a Terraform workspace primarily manage?
ASeparate state files for different environments
BDifferent Terraform versions
CMultiple cloud providers in one config
DUser access permissions
✗ Incorrect
Terraform workspaces manage separate state files so you can have multiple environments using the same configuration.
Which method involves creating separate folders for each environment?
ARemote state backend
BTerraform workspaces
CTerraform modules
DDirectory-based separation
✗ Incorrect
Directory-based separation means using different folders for each environment.
What is a benefit of using workspaces instead of directories?
AEasier to maintain one set of configuration files
BBetter security isolation
CSupports different Terraform versions per environment
DAllows multiple cloud providers in one workspace
✗ Incorrect
Workspaces let you reuse the same configuration files for multiple environments.
Which is a risk when using Terraform workspaces?
ACannot use variables
BDuplicating configuration files
CAccidentally applying changes to the wrong environment
DHard to share state files
✗ Incorrect
Because workspaces share the same config, applying changes to the wrong workspace can affect the wrong environment.
When is directory-based separation most useful?
AWhen you want to use one state file
BWhen environments have very different configurations
CWhen you want to avoid using variables
DWhen using only one environment
✗ Incorrect
Directory-based separation is best when environments differ a lot and need separate configs.
Explain the difference between Terraform workspaces and directory-based separation.
Think about how state and configuration files are organized.
You got /4 concepts.
Describe a scenario where you would choose Terraform workspaces over directory-based separation.
Consider when reusing configuration is helpful.
You got /4 concepts.
Practice
(1/5)
1. What is the main difference between Terraform workspaces and directory-based separation?
easy
A. Workspaces require separate folders; directory-based uses one folder with multiple states.
B. Workspaces store state remotely; directory-based stores state locally only.
C. Workspaces and directory-based separation are exactly the same.
D. Workspaces use one folder with multiple states; directory-based uses separate folders for each environment.
Solution
Step 1: Understand workspace concept
Workspaces allow multiple states inside the same folder by switching context.
Step 2: Understand directory-based separation
Directory-based separation uses different folders, each with its own code and state files.
Final Answer:
Workspaces use one folder with multiple states; directory-based uses separate folders for each environment. -> Option D
Quick Check:
Workspaces = one folder, multiple states [OK]
Hint: Workspaces = one folder, directory = multiple folders [OK]
Common Mistakes:
Confusing workspace with directory-based separation
Thinking workspaces require multiple folders
Assuming directory-based uses one state file
2. Which Terraform command correctly switches to a workspace named dev?
easy
A. terraform workspace select dev
B. terraform select workspace dev
C. terraform switch workspace dev
D. terraform workspace change dev
Solution
Step 1: Recall Terraform workspace commands
The correct command to switch workspace is terraform workspace select <name>.
Step 2: Match command to options
Only terraform workspace select dev matches the correct syntax exactly.
Each folder has its own Terraform code and state, so running inside envs/dev affects only dev.
Step 2: Analyze command effect
terraform apply in envs/dev applies changes only to dev environment's resources.
Final Answer:
Terraform applies changes only to the dev environment using its own state. -> Option B
Quick Check:
Directory-based apply affects current folder environment [OK]
Hint: Apply runs in current folder's environment only [OK]
Common Mistakes:
Assuming apply affects all environments
Thinking state is shared across folders
Expecting errors due to missing state
4. You created a new workspace named staging but when running terraform apply, changes apply to the default workspace instead. What is the likely cause?
medium
A. You forgot to run terraform workspace select staging before applying.
B. The staging workspace does not exist.
C. Terraform does not support multiple workspaces.
D. You need to rename the default workspace to staging.
Solution
Step 1: Check workspace usage
Creating a workspace does not switch to it automatically; you must select it explicitly.
Step 2: Identify missing command
If you don't run terraform workspace select staging, Terraform stays in default workspace.
Final Answer:
You forgot to run terraform workspace select staging before applying. -> Option A
Quick Check:
Must select workspace before apply [OK]
Hint: Always select workspace before applying changes [OK]
Common Mistakes:
Assuming workspace auto-switches after creation
Thinking workspace names must be renamed
Believing Terraform lacks workspace support
5. You want to manage three environments: dev, staging, and prod. You want to keep code DRY (Don't Repeat Yourself) and share most configuration but keep states isolated. Which approach is best?
hard
A. Use one folder and switch backend configuration files for each environment.
B. Create three separate folders, each with full copies of code and state.
C. Use one folder with Terraform workspaces for each environment.
D. Use one folder and manually rename state files for each environment.
Solution
Step 1: Analyze DRY and state isolation needs
Sharing code but isolating state fits well with workspaces, which share code folder but separate states.
Step 2: Compare options
Use one folder with Terraform workspaces for each environment uses workspaces to keep one codebase and separate states per environment, avoiding code duplication.
Step 3: Evaluate other options
Create three separate folders, each with full copies of code and state duplicates code, violating DRY. Use one folder and manually rename state files for each environment is error-prone and manual. Use one folder and switch backend configuration files for each environment requires backend changes, complex to manage.
Final Answer:
Use one folder with Terraform workspaces for each environment. -> Option C
Quick Check:
Workspaces = shared code, separate states [OK]
Hint: Workspaces share code, separate states for DRY environments [OK]
Common Mistakes:
Duplicating code in multiple folders unnecessarily