Bird
Raised Fist0
Terraformcloud~10 mins

Terraform apply -replace flag - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the command to force replacement of a resource named 'aws_instance.example'.

Terraform
terraform apply [1]aws_instance.example
Drag options to blanks, or click blank then click option'
A-replace=
B-auto-approve
C-refresh
D-destroy
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-destroy' instead of '-replace'.
Forgetting to specify the resource name after the flag.
2fill in blank
medium

Complete the command to replace two resources: 'aws_instance.web' and 'aws_s3_bucket.data'.

Terraform
terraform apply [1]aws_instance.web [2]aws_s3_bucket.data
Drag options to blanks, or click blank then click option'
A-replace=
B-refresh
C-auto-approve
D-destroy
Attempts:
3 left
💡 Hint
Common Mistakes
Using only one '-replace' flag for multiple resources.
Omitting the equals sign '=' after '-replace'.
3fill in blank
hard

Fix the error in this command to replace the resource 'aws_db_instance.main'.

Terraform
terraform apply [1]aws_db_instance.main
Drag options to blanks, or click blank then click option'
A-refresh
B-replace=
C-auto-approve
D-destroy
Attempts:
3 left
💡 Hint
Common Mistakes
Missing '=' after '-replace'.
Using '-replace' without specifying the resource.
4fill in blank
hard

Fill both blanks to correctly replace 'aws_lambda_function.func' and approve automatically.

Terraform
terraform apply [1]aws_lambda_function.func [2]
Drag options to blanks, or click blank then click option'
A-replace=
B-auto-approve
C-refresh
D-destroy
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting '-auto-approve' causes Terraform to wait for confirmation.
Missing '=' after '-replace' causes syntax errors.
5fill in blank
hard

Fill all three blanks to replace 'aws_security_group.sg', refresh state, and auto-approve.

Terraform
terraform apply [1]aws_security_group.sg [2] [3]
Drag options to blanks, or click blank then click option'
A-replace=
B-refresh
C-auto-approve
D-destroy
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-destroy' instead of '-replace'.
Omitting '-auto-approve' causes manual confirmation.
Missing '=' after '-replace'.

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