Bird
Raised Fist0
Terraformcloud~20 mins

Terraform state mv for refactoring - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Terraform State Refactoring Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What does the Terraform command terraform state mv do?
Choose the best description of what terraform state mv accomplishes during infrastructure refactoring.
AIt refreshes the Terraform state to match the current real infrastructure without changing resource addresses.
BIt deletes resources from the cloud provider and removes them from the Terraform state.
CIt moves resources in the Terraform state file from one address to another without changing the real infrastructure.
DIt creates new resources in the cloud provider and adds them to the Terraform state.
Attempts:
2 left
💡 Hint
Think about how Terraform tracks resources internally versus what happens in the cloud.
Configuration
intermediate
2:00remaining
Which terraform state mv command correctly renames a resource?
You have a resource named aws_instance.old_name and want to rename it to aws_instance.new_name in the Terraform state. Which command will do this correctly?
Aterraform state mv aws_instance.old_name aws_instance.new_name
Bterraform state mv aws_instance.new_name aws_instance.old_name
Cterraform state mv aws_instance.old_name new_name
Dterraform state mv old_name aws_instance.new_name
Attempts:
2 left
💡 Hint
The first argument is the current resource address, the second is the new address.
Architecture
advanced
2:00remaining
What is the impact of using terraform state mv on the actual cloud infrastructure?
After running terraform state mv to rename a resource in the state file, what happens to the real resource in the cloud provider?
AThe real resource is renamed or recreated in the cloud provider to match the new state address.
BThe real resource remains unchanged; only the Terraform state file is updated.
CThe real resource is deleted and a new one is created with the new name.
DTerraform pauses and waits for manual confirmation before changing the real resource.
Attempts:
2 left
💡 Hint
Consider what Terraform state represents versus actual cloud resources.
security
advanced
2:00remaining
What security risk can arise if terraform state mv is used incorrectly during refactoring?
If you move a resource in the Terraform state to a wrong address or to a resource managed by another team, what security risk might occur?
ATerraform might overwrite or destroy resources managed by others, causing data loss or service disruption.
BTerraform will encrypt the state file automatically, preventing any risk.
CTerraform will block any state move that affects resources outside your account.
DThere is no security risk because state moves only affect local files.
Attempts:
2 left
💡 Hint
Think about what happens if Terraform thinks it owns resources it does not.
Best Practice
expert
2:00remaining
What is the recommended best practice before running terraform state mv in a team environment?
Before moving resources in the Terraform state file during refactoring, what should you do to avoid conflicts and errors?
ARun <code>terraform apply</code> immediately after <code>terraform state mv</code> without informing anyone.
BIgnore state locking because <code>terraform state mv</code> only changes local files.
CDelete the remote state file and recreate it after the move.
DLock the Terraform state to prevent concurrent changes and communicate the change to the team.
Attempts:
2 left
💡 Hint
Think about how teams share Terraform state and avoid race conditions.

Practice

(1/5)
1. What is the primary purpose of the terraform state mv command?
easy
A. To delete resources from the Terraform state and infrastructure
B. To rename or move resources within the Terraform state file without changing actual infrastructure
C. To create new resources in the Terraform state
D. To backup the Terraform state file to a remote location

Solution

  1. Step 1: Understand the role of terraform state mv

    The command is used to rename or move resource references inside the Terraform state file.
  2. Step 2: Confirm it does not affect actual infrastructure

    It only changes the state file, keeping the real infrastructure intact during code refactoring.
  3. Final Answer:

    To rename or move resources within the Terraform state file without changing actual infrastructure -> Option B
  4. Quick Check:

    terraform state mv = rename/move state only [OK]
Hint: Remember: state mv changes state, not real resources [OK]
Common Mistakes:
  • Thinking it deletes or creates real resources
  • Confusing it with terraform apply
  • Assuming it backs up state automatically
2. Which of the following is the correct syntax to move a resource from aws_instance.old_name to aws_instance.new_name in Terraform state?
easy
A. terraform state mv aws_instance.old_name aws_instance.new_name
B. terraform mv state aws_instance.old_name aws_instance.new_name
C. terraform state move aws_instance.old_name aws_instance.new_name
D. terraform move state aws_instance.old_name aws_instance.new_name

