Bird
Raised Fist0
Terraformcloud~20 mins

Terraform.tfvars file - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Terraform.tfvars Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Configuration
intermediate
1:30remaining
Identify the correct value of a variable from a Terraform.tfvars file
Given the following Terraform.tfvars content, what is the value of the variable instance_count after Terraform applies the configuration?
Terraform
instance_count = 3
region = "us-west-2"
instance_type = "t2.micro"
A3
Bus-west-2
Ct2.micro
Dnull
Attempts:
2 left
💡 Hint
Look for the variable name and its assigned value in the tfvars content.
❓ service_behavior
intermediate
1:30remaining
Effect of missing variable in Terraform.tfvars file
If a variable db_password is declared in Terraform but not set in the Terraform.tfvars file or elsewhere, what will happen when you run terraform apply?
Terraform
variable "db_password" {
  type = string
  description = "The database password"
}
ATerraform will automatically generate a random password
BTerraform will prompt for the value during apply
CTerraform will use an empty string as the value
DTerraform will fail with a syntax error
Attempts:
2 left
💡 Hint
Think about how Terraform handles variables without default values and no input.
❓ Architecture
advanced
2:00remaining
Choosing the right Terraform.tfvars file for multiple environments
You have two Terraform.tfvars files: dev.tfvars and prod.tfvars. How do you apply the Terraform configuration for the production environment using the correct tfvars file?
Aterraform apply -var-file=prod.tfvars
Bterraform apply -var prod.tfvars
Cterraform apply --tfvars=prod.tfvars
Dterraform apply -config=prod.tfvars
Attempts:
2 left
💡 Hint
Check the Terraform CLI option to specify a variable file.
❓ security
advanced
2:00remaining
Best practice for sensitive data in Terraform.tfvars files
Which practice is best to keep sensitive data like passwords secure when using Terraform.tfvars files?
AEncrypt the Terraform.tfvars file and commit the encrypted file to version control
BStore sensitive values in Terraform.tfvars and commit the file to version control
CUse environment variables or secret management tools instead of storing sensitive data in Terraform.tfvars
DWrite sensitive data directly in Terraform configuration files
Attempts:
2 left
💡 Hint
Think about how to avoid exposing secrets in code repositories.
🧠 Conceptual
expert
2:30remaining
Understanding variable precedence with Terraform.tfvars
Given a variable region defined with a default in Terraform, set to "us-east-1", and also set in terraform.tfvars as "us-west-2", and finally set via CLI as -var='region=eu-central-1', what value will Terraform use for region?
Terraform
variable "region" {
  type = string
  default = "us-east-1"
}
Aus-east-1
Bus-west-2
CTerraform will raise an error due to conflicting values
Deu-central-1
Attempts:
2 left
💡 Hint
Remember the order of precedence for variable values in Terraform.

Practice

(1/5)
1. What is the main purpose of the terraform.tfvars file in a Terraform project?
easy
A. To store Terraform state files
B. To define the Terraform provider configuration
C. To write the main infrastructure resources
D. To store values for variables separately from the main Terraform code

Solution

  1. Step 1: Understand the role of terraform.tfvars

    This file is used to provide values for variables declared in Terraform configuration files, keeping values separate from code.
  2. Step 2: Differentiate from other files

    Provider configuration and resource definitions are in .tf files, and state files are managed separately, not in terraform.tfvars.
  3. Final Answer:

    To store values for variables separately from the main Terraform code -> Option D
  4. Quick Check:

    Variable values stored separately = D [OK]
Hint: Remember: tfvars holds variable values, not code or state [OK]
Common Mistakes:
  • Confusing tfvars with provider or resource files
  • Thinking tfvars stores state files
  • Assuming tfvars contains resource definitions
2. Which of the following is the correct syntax to assign a list of strings in a terraform.tfvars file?
easy
A. my_list = {"apple", "banana", "cherry"}
B. my_list = ("apple", "banana", "cherry")
C. my_list = ["apple", "banana", "cherry"]
D. my_list = "apple", "banana", "cherry"

