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
Input Variable Precedence Order in Terraform
📖 Scenario: You are setting up a Terraform configuration to deploy a simple cloud resource. You want to understand how Terraform decides which input variable value to use when multiple sources provide values.
🎯 Goal: Build a Terraform configuration that defines an input variable and demonstrates the precedence order of variable values from different sources.
📋 What You'll Learn
Define a Terraform variable with a default value
Override the variable value using a terraform.tfvars file
Override the variable value using an environment variable
Use the variable in a resource or output to confirm the final value
💡 Why This Matters
🌍 Real World
Understanding variable precedence helps avoid configuration errors and unexpected deployments in real cloud infrastructure projects.
💼 Career
Cloud engineers and DevOps professionals frequently manage Terraform variables to customize deployments across environments.
Progress0 / 4 steps
1
Define a Terraform variable with a default value
Create a Terraform variable called region with the default value us-west-1 inside a file named variables.tf.
Terraform
Hint
Use the variable block with default set to "us-west-1".
2
Override the variable value using a terraform.tfvars file
Create a file named terraform.tfvars and set the variable region to us-east-1 inside it.
Terraform
Hint
In terraform.tfvars, assign region = "us-east-1".
3
Override the variable value using an environment variable
Set the environment variable TF_VAR_region to eu-central-1 to override the variable region value.
Terraform
Hint
Use your shell to set TF_VAR_region to "eu-central-1" before running Terraform.
4
Use the variable in an output to confirm the final value
Create an output called final_region that outputs the value of the variable region.
Terraform
Hint
Use an output block with value = var.region.
Practice
(1/5)
1. In Terraform, which source has the highest priority when setting the value of an input variable?
easy
A. Terraform variable definition files (.tfvars)
B. Environment variables
C. Command-line flags (CLI flags)
D. Default values in the variable block
Solution
Step 1: Understand Terraform variable precedence
Terraform uses a specific order to decide variable values: CLI flags first, then environment variables, then .tfvars files, and lastly default values.
Step 2: Identify the highest priority source
Since CLI flags are checked first, they override all other sources.
2. Which of the following is the correct way to pass a variable value via CLI flag when running Terraform?
easy
A. terraform apply -var-file=region=us-west-1
B. terraform apply --set region=us-west-1
C. terraform apply -env region=us-west-1
D. terraform apply -var 'region=us-west-1'
Solution
Step 1: Recall CLI flag syntax for variables
The correct syntax to pass a variable via CLI is using -var followed by 'key=value'.
Step 2: Match the correct option
terraform apply -var 'region=us-west-1' uses -var 'region=us-west-1', which is the correct syntax.
Final Answer:
terraform apply -var 'region=us-west-1' -> Option D
Quick Check:
Use -var 'key=value' for CLI variable input [OK]
Hint: Use -var 'key=value' to pass variables via CLI [OK]
Common Mistakes:
Using --set instead of -var
Confusing environment variable syntax with CLI flags
Using -var-file incorrectly for single variables
3. Given the following Terraform variable declaration and usage: <pre>variable "env" {
default = "dev"
}
# Command run:
# terraform apply -var 'env=prod'
# Environment variable:
# TF_VAR_env=staging
# tfvars file content:
# env = "qa"
What value will Terraform use for the variable env during this apply?
medium
A. "prod" (from CLI flag)
B. "dev" (default value)
C. "staging" (from environment variable)
D. "qa" (from tfvars file)
Solution
Step 1: List variable sources and their precedence
Terraform checks CLI flags first, then environment variables, then tfvars files, then defaults.
Step 2: Identify the highest priority value provided
CLI flag sets env=prod, which overrides environment variable (staging), tfvars (qa), and default (dev).
Final Answer:
"prod" (from CLI flag) -> Option A
Quick Check:
CLI flag value "prod" is used [OK]
Hint: CLI flags beat env vars and tfvars files [OK]
Common Mistakes:
Choosing environment variable over CLI flag
Picking tfvars value over environment variable
Assuming default value is used when others exist
4. You run Terraform with the environment variable TF_VAR_region=us-east-1 set, but your configuration uses a region variable with a default value of us-west-2. You also have a terraform.tfvars file setting region = "eu-central-1". However, Terraform still uses us-west-2. What is the most likely cause?
medium
A. You passed a CLI flag overriding all other values
B. The environment variable name is incorrect; it should be TF_REGION
C. The variable is marked as sensitive and ignores external values
D. The terraform.tfvars file is not loaded automatically
Solution
Step 1: Check environment variable naming
TF_VAR_region is correct naming for environment variable to set variable 'region'.
Step 2: Recall precedence order
CLI flags > env vars > tfvars > defaults. Env var us-east-1 should override tfvars and default.
Step 3: Identify cause of default value
To override the env var and use default us-west-2, a CLI flag like -var 'region=us-west-2' must have been passed.
Final Answer:
You passed a CLI flag overriding all other values -> Option A
5. You want to ensure a Terraform variable instance_type always uses the value from a .tfvars file, ignoring any CLI flags or environment variables. Which approach correctly enforces this behavior?
hard
A. Remove default value and only set instance_type in the .tfvars file; avoid passing CLI flags or env vars