Solution

  1. Step 1: Recall the correct command structure

    The correct command starts with terraform state mv followed by the source and destination resource addresses.
  2. Step 2: Verify the order and keywords

    Only terraform state mv aws_instance.old_name aws_instance.new_name uses the exact syntax: terraform state mv source destination.
  3. Final Answer:

    terraform state mv aws_instance.old_name aws_instance.new_name -> Option A
  4. Quick Check:

    Correct syntax = terraform state mv [OK]
Hint: Use 'terraform state mv' followed by source and destination [OK]
Common Mistakes:
  • Swapping 'mv' and 'state' keywords
  • Using 'move' instead of 'mv'
  • Incorrect command order
3. Given the Terraform state contains a resource aws_s3_bucket.my_bucket, what will be the result after running terraform state mv aws_s3_bucket.my_bucket aws_s3_bucket.renamed_bucket?
medium
A. Terraform deletes the old bucket and creates a new bucket named renamed_bucket
B. The actual S3 bucket is renamed in AWS to renamed_bucket
C. The resource in the state is renamed to aws_s3_bucket.renamed_bucket without changing the actual bucket
D. The command fails because resource names cannot be changed

Solution

  1. Step 1: Understand what terraform state mv does

    It only changes the resource name inside the Terraform state file, not the real resource.
  2. Step 2: Confirm no changes happen to actual AWS resources

    The S3 bucket in AWS remains unchanged; only Terraform's tracking name changes.
  3. Final Answer:

    The resource in the state is renamed to aws_s3_bucket.renamed_bucket without changing the actual bucket -> Option C
  4. Quick Check:

    State rename ≠ real resource rename [OK]
Hint: State mv changes state only, not real cloud resources [OK]
Common Mistakes:
  • Assuming AWS resources are renamed automatically
  • Expecting resource recreation
  • Thinking the command will fail
4. You run terraform state mv aws_instance.web aws_instance.app but get an error: Resource aws_instance.web not found in state. What is the most likely cause?
medium
A. You need to run terraform apply before moving state
B. The syntax of the command is incorrect
C. Terraform state file is corrupted and cannot be read
D. The resource aws_instance.web does not exist in the current Terraform state

Solution

  1. Step 1: Analyze the error message

    The error clearly states the resource aws_instance.web is not found in the state file.
  2. Step 2: Understand implications

    This means the resource address is incorrect or the resource was never created or imported into the state.
  3. Final Answer:

    The resource aws_instance.web does not exist in the current Terraform state -> Option D
  4. Quick Check:

    Resource not found = wrong address or missing resource [OK]
Hint: Check resource names exist in state before moving [OK]
Common Mistakes:
  • Assuming syntax error without checking resource name
  • Trying to move before resource creation
  • Ignoring error details
5. You want to refactor your Terraform code by moving a resource from module old_module to new_module. Which command correctly moves the resource aws_lambda_function.func in the state file?
hard
A. terraform state mv module.old_module.aws_lambda_function.func module.new_module.aws_lambda_function.func
B. terraform state mv aws_lambda_function.func module.new_module.aws_lambda_function.func
C. terraform state mv module.old_module.aws_lambda_function.func aws_lambda_function.func
D. terraform state mv module.new_module.aws_lambda_function.func module.old_module.aws_lambda_function.func

Solution

  1. Step 1: Identify full resource addresses including modules

    Resources inside modules have addresses prefixed by module.module_name.
  2. Step 2: Use terraform state mv with full source and destination addresses

    To move from old_module to new_module, specify both full addresses correctly.
  3. Final Answer:

    terraform state mv module.old_module.aws_lambda_function.func module.new_module.aws_lambda_function.func -> Option A
  4. Quick Check:

    Use full module paths in state mv [OK]
Hint: Include module prefix when moving resources inside modules [OK]
Common Mistakes:
  • Omitting module prefix in resource addresses
  • Swapping source and destination
  • Using partial resource names