Solution

  1. Step 1: Identify list syntax in tfvars

    Terraform uses square brackets [] to define lists in tfvars files.
  2. Step 2: Check each option

    my_list = ["apple", "banana", "cherry"] uses square brackets with quoted strings, which is correct. Options B and C use parentheses or curly braces, which are invalid for lists. my_list = "apple", "banana", "cherry" is missing brackets.
  3. Final Answer:

    my_list = ["apple", "banana", "cherry"] -> Option C
  4. Quick Check:

    Lists use square brackets [] = A [OK]
Hint: Lists always use square brackets [] in tfvars [OK]
Common Mistakes:
  • Using parentheses or curly braces instead of square brackets
  • Forgetting quotes around string items
  • Omitting brackets entirely
3. Given the following terraform.tfvars content:
region = "us-west-2"
instance_count = 3
enable_backup = true
allowed_ips = ["10.0.0.1", "10.0.0.2"]

What is the value and type of enable_backup when accessed in Terraform?
medium
A. String "true"
B. Boolean true
C. Number 1
D. List with one element "true"

Solution

  1. Step 1: Identify the value type in tfvars

    The value enable_backup = true is a boolean literal, not a string or number.
  2. Step 2: Understand Terraform variable typing

    Terraform reads true as a boolean true, not as a string or number.
  3. Final Answer:

    Boolean true -> Option B
  4. Quick Check:

    Boolean literals stay boolean = B [OK]
Hint: True/false without quotes are booleans in tfvars [OK]
Common Mistakes:
  • Treating true as a string by adding quotes
  • Assuming true converts to number 1
  • Confusing boolean with list type
4. You wrote this in your terraform.tfvars file:
max_instances = 5
allowed_ports = [80, 443, 22

When running Terraform, you get a syntax error. What is the most likely cause?
medium
A. Missing closing bracket for the list
B. Using numbers instead of strings in the list
C. Variable names cannot have underscores
D. The equals sign should be a colon

Solution

  1. Step 1: Check list syntax carefully

    The list allowed_ports is opened with [ but the snippet ends after 22 with no closing ].
  2. Step 2: Identify syntax error

    The list lacks a closing bracket, causing the syntax error. Other options are invalid: underscores are allowed, numbers are fine in lists, and = is correct syntax.
  3. Final Answer:

    Missing closing bracket for the list -> Option A
  4. Quick Check:

    Lists must have matching brackets = C [OK]
Hint: Always count opening and closing brackets in lists [OK]
Common Mistakes:
  • Forgetting to close lists with a bracket
  • Thinking numbers must be strings
  • Using colons instead of equals
5. You want to use a map variable in your Terraform configuration to assign different instance types per environment. Which terraform.tfvars content correctly assigns instance types for "dev" and "prod" environments?
hard
A. instance_types = { dev = "t2.micro", prod = "t2.large" }
B. instance_types = ["dev" = "t2.micro", "prod" = "t2.large"]
C. instance_types = (dev: "t2.micro", prod: "t2.large")
D. instance_types = { "dev", "t2.micro", "prod", "t2.large" }

Solution

  1. Step 1: Understand map syntax in tfvars

    Maps use curly braces {} with key = value pairs, keys and values can be strings.
  2. Step 2: Evaluate each option

    instance_types = { dev = "t2.micro", prod = "t2.large" } correctly uses curly braces with keys and values separated by =. instance_types = ["dev" = "t2.micro", "prod" = "t2.large"] uses square brackets and equals inside, which is invalid. instance_types = (dev: "t2.micro", prod: "t2.large") uses parentheses and colons, invalid syntax. instance_types = { "dev", "t2.micro", "prod", "t2.large" } uses curly braces but with commas separating keys and values without equals, invalid.
  3. Final Answer:

    instance_types = { dev = "t2.micro", prod = "t2.large" } -> Option A
  4. Quick Check:

    Maps use curly braces with key = value pairs = A [OK]
Hint: Maps use curly braces with key = value pairs in tfvars [OK]
Common Mistakes:
  • Using square brackets for maps
  • Using colons instead of equals
  • Separating keys and values with commas only