Bird
Raised Fist0
Terraformcloud~5 mins

Lifecycle customization in Terraform - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is lifecycle customization in Terraform?
It is a way to control how Terraform creates, updates, or deletes resources by setting special rules inside the resource block.
Click to reveal answer
beginner
What does the prevent_destroy lifecycle argument do?
It stops Terraform from deleting a resource, even if you run a destroy command or remove it from the config.
Click to reveal answer
intermediate
Explain the purpose of ignore_changes in lifecycle customization.
It tells Terraform to ignore changes to specified resource attributes so they won't trigger updates.
Click to reveal answer
intermediate
How does create_before_destroy affect resource updates?
Terraform creates the new resource first before deleting the old one to avoid downtime.
Click to reveal answer
beginner
Give an example use case for lifecycle customization in Terraform.
Protecting a database instance from accidental deletion by using prevent_destroy.
Click to reveal answer
Which lifecycle argument prevents Terraform from deleting a resource?
Acreate_before_destroy
Bignore_changes
Cprevent_destroy
Dreplace_triggered_by
What does ignore_changes do in Terraform lifecycle?
AIgnores changes to specified attributes
BDeletes resource attributes
CCreates resource before destroying old one
DTriggers replacement on attribute change
Why use create_before_destroy in lifecycle?
ATo prevent resource creation
BTo delete resource before creating new
CTo ignore resource changes
DTo create new resource before deleting old
Which lifecycle argument helps avoid accidental resource deletion?
Aignore_changes
Bprevent_destroy
Ccreate_before_destroy
Dreplace_triggered_by
Can lifecycle customization affect resource update behavior?
AYes, it can ignore changes or control update order
BNo, only creation and deletion
CNo, lifecycle only controls destroy
DYes, but only for resource import
Describe the main lifecycle customization options in Terraform and their effects.
Think about how Terraform handles create, update, and delete actions.
You got /3 concepts.
    Explain a scenario where you would use lifecycle customization to protect a resource.
    Consider resources that are costly or risky to lose.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the create_before_destroy lifecycle setting do in Terraform?
      easy
      A. It ignores changes to specific resource attributes during updates.
      B. It prevents the resource from being destroyed under any circumstances.
      C. It forces Terraform to destroy the resource before creating a new one.
      D. It creates a new resource before destroying the old one to avoid downtime.

      Solution

      1. Step 1: Understand the purpose of create_before_destroy

        This setting ensures Terraform creates the replacement resource first.
      2. Step 2: Avoid downtime during resource replacement

        By creating the new resource before destroying the old, service interruptions are minimized.
      3. Final Answer:

        It creates a new resource before destroying the old one to avoid downtime. -> Option D
      4. Quick Check:

        create_before_destroy = create new before delete [OK]
      Hint: Remember: create_before_destroy means new first, then old removed [OK]
      Common Mistakes:
      • Confusing create_before_destroy with prevent_destroy
      • Thinking it deletes first then creates
      • Assuming it ignores changes
      2. Which of the following is the correct syntax to prevent a resource from being destroyed in Terraform?
      easy
      A. lifecycle { ignore_changes = true }
      B. lifecycle { prevent_destroy = true }
      C. lifecycle { create_before_destroy = true }
      D. lifecycle { destroy_protection = true }

      Solution

      1. Step 1: Identify the correct lifecycle argument to prevent destruction

        The argument is prevent_destroy set to true.
      2. Step 2: Verify syntax correctness

        The syntax is lifecycle { prevent_destroy = true }, which is valid Terraform code.
      3. Final Answer:

        lifecycle { prevent_destroy = true } -> Option B
      4. Quick Check:

        prevent_destroy = true prevents deletion [OK]
      Hint: Use prevent_destroy = true to block resource deletion [OK]
      Common Mistakes:
      • Using ignore_changes instead of prevent_destroy
      • Using a non-existent destroy_protection argument
      • Confusing create_before_destroy with prevent_destroy
      3. Given this Terraform resource snippet:
      resource "aws_instance" "example" {
        ami           = "ami-123456"
        instance_type = "t2.micro"
      
        lifecycle {
          ignore_changes = ["tags"]
        }
      }
      
      What happens if you manually change the tags of this instance outside Terraform and then run terraform apply?
      medium
      A. Terraform will ignore the tag changes and keep the manual tags as is.
      B. Terraform will destroy and recreate the instance to sync tags.
      C. Terraform will throw an error due to tag mismatch.
      D. Terraform will overwrite the manual tag changes with the configuration tags.

      Solution

      1. Step 1: Understand the effect of ignore_changes on tags

        The lifecycle setting ignore_changes = ["tags"] tells Terraform to ignore any changes to tags made outside Terraform.
      2. Step 2: Predict Terraform behavior on apply

        Terraform will not attempt to update tags, so manual changes remain intact without error or replacement.
      3. Final Answer:

        Terraform will ignore the tag changes and keep the manual tags as is. -> Option A
      4. Quick Check:

        ignore_changes on tags means manual tag changes stay [OK]
      Hint: ignore_changes = ["tags"] means Terraform skips tag updates [OK]
      Common Mistakes:
      • Assuming Terraform overwrites manual tag changes
      • Expecting an error on tag mismatch
      • Thinking resource will be recreated
      4. You have this Terraform lifecycle block:
      lifecycle {
        create_before_destroy = true
        prevent_destroy = true
      }
      
      What problem will occur if you try to update this resource that requires replacement?
      medium
      A. Terraform will create the new resource and destroy the old one successfully.
      B. Terraform will ignore prevent_destroy and destroy the resource anyway.
      C. Terraform will fail because it cannot destroy the old resource due to prevent_destroy.
      D. Terraform will skip the update and keep the old resource unchanged.

      Solution

      1. Step 1: Analyze interaction of create_before_destroy and prevent_destroy

        create_before_destroy tries to create new resource before deleting old one, but prevent_destroy forbids deletion.
      2. Step 2: Understand Terraform behavior on replacement

        Terraform cannot destroy the old resource due to prevent_destroy, so replacement fails.
      3. Final Answer:

        Terraform will fail because it cannot destroy the old resource due to prevent_destroy. -> Option C
      4. Quick Check:

        prevent_destroy blocks deletion, causing failure with create_before_destroy [OK]
      Hint: prevent_destroy blocks deletion, so replacement fails [OK]
      Common Mistakes:
      • Assuming Terraform ignores prevent_destroy
      • Thinking resource updates without replacement
      • Believing create_before_destroy overrides prevent_destroy
      5. You want to update an AWS S3 bucket's tags without triggering bucket replacement or downtime. Which lifecycle customization should you apply in Terraform to achieve this?
      hard
      A. Use ignore_changes = ["tags"] to skip tag updates.
      B. Use prevent_destroy = true to block bucket deletion.
      C. Use create_before_destroy = true to create new bucket first.
      D. Use ignore_changes = ["versioning"] to skip versioning changes.

      Solution

      1. Step 1: Identify the goal to update tags without replacement

        Tags often cause resource updates; ignoring changes to tags avoids replacement.
      2. Step 2: Choose lifecycle setting to ignore tag changes

        Setting ignore_changes = ["tags"] tells Terraform not to replace the bucket when tags change.
      3. Final Answer:

        Use ignore_changes = ["tags"] to skip tag updates. -> Option A
      4. Quick Check:

        ignore_changes on tags prevents replacement on tag updates [OK]
      Hint: Ignore tag changes to update tags without replacement [OK]
      Common Mistakes:
      • Using prevent_destroy which blocks deletion but not replacement
      • Using create_before_destroy which affects replacement order
      • Ignoring unrelated attributes like versioning
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard