Bird
Raised Fist0
Terraformcloud~20 mins

Terraform apply -replace flag - 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 Replace Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding the purpose of the -replace flag in Terraform apply

What does the -replace flag do when used with terraform apply?

AIt updates the specified resource without recreating it.
BIt skips the specified resource during the apply process.
CIt rolls back the last apply operation on the specified resource.
DIt forces Terraform to destroy and recreate the specified resource during apply.
Attempts:
2 left
💡 Hint

Think about how you can force Terraform to rebuild a resource even if no changes are detected.

Configuration
intermediate
2:00remaining
Using -replace flag syntax correctly

Which of the following commands correctly uses the -replace flag to replace the resource aws_instance.web_server?

Aterraform apply -replace=aws_instance.web_server
Bterraform apply --replace aws_instance.web_server
Cterraform apply -replace aws_instance.web_server
Dterraform apply --replace=aws_instance.web_server
Attempts:
2 left
💡 Hint

Check the exact syntax for flags with values in Terraform CLI.

service_behavior
advanced
2:00remaining
Effect of -replace on resource lifecycle

What is the expected behavior of Terraform when applying with -replace=aws_s3_bucket.my_bucket if the bucket exists and has data?

ATerraform will skip the bucket since it already exists.
BTerraform will update the bucket in place without data loss.
CTerraform will destroy the existing bucket and recreate it, causing data loss.
DTerraform will create a new bucket with a different name.
Attempts:
2 left
💡 Hint

Consider what happens when a resource is destroyed and recreated.

security
advanced
2:00remaining
Security implications of using -replace on sensitive resources

What is a key security risk when using terraform apply -replace on resources like databases or secrets managers?

ATemporary exposure of sensitive data during resource recreation.
BPrevention of unauthorized access during apply.
CAutomatic encryption of data during replacement.
DNo impact on security as resources are replaced safely.
Attempts:
2 left
💡 Hint

Think about what happens to data when a resource is destroyed and recreated.

Best Practice
expert
3:00remaining
Best practice when using -replace flag in production

Which is the best practice before running terraform apply -replace on a critical production resource?

ADelete the resource manually before running apply.
BBackup the resource data and test replacement in a staging environment first.
CIgnore state locking to speed up apply.
DRun the command directly in production to save time.
Attempts:
2 left
💡 Hint

Consider how to avoid data loss and downtime.

Practice

(1/5)
1. What does the -replace flag do when used with terraform apply?
easy
A. Only plans changes without applying them
B. Skips the creation of new resources
C. Forces Terraform to destroy and recreate a specific resource
D. Updates all resources without destroying any

Solution

  1. Step 1: Understand the purpose of the -replace flag

    The -replace flag tells Terraform to destroy and recreate a specific resource during apply.
  2. Step 2: Compare with other apply behaviors

    Normally, Terraform updates resources in place if possible, but -replace forces full replacement of the targeted resource.
  3. Final Answer:

    Forces Terraform to destroy and recreate a specific resource -> Option C
  4. Quick Check:

    -replace flag = force resource replacement [OK]
Hint: Remember: -replace means rebuild that resource only [OK]
Common Mistakes:
  • Thinking -replace updates resources in place
  • Confusing -replace with plan-only mode
  • Assuming it affects all resources
2. Which of the following is the correct syntax to replace a resource named aws_instance.example using Terraform apply?
easy
A. terraform apply -replace=aws_instance.example
B. terraform apply --replace aws_instance.example
C. terraform apply -replace aws_instance.example
D. terraform apply -replace=aws_instance.example.id

Solution

  1. Step 1: Recall the correct flag syntax

    The correct syntax uses an equals sign with the resource address: -replace=resource_address.
  2. Step 2: Check the resource address format

    The resource address is aws_instance.example, so the correct command is terraform apply -replace=aws_instance.example.
  3. Final Answer:

    terraform apply -replace=aws_instance.example -> Option A
  4. Quick Check:

    Correct syntax uses '=' with resource address [OK]
Hint: Use '=' directly after -replace with resource name [OK]
Common Mistakes:
  • Using space instead of '=' after -replace
  • Adding extra flags like --replace
  • Appending .id unnecessarily
3. Given this Terraform command:
terraform apply -replace=aws_s3_bucket.mybucket
What will happen to the resource aws_s3_bucket.mybucket during apply?
medium
A. It will be updated in place without destruction
B. It will be ignored and left unchanged
C. Terraform will only plan changes but not apply
D. It will be destroyed and recreated

Solution

  1. Step 1: Understand the effect of -replace on a resource

    The -replace flag forces Terraform to destroy and recreate the specified resource during apply.
  2. Step 2: Apply this to aws_s3_bucket.mybucket

    Since the command targets aws_s3_bucket.mybucket, Terraform will destroy and then recreate this bucket.
  3. Final Answer:

    It will be destroyed and recreated -> Option D
  4. Quick Check:

    -replace causes destroy and recreate [OK]
Hint: Replace means destroy then create that resource [OK]
Common Mistakes:
  • Thinking it updates resource without destruction
  • Assuming it skips the resource
  • Confusing apply with plan
4. You run terraform apply -replace=aws_instance.web but get an error: Invalid resource address. What is the most likely cause?
medium
A. The resource name is misspelled or does not exist in the state
B. The -replace flag cannot be used with aws_instance resources
C. You forgot to run terraform init before apply
D. The command requires a space instead of '=' after -replace

Solution

  1. Step 1: Analyze the error message

    An 'Invalid resource address' error means Terraform cannot find the resource in the state or the address is wrong.
  2. Step 2: Check resource existence and spelling

    Most likely, the resource aws_instance.web is misspelled or not present in the current Terraform state.
  3. Final Answer:

    The resource name is misspelled or does not exist in the state -> Option A
  4. Quick Check:

    Invalid address = wrong or missing resource name [OK]
Hint: Check resource name spelling and state presence first [OK]
Common Mistakes:
  • Assuming -replace flag is invalid for resource types
  • Thinking terraform init fixes resource address errors
  • Using space instead of '=' causes different errors
5. You want to replace two resources, aws_instance.web and aws_security_group.sg, in a single apply command. Which is the correct way to do this?
hard
A. terraform apply -replace=aws_instance.web,aws_security_group.sg
B. terraform apply -replace=aws_instance.web -replace=aws_security_group.sg
C. terraform apply -replace=aws_instance.web aws_security_group.sg
D. terraform apply -replace aws_instance.web -replace aws_security_group.sg

Solution

  1. Step 1: Understand multiple -replace usage

    Terraform allows multiple -replace flags, each specifying one resource to replace.
  2. Step 2: Evaluate each option

    terraform apply -replace=aws_instance.web -replace=aws_security_group.sg uses two separate -replace flags correctly. terraform apply -replace=aws_instance.web,aws_security_group.sg uses a comma which is invalid. Options C and D use incorrect syntax without '=' or with spaces.
  3. Final Answer:

    terraform apply -replace=aws_instance.web -replace=aws_security_group.sg -> Option B
  4. Quick Check:

    Use multiple -replace flags for multiple resources [OK]
Hint: Use one -replace= per resource to replace multiple [OK]
Common Mistakes:
  • Trying to list multiple resources with commas
  • Using spaces instead of '=' after -replace
  • Combining resources in one -replace flag