Bird
Raised Fist0
Terraformcloud~20 mins

Terraform Registry modules - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Terraform Registry Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ service_behavior
intermediate
2:00remaining
How does Terraform Registry handle module versioning?

When you specify a module from the Terraform Registry with a version constraint, what happens if a newer version that satisfies the constraint is released?

ATerraform automatically upgrades to the newest version that fits the constraint on the next terraform init.
BTerraform always uses the exact version specified and ignores newer versions.
CTerraform downloads all versions that satisfy the constraint and uses the oldest one.
DTerraform prompts the user to manually select a version each time.
Attempts:
2 left
💡 Hint

Think about how version constraints work in package managers.

❓ Configuration
intermediate
2:00remaining
Correct source syntax for a Terraform Registry module

Which of the following is the correct way to specify a module source from the Terraform Registry for the module networking/vpc/aws version 3.2.0?

Asource = "terraform-registry/networking/vpc/aws" version = "3.2.0"
Bsource = "registry.terraform.io/networking/vpc/aws" version = "3.2.0"
Csource = "networking/vpc/aws" version = "3.2.0"
Dsource = "terraform.io/modules/networking/vpc/aws" version = "3.2.0"
Attempts:
2 left
💡 Hint

Terraform Registry modules use a short source address format.

❓ Architecture
advanced
2:00remaining
Impact of using multiple versions of the same module in one Terraform configuration

You include two modules from the Terraform Registry in your configuration, both named database/mysql/aws, but with different versions: 1.0.0 and 2.0.0. What is the expected behavior during terraform plan and apply?

ATerraform throws an error because multiple versions of the same module are not allowed.
BTerraform uses only the higher version and ignores the lower version module.
CTerraform merges both versions into one module, causing resource conflicts.
DTerraform treats them as separate modules and manages resources independently without conflict.
Attempts:
2 left
💡 Hint

Consider how Terraform identifies modules by their source and version.

❓ security
advanced
2:00remaining
Security best practice when using Terraform Registry modules

What is the best security practice when using modules from the Terraform Registry in your infrastructure code?

AAlways pin the module version to a specific release to avoid unexpected changes.
BDisable module version checks to speed up terraform init.
CModify the module source code directly in the Terraform Registry to add security fixes.
DUse the latest version without pinning to get all security updates automatically.
Attempts:
2 left
💡 Hint

Think about stability and predictability in infrastructure code.

🧠 Conceptual
expert
2:00remaining
How Terraform Registry modules handle provider dependencies

If a Terraform Registry module declares a provider dependency (for example, AWS), how does Terraform handle the provider configuration when you use that module in your root configuration?

AThe module downloads and configures its own provider independently of the root configuration.
BTerraform requires the root configuration to provide the provider configuration; the module uses that configuration automatically.
CTerraform duplicates the provider configuration inside the module, causing conflicts.
DTerraform ignores provider dependencies declared in modules.
Attempts:
2 left
💡 Hint

Think about how Terraform shares providers between root and modules.

Practice

(1/5)
1. What is the main purpose of using Terraform Registry modules in your infrastructure code?
easy
A. To reuse tested infrastructure code easily
B. To write all infrastructure code from scratch
C. To avoid using any external code
D. To manually configure cloud resources without code

Solution

  1. Step 1: Understand Terraform Registry modules

    Terraform Registry modules are pre-built, reusable pieces of infrastructure code shared publicly or privately.
  2. Step 2: Identify the main benefit

    Using these modules helps you avoid rewriting code and ensures you use tested, reliable configurations.
  3. Final Answer:

    To reuse tested infrastructure code easily -> Option A
  4. Quick Check:

    Terraform Registry modules = reuse code easily [OK]
Hint: Modules = reuse tested code, save time [OK]
Common Mistakes:
  • Thinking modules require writing all code manually
  • Believing modules prevent code reuse
  • Confusing modules with manual resource setup
