Bird
Raised Fist0
Terraformcloud~30 mins

Conditional expressions (ternary) in Terraform - Mini Project: Build & Apply

Choose your learning style10 modes available
Using Conditional Expressions (Ternary) in Terraform
📖 Scenario: You are setting up a Terraform configuration to deploy cloud resources. You want to control the size of a virtual machine based on an environment variable. If the environment is 'production', the VM should be large; otherwise, it should be small.
🎯 Goal: Build a Terraform configuration that uses a conditional expression (ternary) to set the VM size based on the environment variable.
📋 What You'll Learn
Create a variable called environment with default value 'development'.
Create a local variable called vm_size that uses a conditional expression to set 'large' if environment is 'production', else 'small'.
Create a resource block for a virtual machine that uses the vm_size local variable.
Ensure the configuration is valid Terraform syntax.
💡 Why This Matters
🌍 Real World
Conditional expressions help automate infrastructure decisions based on environment or other inputs, making deployments flexible and reusable.
💼 Career
Cloud engineers often use Terraform conditionals to manage different deployment environments efficiently.
Progress0 / 4 steps
1
Define the environment variable
Create a Terraform variable called environment with type string and default value "development".
Terraform
Hint

Use the variable block with type and default attributes.

2
Create a local variable vm_size with a conditional expression
Add a locals block and inside it create a local variable called vm_size that uses a conditional expression: if var.environment equals "production", set vm_size to "large", else set it to "small".
Terraform
Hint

Use the syntax condition ? true_value : false_value inside the locals block.

3
Create a resource using the vm_size local variable
Add a resource block named aws_instance with resource name example. Set the instance_type attribute to use the local variable local.vm_size. Use ami attribute with a placeholder value "ami-12345678".
Terraform
Hint

Use the resource block with the correct resource type and name. Reference the local variable with local.vm_size.

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

The provider block tells Terraform which cloud provider to use and the region.

Practice

(1/5)
1. What does this Terraform conditional expression do?
var.is_production ? "prod" : "dev"
easy
A. Returns true or false
B. Always returns "prod"
C. Returns "prod" if var.is_production is true, otherwise "dev"
D. Causes a syntax error

Solution

  1. Step 1: Understand the condition

    The expression checks if var.is_production is true or false.
  2. Step 2: Evaluate the ternary expression

    If true, it returns "prod"; if false, it returns "dev".
  3. Final Answer:

    Returns "prod" if var.is_production is true, otherwise "dev" -> Option C
  4. Quick Check:

    Condition ? true_value : false_value = C [OK]
Hint: Remember: condition ? value_if_true : value_if_false [OK]
Common Mistakes:
  • Thinking it returns a boolean
  • Confusing true and false branches
  • Assuming it always returns the first value
2. Which of these is the correct syntax for a Terraform conditional expression?
easy
A. condition : true_val ? false_val
B. condition ? true_val : false_val
C. condition ? (true_val, false_val)
D. if (condition) then true_val else false_val

Solution

  1. Step 1: Recall Terraform conditional syntax

    Terraform uses the format: condition ? true_val : false_val.
  2. Step 2: Compare options

    Only condition ? true_val : false_val matches this syntax exactly.
  3. Final Answer:

    condition ? true_val : false_val -> Option B
  4. Quick Check:

    Correct ternary syntax = D [OK]
Hint: Look for question mark and colon in correct order [OK]
Common Mistakes:
  • Using if-then-else syntax from other languages
  • Swapping question mark and colon
  • Using commas inside the expression
3. Given this Terraform code:
variable "env" { default = "test" }
output "message" {
  value = var.env == "prod" ? "Deploy to production" : "Deploy to staging"
}

What will be the output value?
medium
A. Error: unknown variable
B. "Deploy to production"
C. "test"
D. "Deploy to staging"

Solution

  1. Step 1: Check variable value

    var.env is set to "test" by default.
  2. Step 2: Evaluate condition

    var.env == "prod" is false, so the false branch "Deploy to staging" is chosen.
  3. Final Answer:

    "Deploy to staging" -> Option D
  4. Quick Check:

    Condition false -> false branch output = A [OK]
Hint: Check variable value before condition evaluation [OK]
Common Mistakes:
  • Assuming default is "prod"
  • Confusing true and false branches
  • Expecting variable value as output
4. Identify the error in this Terraform conditional expression:
output "result" {
  value = var.enabled ? "yes" "no"
}
medium
A. Missing colon ':' between true and false values
B. Variable var.enabled is undefined
C. Quotes around values are incorrect
D. Ternary operator not supported in outputs

Solution

  1. Step 1: Review ternary syntax

    The correct syntax requires a colon ':' between true and false values.
  2. Step 2: Identify missing colon

    The expression has "? \"yes\" \"no\"" missing the ':' separator.
  3. Final Answer:

    Missing colon ':' between true and false values -> Option A
  4. Quick Check:

    Syntax error due to missing ':' = A [OK]
Hint: Check for '?' and ':' pair in ternary expressions [OK]
Common Mistakes:
  • Omitting the colon ':'
  • Misplacing quotes
  • Assuming ternary not allowed in outputs
5. You want to assign a resource name based on environment, but if the environment variable is empty or null, use "default" instead. Which expression correctly does this in Terraform?
var.env == "" || var.env == null ? "default" : var.env
hard
A. var.env == "" || var.env == null ? "default" : var.env
B. var.env == "" && var.env == null ? "default" : var.env
C. var.env ? "default" : var.env
D. var.env == null ? var.env : "default"

Solution

  1. Step 1: Understand the requirement

    If var.env is empty string or null, use "default"; else use var.env.
  2. Step 2: Analyze each option

    var.env == "" || var.env == null ? "default" : var.env checks if var.env is empty or null, then returns "default", else var.env, matching the requirement exactly.
  3. Final Answer:

    var.env == "" || var.env == null ? "default" : var.env -> Option A
  4. Quick Check:

    Check empty or null -> default else env = B [OK]
Hint: Check both empty string and null explicitly in condition [OK]
Common Mistakes:
  • Using && instead of || causing wrong logic
  • Assuming var.env alone checks for empty or null
  • Swapping true and false branches
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