Bird
Raised Fist0
Terraformcloud~30 mins

Null values handling in Terraform - Mini Project: Build & Apply

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
Null values handling
📖 Scenario: You are setting up a Terraform configuration to create cloud resources. Sometimes, certain optional values might not be provided, and you want to handle these null values safely to avoid errors.
🎯 Goal: Build a Terraform configuration that defines a variable which can be null, then use a default value when the variable is null to configure a resource properly.
📋 What You'll Learn
Create a variable called instance_type that can accept null values
Define a local variable final_instance_type that uses instance_type if it is not null, otherwise uses "t2.micro"
Create an AWS EC2 instance resource that uses final_instance_type as its instance type
Ensure the configuration is valid and deployable
💡 Why This Matters
🌍 Real World
Cloud infrastructure often requires optional configuration values. Handling null values safely prevents deployment errors and allows flexible configurations.
💼 Career
Knowing how to handle null values in Terraform is essential for cloud engineers and DevOps professionals to write robust infrastructure as code.
Progress0 / 4 steps
1
Define a variable that can be null
Create a Terraform variable called instance_type of type string that allows null values and has no default value.
Terraform
Hint

Use nullable = true to allow the variable to accept null values.

2
Create a local variable with a default fallback
Add a local variable called final_instance_type that uses the value of var.instance_type if it is not null, otherwise uses the string "t2.micro".
Terraform
Hint

Use a conditional expression to check if var.instance_type is null.

3
Create an AWS EC2 instance resource using the local variable
Create a resource of type aws_instance named example that uses local.final_instance_type as the value for instance_type. Use ami = "ami-12345678" as a placeholder AMI ID.
Terraform
Hint

Use local.final_instance_type for the instance_type attribute.

4
Add provider configuration for AWS
Add a provider block for aws with region set to us-east-1 to complete the configuration.
Terraform
Hint

The provider block is required to deploy AWS resources.

Practice

(1/5)
1. What does a null value represent in Terraform configuration?
easy
A. A zero number
B. An empty string
C. An absence of a value or an intentional skip
D. A syntax error

Solution

  1. Step 1: Understand the meaning of null in Terraform

    In Terraform, null means no value is set or the value is intentionally skipped.
  2. Step 2: Differentiate null from other values

    Zero and empty string are actual values, while null means absence of any value.
  3. Final Answer:

    An absence of a value or an intentional skip -> Option C
  4. Quick Check:

    Null means no value set = B [OK]
Hint: Null means no value, not zero or empty string [OK]
Common Mistakes:
  • Confusing null with zero
  • Thinking null is an empty string
  • Assuming null causes syntax error
2. Which of the following is the correct way to assign a null value to a variable in Terraform?
easy
A. variable "example" { default = null }
B. variable "example" { default = "null" }
C. variable "example" { default = '' }
D. variable "example" { default = 0 }

Solution

  1. Step 1: Review Terraform syntax for null assignment

    In Terraform, null is a keyword without quotes to represent no value.
  2. Step 2: Identify incorrect options

    variable "example" { default = "null" } uses quotes making it a string, C is empty string, D is zero number.
  3. Final Answer:

    variable "example" { default = null } -> Option A
  4. Quick Check:

    Null keyword without quotes = A [OK]
Hint: Use null without quotes to assign null value [OK]
Common Mistakes:
  • Using "null" as a string instead of null keyword
  • Confusing empty string with null
  • Assigning zero instead of null
3. Given this Terraform expression:
var.input != null ? var.input : "default_value"

What will be the result if var.input is null?
medium
A. null
B. "default_value"
C. var.input
D. Error: invalid expression

Solution

  1. Step 1: Understand the conditional expression

    The expression checks if var.input is not null; if true, returns var.input, else returns "default_value".
  2. Step 2: Apply the condition when var.input is null

    Since var.input is null, the condition is false, so the expression returns "default_value".
  3. Final Answer:

    "default_value" -> Option B
  4. Quick Check:

    Null input returns default = A [OK]
Hint: If input is null, conditional returns default value [OK]
Common Mistakes:
  • Assuming null is returned instead of default
  • Thinking expression causes error
  • Confusing var.input with string "var.input"
4. Identify the error in this Terraform snippet handling null values:
output "example" {
  value = var.optional_value != null ? var.optional_value : null
}
medium
A. The output block must not use variables
B. The conditional operator syntax is incorrect
C. Using null as fallback causes output to be invalid
D. No error; this is valid Terraform code

Solution

  1. Step 1: Analyze the conditional expression

    The expression returns var.optional_value if not null, else returns null.
  2. Step 2: Understand output block behavior with null

    Terraform outputs can have null values; it is valid and will display as null when using terraform output.
  3. Final Answer:

    No error; this is valid Terraform code -> Option D
  4. Quick Check:

    Outputs can accept null = D [OK]
Hint: Outputs can safely return null values [OK]
Common Mistakes:
  • Believing outputs cannot accept null values
  • Misreading the conditional syntax as incorrect
  • Thinking variables cannot be used in output blocks
5. You want to create a resource only if a variable enable_feature is not null and true. Which Terraform expression correctly handles null values to achieve this?
hard
A. count = var.enable_feature != null && var.enable_feature == true ? 1 : 0
B. count = var.enable_feature != false ? 1 : 0
C. count = var.enable_feature ? 1 : 0
D. count = var.enable_feature != null ? 1 : 0

Solution

  1. Step 1: Understand the requirement

    The resource should be created only if enable_feature is not null and true.
  2. Step 2: Evaluate each option

    count = var.enable_feature != null ? 1 : 0: count = var.enable_feature != null ? 1 : 0 creates the resource if not null, regardless of true or false.
    count = var.enable_feature != false ? 1 : 0: count = var.enable_feature != false ? 1 : 0 creates for true and null (null != false).
    count = var.enable_feature ? 1 : 0: count = var.enable_feature ? 1 : 0 errors if null (invalid boolean condition).
    count = var.enable_feature != null && var.enable_feature == true ? 1 : 0: count = var.enable_feature != null && var.enable_feature == true ? 1 : 0 checks both conditions explicitly.
  3. Final Answer:

    count = var.enable_feature != null && var.enable_feature == true ? 1 : 0 -> Option A
  4. Quick Check:

    Check null and true explicitly = D [OK]
Hint: Check both not null and true explicitly for safe resource creation [OK]
Common Mistakes:
  • Ignoring null check causing errors
  • Assuming null is false automatically
  • Using only one condition without null check