Bird
Raised Fist0
Terraformcloud~5 mins

Module inputs (variables) in Terraform - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a module input variable in Terraform?
A module input variable is a way to pass values into a Terraform module so it can be customized when used. Think of it like giving a recipe different ingredients to change the final dish.
Click to reveal answer
beginner
How do you define a variable inside a Terraform module?
You define a variable using the variable block with a name and optionally a type and default value. For example:
variable "region" {
  type = string
  default = "us-west-1"
}
Click to reveal answer
beginner
How do you pass a value to a module input variable when calling a module?
You pass values by specifying the variable name and value inside the module block. For example:
module "my_module" {
  source = "./modules/example"
  region = "us-east-1"
}
Click to reveal answer
intermediate
What happens if you do not provide a value for a module input variable that has no default?
Terraform will show an error and stop because it needs a value to use. It's like missing an important ingredient in a recipe.
Click to reveal answer
beginner
Why is it good practice to use variables in Terraform modules?
Variables make modules reusable and flexible. You can use the same module with different settings without changing the module code, just by passing different inputs.
Click to reveal answer
How do you define a string variable named "env" with a default value "dev" in a Terraform module?
Avariable "env" { type = string default = "dev" }
Binput "env" = "dev"
Cvar env = "dev"
Dmodule "env" { default = "dev" }
What is the purpose of module input variables in Terraform?
ATo define resources inside modules
BTo store output values from modules
CTo pass values into modules to customize their behavior
DTo create new modules automatically
If a module variable has no default and you don't provide a value, what happens?
ATerraform throws an error and stops
BTerraform assigns an empty string
CTerraform uses a null value
DTerraform ignores the variable
How do you pass a value to a module variable named "region" when calling the module?
Amodule.region = "us-east-1"
Bregion = "us-east-1" inside the module block
Cset region "us-east-1"
Dvariable "region" = "us-east-1"
Why should you use variables in Terraform modules?
ATo define provider settings
BTo hardcode values inside modules
CTo create output values
DTo make modules reusable with different inputs
Explain how to create and use input variables in a Terraform module.
Think about how you give a module different settings when you use it.
You got /4 concepts.
    Describe what happens if a required module input variable is not provided a value.
    What if you forget an important ingredient in a recipe?
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using variables in a Terraform module?
      easy
      A. To customize module behavior without changing its code
      B. To store sensitive data only
      C. To define output values from the module
      D. To create resources automatically

      Solution

      1. Step 1: Understand module customization

        Variables allow users to provide input values to modules, changing how they behave without editing the module code itself.
      2. Step 2: Differentiate variables from other features

        Variables are not for outputs or automatic resource creation; they are inputs to customize modules.
      3. Final Answer:

        To customize module behavior without changing its code -> Option A
      4. Quick Check:

        Module inputs = customization [OK]
      Hint: Variables customize modules without code edits [OK]
      Common Mistakes:
      • Confusing variables with outputs
      • Thinking variables create resources
      • Assuming variables only store secrets
      2. Which of the following is the correct syntax to declare a string variable named region with a default value of us-west-1?
      easy
      A. variable "region" = "us-west-1"
      B. variable region { type = "string" default = us-west-1 }
      C. variable "region" { default = us-west-1 type = string }
      D. variable "region" { type = string default = "us-west-1" }

      Solution

      1. Step 1: Check variable block syntax

        Terraform variables use the syntax: variable "name" { type = string default = "value" } with quotes around strings.
      2. Step 2: Validate variable "region" { type = string default = "us-west-1" }

        correctly uses quotes for the variable name and default string value, and sets type properly.
      3. Final Answer:

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

        Correct variable block syntax = variable "region" { type = string default = "us-west-1" } [OK]
      Hint: Use quotes for names and string defaults in variable blocks [OK]
      Common Mistakes:
      • Missing quotes around strings
      • Wrong order of attributes
      • Assigning variable directly without block
      3. Given this module variable declaration:
      variable "instance_count" {
        type    = number
        default = 2
      }

      And this usage inside the module:
      resource "aws_instance" "example" {
        count = var.instance_count
        ami           = "ami-123456"
        instance_type = "t2.micro"
      }

      What will happen if the module is called without specifying instance_count?
      medium
      A. Only one instance will be created
      B. Two AWS instances will be created
      C. An error occurs because instance_count is missing
      D. No instances will be created

      Solution

      1. Step 1: Understand default variable behavior

        If a variable has a default value and is not overridden, Terraform uses the default.
      2. Step 2: Apply default to resource count

        The count argument uses var.instance_count, which defaults to 2, so two instances are created.
      3. Final Answer:

        Two AWS instances will be created -> Option B
      4. Quick Check:

        Default variable value used = 2 instances [OK]
      Hint: Default variable values apply if no input given [OK]
      Common Mistakes:
      • Assuming missing variable causes error
      • Thinking default is ignored
      • Confusing count with instance_type
      4. You have this variable declaration inside a module:
      variable "env" {
        type = string
      }

      When calling the module, you forget to provide a value for env. What will happen?
      medium
      A. Terraform will throw an error about missing required variable
      B. Terraform will use an empty string as default
      C. Terraform will assign null automatically
      D. Terraform will use the string "env" as default

      Solution

      1. Step 1: Check variable declaration for default

        The variable env has no default value, so it is required.
      2. Step 2: Understand Terraform behavior on missing required variables

        If a required variable is not provided, Terraform throws an error and stops.
      3. Final Answer:

        Terraform will throw an error about missing required variable -> Option A
      4. Quick Check:

        Required variable missing = error [OK]
      Hint: No default means variable is required [OK]
      Common Mistakes:
      • Assuming empty string or null is automatic default
      • Thinking Terraform guesses a value
      • Confusing variable name with default
      5. You want to create a reusable module that accepts a list of subnet IDs as input. Which variable declaration correctly enforces that the input must be a list of strings and has no default value?
      hard
      A. variable "subnet_ids" { type = string default = [] }
      B. variable "subnet_ids" { type = list number default = ["subnet-123"] }
      C. variable "subnet_ids" { type = list(string) }
      D. variable "subnet_ids" { type = list(string) default = null }

      Solution

      1. Step 1: Identify correct type syntax for list of strings

        Terraform uses list(string) to specify a list where each item is a string.
      2. Step 2: Check default value presence

        No default means the variable is required. variable "subnet_ids" { type = list(string) } has no default, so input must be provided.
      3. Final Answer:

        variable "subnet_ids" { type = list(string) } -> Option C
      4. Quick Check:

        List of strings required, no default = variable "subnet_ids" { type = list(string) } [OK]
      Hint: Use type = list(string) and omit default to require input [OK]
      Common Mistakes:
      • Using wrong type like string instead of list(string)
      • Providing default empty list when input should be required
      • Using invalid syntax for type or default
      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