Bird
Raised Fist0
Terraformcloud~5 mins

Module structure and conventions in Terraform - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Terraform module?
A Terraform module is a folder with Terraform files that work together to create a part of your infrastructure. It helps organize and reuse code.
Click to reveal answer
beginner
Name the four common files in a Terraform module.
main.tf (resources), variables.tf (inputs), outputs.tf (outputs), and README.md (documentation).
Click to reveal answer
beginner
Why should you use variables in a Terraform module?
Variables let you customize the module without changing its code. They make modules flexible and reusable.
Click to reveal answer
beginner
What is the purpose of outputs.tf in a Terraform module?
outputs.tf defines values that the module sends back after deployment, so other modules or users can use them.
Click to reveal answer
intermediate
How do you call a module inside another Terraform configuration?
Use the 'module' block with a source path to the module folder and provide required variables.
Click to reveal answer
Which file in a Terraform module usually contains resource definitions?
Amain.tf
Bvariables.tf
Coutputs.tf
DREADME.md
What is the main benefit of using modules in Terraform?
ATo replace variables
BTo speed up Terraform installation
CTo organize and reuse infrastructure code
DTo store secrets
Where do you define input variables for a Terraform module?
Avariables.tf
Boutputs.tf
Cmain.tf
Dterraform.tfstate
How do you specify the source of a module when calling it?
ABy placing the module in the root folder
BBy naming the module folder 'source'
CBy setting an environment variable
DUsing the 'source' argument inside the module block
What file should you add to explain how to use a Terraform module?
Avariables.tf
BREADME.md
Coutputs.tf
Dmain.tf
Describe the typical structure of a Terraform module and the purpose of each main file.
Think about how you organize code to make it reusable and clear.
You got /4 concepts.
    Explain why using modules and variables in Terraform helps manage infrastructure better.
    Consider how you would build something once and use it many times with different settings.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using a Terraform module?
      easy
      A. To group and reuse cloud resource configurations
      B. To write scripts for cloud providers
      C. To store cloud provider credentials
      D. To monitor cloud resource usage

      Solution

      1. Step 1: Understand module purpose

        Terraform modules are designed to group related cloud resources together for reuse and better organization.
      2. Step 2: Compare options

        Only To group and reuse cloud resource configurations correctly describes this purpose. Other options describe unrelated tasks.
      3. Final Answer:

        To group and reuse cloud resource configurations -> Option A
      4. Quick Check:

        Module purpose = reuse and grouping [OK]
      Hint: Modules group resources for reuse and clarity [OK]
      Common Mistakes:
      • Confusing modules with scripts
      • Thinking modules store credentials
      • Assuming modules monitor usage
      2. Which of the following is the correct way to call a module named network located in a folder modules/network?
      easy
      A. module "network" { source = "modules/network" }
      B. resource "network" { source = "modules/network" }
      C. module network { path = "modules/network" }
      D. resource "network" { path = "modules/network" }

      Solution

      1. Step 1: Identify module call syntax

        Terraform uses module "name" { source = "path" } to call modules.
      2. Step 2: Check options

        Only module "network" { source = "modules/network" } uses correct module block and source attribute.
      3. Final Answer:

        module "network" { source = "modules/network" } -> Option A
      4. Quick Check:

        Module call uses module block and source [OK]
      Hint: Use module block with source attribute for calling modules [OK]
      Common Mistakes:
      • Using resource instead of module
      • Using path instead of source
      • Omitting quotes around module name
      3. Given this module folder structure:
      modules/
        webserver/
          main.tf
          variables.tf
          outputs.tf
      
      What is the purpose of the variables.tf file inside the module?
      medium
      A. To declare output values from the module
      B. To define input variables for the module
      C. To write the main resource definitions
      D. To store provider configurations

      Solution

      1. Step 1: Understand file roles in module

        In Terraform modules, variables.tf defines input variables the module accepts.
      2. Step 2: Match options

        To define input variables for the module correctly states this. Outputs are in outputs.tf, main resources in main.tf, and provider configs are outside modules.
      3. Final Answer:

        To define input variables for the module -> Option B
      4. Quick Check:

        variables.tf = input variables [OK]
      Hint: variables.tf defines inputs; outputs.tf defines outputs [OK]
      Common Mistakes:
      • Confusing variables.tf with outputs.tf
      • Putting resource code in variables.tf
      • Adding provider config inside module
      4. You wrote this module call:
      module "db" {
        source = "modules/database"
        db_name = "prod"
      }
      But Terraform shows an error: "Unsupported argument: db_name". What is the likely cause?
      medium
      A. The source path is incorrect
      B. Module names cannot contain underscores
      C. The module does not declare an input variable named db_name
      D. db_name should be declared inside main.tf

      Solution

      1. Step 1: Understand error meaning

        "Unsupported argument" means the module does not expect the given input variable.
      2. Step 2: Check module inputs

        If db_name is not declared as a variable in the module's variables.tf, Terraform rejects it.
      3. Final Answer:

        The module does not declare an input variable named db_name -> Option C
      4. Quick Check:

        Input variables must be declared to be used [OK]
      Hint: Declare input variables in module to avoid unsupported argument errors [OK]
      Common Mistakes:
      • Assuming source path causes unsupported argument
      • Thinking module names restrict underscores
      • Trying to declare inputs inside main.tf
      5. You want to create a reusable module for deploying a virtual machine with optional tags. Which structure correctly supports optional tags with a default empty map?
      hard
      A. In variables.tf: variable "tags" { type = list(string) }
      B. In main.tf: variable "tags" { default = null }
      C. In outputs.tf: output "tags" { value = var.tags }
      D. In variables.tf: variable "tags" { type = map(string) default = {} }

      Solution

      1. Step 1: Define optional input variable

        To make tags optional, define a variable with type map(string) and default empty map {}.
      2. Step 2: Evaluate options

        In variables.tf: variable "tags" { type = map(string) default = {} } correctly defines this in variables.tf. In main.tf: variable "tags" { default = null } lacks type and uses null default. In outputs.tf: output "tags" { value = var.tags } is output, not input. In variables.tf: variable "tags" { type = list(string) } uses list instead of map.
      3. Final Answer:

        In variables.tf: variable "tags" { type = map(string) default = {} } -> Option D
      4. Quick Check:

        Optional map variable needs default empty map [OK]
      Hint: Use map(string) with default {} for optional tags [OK]
      Common Mistakes:
      • Using list instead of map for tags
      • Not setting a default value
      • Declaring variables in outputs.tf
      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