Bird
Raised Fist0
Terraformcloud~3 mins

Why Create_before_destroy lifecycle rule in Terraform? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could update your cloud resources without ever causing downtime or losing data?

The Scenario

Imagine you are updating a critical cloud resource like a database or a server manually. You delete the old one first, then create the new one. During this gap, your application has no resource to use, causing downtime and unhappy users.

The Problem

Manually deleting before creating is risky and slow. It causes service interruptions and potential data loss. You must carefully time each step, and any mistake can break your system. This manual juggling wastes time and causes stress.

The Solution

The create_before_destroy lifecycle rule in Terraform solves this by automatically creating the new resource before deleting the old one. This ensures continuous availability and smooth updates without downtime or data loss.

Before vs After
✗ Before
terraform apply: destroy old_resource; terraform apply: create new_resource
✓ After
lifecycle {
  create_before_destroy = true
}
What It Enables

This rule enables seamless resource updates with zero downtime, keeping your services reliable and users happy.

Real Life Example

When updating a load balancer or a virtual machine, using create_before_destroy ensures the new instance is ready before the old one is removed, so your website stays online without interruption.

Key Takeaways

Manual resource replacement causes downtime and risk.

create_before_destroy automates safe updates by creating first, then deleting.

This keeps services running smoothly during changes.

Practice

(1/5)
1. What is the main purpose of the create_before_destroy lifecycle rule in Terraform?
easy
A. To create a new resource before deleting the old one to avoid downtime
B. To destroy resources before creating new ones to save costs
C. To prevent any resource from being created or destroyed
D. To automatically backup resources before deletion

Solution

  1. Step 1: Understand lifecycle behavior

    The create_before_destroy rule tells Terraform to create the replacement resource first.
  2. Step 2: Avoid downtime during updates

    This ensures the old resource is only destroyed after the new one is ready, preventing service interruption.
  3. Final Answer:

    To create a new resource before deleting the old one to avoid downtime -> Option A
  4. Quick Check:

    create_before_destroy = avoid downtime [OK]
Hint: Remember: create new first, then delete old [OK]
Common Mistakes:
  • Thinking it deletes old resource before creating new
  • Confusing with prevent_destroy lifecycle rule
  • Assuming it backs up resources automatically
2. Which of the following is the correct syntax to enable create_before_destroy in a Terraform resource?
easy
A. lifecycle { create_before_destroy = true }
B. lifecycle { create_before_destroy: true }
C. lifecycle = { create_before_destroy = true }
D. lifecycle { create_before_destroy = "true" }

Solution

  1. Step 1: Review Terraform lifecycle block syntax

    The lifecycle block uses curly braces with key-value pairs using = and booleans without quotes.
  2. Step 2: Identify correct boolean assignment

    Boolean values are unquoted, so true is correct, not "true" as string.
  3. Final Answer:

    lifecycle { create_before_destroy = true } -> Option A
  4. Quick Check:

    Correct syntax uses = and unquoted booleans [OK]
Hint: Use = and true without quotes in lifecycle block [OK]
Common Mistakes:
  • Using colon : instead of equals =
  • Putting boolean true in quotes
  • Assigning lifecycle block with = instead of braces
3. Given this Terraform resource snippet, what will happen during an update?
resource "aws_instance" "example" {
  ami           = "ami-123456"
  instance_type = "t2.micro"

  lifecycle {
    create_before_destroy = true
  }
}
medium
A. Terraform will destroy the old instance before creating the new one
B. Terraform will fail because create_before_destroy is not supported
C. Terraform will update the instance in place without replacement
D. Terraform will create the new instance before destroying the old one

Solution

  1. Step 1: Check lifecycle rule effect

    The create_before_destroy = true means Terraform creates the new resource first.
  2. Step 2: Understand resource replacement

    Since the instance requires replacement, Terraform creates new instance before destroying old one.
  3. Final Answer:

    Terraform will create the new instance before destroying the old one -> Option D
  4. Quick Check:

    create_before_destroy = new before old [OK]
Hint: If replacement needed, new resource comes first [OK]
Common Mistakes:
  • Assuming old resource is destroyed first
  • Thinking update happens in place always
  • Believing create_before_destroy is unsupported
4. You added create_before_destroy = true to a resource but Terraform still destroys the old resource before creating the new one. What is the likely cause?
medium
A. You used quotes around true in lifecycle block
B. The resource does not support create_before_destroy lifecycle rule
C. You forgot to run terraform init
D. Terraform always destroys before creating regardless of lifecycle

Solution

  1. Step 1: Understand resource support

    Not all Terraform resources support create_before_destroy. If unsupported, Terraform ignores it.
  2. Step 2: Check lifecycle behavior fallback

    If unsupported, Terraform defaults to destroying old resource before creating new one.
  3. Final Answer:

    The resource does not support create_before_destroy lifecycle rule -> Option B
  4. Quick Check:

    Unsupported resource ignores create_before_destroy [OK]
Hint: Check resource docs for create_before_destroy support [OK]
Common Mistakes:
  • Assuming terraform init fixes lifecycle issues
  • Using quotes around boolean true
  • Believing lifecycle rules always override resource behavior
5. You manage a critical database server resource that must never be unavailable during updates. How should you configure Terraform to ensure zero downtime using create_before_destroy?
hard
A. Remove lifecycle block and rely on default behavior
B. Use prevent_destroy = true to stop any deletion
C. Add lifecycle { create_before_destroy = true } and verify the resource supports it
D. Manually delete old resource before applying changes

Solution

  1. Step 1: Use create_before_destroy for zero downtime

    Setting create_before_destroy = true ensures new resource is ready before old is removed.
  2. Step 2: Confirm resource supports lifecycle rule

    Check documentation to ensure the database resource supports this lifecycle feature to avoid unexpected downtime.
  3. Final Answer:

    Add lifecycle { create_before_destroy = true } and verify the resource supports it -> Option C
  4. Quick Check:

    Use create_before_destroy with support check [OK]
Hint: Always verify resource supports create_before_destroy [OK]
Common Mistakes:
  • Using prevent_destroy which blocks updates
  • Relying on default lifecycle risking downtime
  • Manually deleting resources causing downtime
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