2. Which of the following is the correct syntax to include a Terraform Registry module in your configuration?
easy
A. module "example" { source = "terraform-aws-modules/vpc/aws" version = "3.0.0" }
B. resource "example" { source = "terraform-aws-modules/vpc/aws" version = "3.0.0" }
C. module "example" (source = "terraform-aws-modules/vpc/aws", version = "3.0.0")
D. include "example" { source = "terraform-aws-modules/vpc/aws" version = "3.0.0" }

Solution

  1. Step 1: Recognize the correct block type

    Terraform modules are included using the module block, not resource or include.
  2. Step 2: Check syntax for module block

    The correct syntax uses curly braces with key-value pairs for source and version.
  3. Final Answer:

    module "example" { source = "terraform-aws-modules/vpc/aws" version = "3.0.0" } -> Option A
  4. Quick Check:

    Use module block with source and version [OK]
Hint: Use module block with source and version keys [OK]
Common Mistakes:
  • Using resource block instead of module
  • Using parentheses instead of braces
  • Using include keyword which is invalid
3. Given this Terraform module block:
module "network" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "3.0.0"
  name    = "my-vpc"
  cidr    = "10.0.0.0/16"
}

What will happen when you run terraform init?
medium
A. Terraform downloads the latest version ignoring the specified version
B. Terraform throws an error because version is missing
C. Terraform downloads version 3.0.0 of the VPC module from the registry
D. Terraform ignores the module and continues without it

Solution

  1. Step 1: Understand terraform init behavior with modules

    When terraform init runs, it downloads modules specified with source and version.
  2. Step 2: Check version usage

    The version is specified as "3.0.0", so Terraform downloads exactly that version from the registry.
  3. Final Answer:

    Terraform downloads version 3.0.0 of the VPC module from the registry -> Option C
  4. Quick Check:

    terraform init downloads specified module version [OK]
Hint: terraform init downloads modules with specified version [OK]
Common Mistakes:
  • Assuming version is optional and causes error
  • Thinking terraform ignores version and downloads latest
  • Believing terraform skips modules on init
4. You wrote this module block:
module "db" {
  source = "terraform-aws-modules/rds/aws"
  version = "1.0.0"
  engine = "mysql"
}

When running terraform init, you get an error: Module version 1.0.0 not found. What is the likely cause?
medium
A. The source URL is incorrect and does not point to a module
B. The specified version 1.0.0 does not exist in the Terraform Registry for this module
C. The engine parameter is invalid and causes version error
D. Terraform init requires internet disabled to find modules

Solution

  1. Step 1: Analyze the error message

    The error says version 1.0.0 not found, meaning Terraform cannot find that version in the registry for the module.
  2. Step 2: Check common causes

    Either the version is mistyped or does not exist. The source looks correct, and engine parameter does not affect version lookup.
  3. Final Answer:

    The specified version 1.0.0 does not exist in the Terraform Registry for this module -> Option B
  4. Quick Check:

    Version not found error = wrong or missing version [OK]
Hint: Check module version exists in registry before using [OK]
Common Mistakes:
  • Blaming source URL when it is correct
  • Thinking parameters cause version errors
  • Assuming terraform init works offline for modules
5. You want to use a Terraform Registry module but customize it with your own settings. Which approach is best practice?
hard
A. Use the module without specifying version to always get latest
B. Copy the module code into your project and edit it directly
C. Ignore the module and write all resources manually
D. Use the module with source and version, then override variables in your configuration

Solution

  1. Step 1: Understand module customization

    Terraform modules accept input variables to customize behavior without changing module code.
  2. Step 2: Identify best practice

    Using source and version ensures stable code, and overriding variables lets you customize safely.
  3. Final Answer:

    Use the module with source and version, then override variables in your configuration -> Option D
  4. Quick Check:

    Customize modules via variables, keep source and version fixed [OK]
Hint: Override variables, don't copy module code [OK]
Common Mistakes:
  • Copying module code causes maintenance issues
  • Not specifying version risks unexpected changes
  • Ignoring modules wastes time and effort
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