Bird
Raised Fist0
Terraformcloud~5 mins

Variable declaration syntax in Terraform - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What is the basic syntax to declare a variable in Terraform?
Use the variable block with a name and optional attributes like type, default, and description.

Example:
variable "region" {
type = string
default = "us-west-1"
description = "AWS region to deploy resources"
}
Click to reveal answer
beginner
What does the default attribute do in a Terraform variable declaration?
It sets a value that Terraform uses if no other value is provided when running.

This makes the variable optional because it has a fallback value.
Click to reveal answer
intermediate
How do you specify the type of a variable in Terraform?
Use the type attribute inside the variable block.

Common types: string, number, bool, list(string), map(string).

Example:
variable "ports" {
type = list(number)
}
Click to reveal answer
beginner
Can you declare a variable without a default value in Terraform? What happens then?
Yes, you can declare a variable without a default.

Terraform will require you to provide a value when you run your configuration, or it will show an error.
Click to reveal answer
beginner
How do you add a description to a Terraform variable and why is it useful?
Use the description attribute inside the variable block.

This helps others (and yourself) understand what the variable is for.

Example:
variable "env" {
type = string
description = "The environment to deploy to, e.g., dev or prod"
}
Click to reveal answer
Which block is used to declare a variable in Terraform?
Avariable
Bresource
Coutput
Dprovider
What happens if you declare a variable without a default value and do not provide a value when running Terraform?
ATerraform uses a random value
BTerraform uses an empty string
CTerraform throws an error and stops
DTerraform ignores the variable
How do you specify that a variable should be a list of strings?
Atype = string[]
Btype = list(string)
Ctype = array
Dtype = map(string)
Which attribute is used to provide a fallback value for a variable?
Avalue
Binitial
Cfallback
Ddefault
Why is adding a description to a variable useful?
AIt documents the variable's purpose
BIt changes the variable's value
CIt makes the variable required
DIt encrypts the variable
Explain how to declare a variable in Terraform including type, default, and description.
Think about the structure of a variable block and what each attribute does.
You got /4 concepts.
    What happens if you declare a variable without a default and do not provide a value when running Terraform?
    Consider Terraform's behavior when required inputs are missing.
    You got /2 concepts.

      Practice

      (1/5)
      1. What is the purpose of declaring a variable in Terraform?
      easy
      A. To write comments in the Terraform file
      B. To create a new resource in the cloud
      C. To define the output of a Terraform plan
      D. To store values that can be reused and customized in the configuration

      Solution

      1. Step 1: Understand variable role in Terraform

        Variables hold values that can be changed without editing the main code, making it flexible.
      2. Step 2: Compare with other options

        Creating resources, defining outputs, or comments are different Terraform features, not variable declaration.
      3. Final Answer:

        To store values that can be reused and customized in the configuration -> Option D
      4. Quick Check:

        Variables = reusable values [OK]
      Hint: Variables hold reusable values to customize code easily [OK]
      Common Mistakes:
      • Confusing variables with resources
      • Thinking variables define outputs
      • Using variables as comments
      2. Which of the following is the correct syntax to declare a string variable named region with a default value of us-west-1 in Terraform?
      easy
      A. variable region = "us-west-1"
      B. var region = "us-west-1"
      C. variable "region" { type = string default = "us-west-1" }
      D. variable "region" { default = us-west-1 type = string }

      Solution

      1. Step 1: Recall Terraform variable declaration syntax

        Variables use the block format: variable "name" { type = TYPE default = VALUE } with quotes around strings.
      2. Step 2: Check each option

        variable "region" { type = string default = "us-west-1" } matches correct syntax with proper quotes and order. Options B and C are invalid syntax. variable "region" { default = us-west-1 type = string } misses quotes around default value.
      3. Final Answer:

        variable "region" { type = string default = "us-west-1" } -> Option C
      4. Quick Check:

        Correct block syntax with quotes [OK]
      Hint: Use variable block with quotes and type before default [OK]
      Common Mistakes:
      • Missing quotes around string values
      • Using assignment (=) outside variable block
      • Incorrect order or missing type keyword
      3. Given this variable declaration in Terraform:
      variable "instance_count" {
        type    = number
        default = 3
      }

      What will be the value of var.instance_count if no override is provided?
      medium
      A. 3
      B. null
      C. 0
      D. Error: variable not set

      Solution

      1. Step 1: Identify default value in variable block

        The variable instance_count has a default value set to 3.
      2. Step 2: Understand behavior when no override is given

        If no value is provided during plan or apply, Terraform uses the default value.
      3. Final Answer:

        3 -> Option A
      4. Quick Check:

        Default value used when no override = 3 [OK]
      Hint: Default value applies if no input given [OK]
      Common Mistakes:
      • Assuming default is zero if not set
      • Expecting error without override
      • Confusing null with default
      4. Identify the error in this Terraform variable declaration:
      variable "enable_logging" {
        type = bool
        default = "true"
      }
      medium
      A. The default value should not be in quotes for bool type
      B. The type should be string, not bool
      C. The variable name is invalid
      D. Missing description field

      Solution

      1. Step 1: Check type and default value compatibility

        The variable type is bool, so the default must be a boolean value, not a string.
      2. Step 2: Identify the error in default value

        The default is "true" (a string), but it should be true (boolean without quotes).
      3. Final Answer:

        The default value should not be in quotes for bool type -> Option A
      4. Quick Check:

        Boolean default must be unquoted true/false [OK]
      Hint: Boolean defaults must be unquoted true or false [OK]
      Common Mistakes:
      • Putting boolean default in quotes
      • Confusing string and bool types
      • Ignoring type mismatch errors
      5. You want to declare a variable tags in Terraform that holds a map of strings with a default value of {"env" = "prod", "team" = "devops"}. Which is the correct declaration?
      hard
      A. variable "tags" { type = map(string) default = { env = prod, team = devops } }
      B. variable "tags" { type = map(string) default = { "env" = "prod", "team" = "devops" } }
      C. variable "tags" { type = map default = { "env" = "prod", "team" = "devops" } }
      D. variable "tags" { type = map(string) default = ["env" = "prod", "team" = "devops"] }

      Solution

      1. Step 1: Understand map type syntax in Terraform

        Maps of strings use type = map(string) and string values must be quoted.
      2. Step 2: Check default value format

        Default must be a map with quoted string values inside curly braces, not square brackets.
      3. Step 3: Evaluate options

        variable "tags" { type = map(string) default = { "env" = "prod", "team" = "devops" } } correctly uses type = map(string) and default with quoted values. variable "tags" { type = map(string) default = { env = prod, team = devops } } misses quotes on values, variable "tags" { type = map default = { "env" = "prod", "team" = "devops" } } misses string type, variable "tags" { type = map(string) default = ["env" = "prod", "team" = "devops"] } uses square brackets (list) incorrectly.
      4. Final Answer:

        variable "tags" { type = map(string) default = { "env" = "prod", "team" = "devops" } } -> Option B
      5. Quick Check:

        Map(string) with quoted string values in braces [OK]
      Hint: Use map(string) type and quoted string values in braces [OK]
      Common Mistakes:
      • Missing quotes on map values
      • Using map without specifying string type
      • Using list syntax instead of map