Bird
Raised Fist0
Terraformcloud~20 mins

Module registry for organization in Terraform - 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
🎖️
Module Registry Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Architecture
intermediate
2:00remaining
Understanding Module Registry Structure

You want to organize your Terraform modules in a private module registry for your organization. Which naming convention correctly identifies a module source in the registry?

A"org-name/app1/vpc"
B"app1/network/vpc"
C"registry.terraform.io/org-name/app1/vpc"
D"app1/vpc"
Attempts:
2 left
💡 Hint

Think about how Terraform identifies modules by organization, name, and provider.

Configuration
intermediate
2:00remaining
Referencing a Module from Organization Registry

Given a module published in your organization's private registry as org-name/app1/vpc, which Terraform block correctly references this module?

A
module "vpc" {
  source = "org-name/app1/vpc"
  version = "1.0.0"
}
B
module "vpc" {
  source = "terraform.io/org-name/app1/vpc"
  version = "1.0.0"
}
C
module "vpc" {
  source = "app1/vpc"
  version = "1.0.0"
}
D
module "vpc" {
  source = "registry.terraform.io/org-name/app1/vpc"
  version = "1.0.0"
}
Attempts:
2 left
💡 Hint

Check the exact source format for modules in Terraform registries.

security
advanced
2:00remaining
Securing Access to Private Module Registry

Your organization uses a private Terraform module registry. What is the best practice to securely authenticate Terraform CLI to access private modules?

AEmbed the username and password directly in the module source URL.
BStore the registry credentials in plain text in the Terraform configuration file.
CUse environment variables or CLI login commands to authenticate Terraform CLI securely.
DDisable authentication and allow anonymous access to the private registry.
Attempts:
2 left
💡 Hint

Think about secure ways to handle credentials without exposing them in code.

service_behavior
advanced
2:00remaining
Module Versioning Behavior in Registry

If you specify version = ">= 1.0.0, < 2.0.0" in your module block, what version of the module will Terraform select from the registry?

AThe earliest version that matches the range.
BThe latest available version that is at least 1.0.0 but less than 2.0.0.
CThe exact version 1.0.0 only.
DAny version regardless of the specified range.
Attempts:
2 left
💡 Hint

Consider how Terraform handles version constraints and selects module versions.

Best Practice
expert
3:00remaining
Organizing Modules for Reusability and Maintenance

Your organization has many Terraform modules for different projects. Which approach best supports maintainability and reuse in a private module registry?

AUse local paths for modules instead of the registry to simplify access.
BPublish all modules as a single large module to reduce the number of modules to manage.
CDuplicate modules for each project to avoid dependency conflicts.
DCreate small, focused modules with clear responsibilities and version them independently.
Attempts:
2 left
💡 Hint

Think about modular design principles and version control.

Practice

(1/5)
1. What is the main purpose of using a module registry in Terraform for an organization?
easy
A. To share and reuse Terraform modules easily within the organization
B. To store Terraform state files securely
C. To automatically deploy infrastructure without configuration
D. To monitor cloud resource usage in real-time

Solution

  1. Step 1: Understand what a module registry does

    A module registry is a place where Terraform modules are stored and shared.
  2. Step 2: Identify the organizational benefit

    It allows teams to reuse modules easily, promoting consistency and saving time.
  3. Final Answer:

    To share and reuse Terraform modules easily within the organization -> Option A
  4. Quick Check:

    Module registry = share & reuse modules [OK]
Hint: Module registry = easy sharing of modules [OK]
Common Mistakes:
  • Confusing module registry with state storage
  • Thinking it automates deployment without config
  • Mixing it up with monitoring tools
2. Which of the following is the correct syntax to use a module from your organization's Terraform registry?
easy
A. source = "github.com/org-name/module-name"
B. source = "app.terraform.io/org-name/module-name/aws"
C. source = "terraform.io/module-name"
D. source = "registry.terraform.io/module-name"

Solution

  1. Step 1: Recall the format for organization module source

    The source for an organization's registry uses the format: app.terraform.io/org-name/module-name/provider.
  2. Step 2: Match the correct option

    source = "app.terraform.io/org-name/module-name/aws" matches this format exactly, including the organization and module name.
  3. Final Answer:

    source = "app.terraform.io/org-name/module-name/aws" -> Option B
  4. Quick Check:

    Org registry source format = app.terraform.io/org-name/module-name/provider [OK]
Hint: Org registry source starts with app.terraform.io [OK]
Common Mistakes:
  • Using GitHub URL instead of Terraform registry format
  • Omitting the provider name at the end
  • Using registry.terraform.io without org prefix
3. Given this Terraform module block:
module "vpc" {
  source  = "app.terraform.io/myorg/vpc/aws"
  version = "1.2.0"
}

What happens if version "1.2.0" is not available in the registry?
medium
A. Terraform will use the latest available version automatically
B. Terraform will ignore the version and use the source code locally
C. Terraform will download an empty module
D. Terraform will throw an error and stop the plan or apply

Solution

  1. Step 1: Understand versioning in Terraform modules

    Terraform requires the specified version to exist in the registry to ensure consistent infrastructure.
  2. Step 2: Behavior when version is missing

    If the version is not found, Terraform stops and shows an error to prevent unexpected changes.
  3. Final Answer:

    Terraform will throw an error and stop the plan or apply -> Option D
  4. Quick Check:

    Missing version causes error, no fallback [OK]
Hint: Missing version = error, no automatic fallback [OK]
Common Mistakes:
  • Assuming Terraform uses latest version automatically
  • Thinking Terraform ignores version and uses local code
  • Believing Terraform downloads empty module silently
4. You wrote this module block:
module "db" {
  source = "app.terraform.io/myorg/db/aws"
  version = "1.0"
}

Terraform fails with an error about version format. What is the likely problem?
medium
A. Version should be a full semantic version like "1.0.0"
B. Source URL is missing the organization name
C. Module name "db" is invalid
D. Version attribute is not supported in module blocks

Solution

  1. Step 1: Check version format requirements

    Terraform module versions must follow semantic versioning, e.g., "1.0.0".
  2. Step 2: Identify the error cause

    Using "1.0" is incomplete and causes a format error.
  3. Final Answer:

    Version should be a full semantic version like "1.0.0" -> Option A
  4. Quick Check:

    Version format = semantic (x.y.z) [OK]
Hint: Use full semantic version (e.g., 1.0.0) [OK]
Common Mistakes:
  • Using short version like 1.0 instead of 1.0.0
  • Forgetting organization name in source
  • Thinking version attribute is invalid
5. Your team wants to ensure all Terraform modules used from the organization registry are locked to specific versions to avoid unexpected changes. Which practice should you follow?
hard
A. Remove the version attribute and rely on Terraform to pick stable versions
B. Use the latest version without specifying version to get updates automatically
C. Specify exact module versions in the module block using the version attribute
D. Download modules manually and use local paths instead of registry

Solution

  1. Step 1: Understand version locking importance

    Locking module versions prevents unexpected changes and keeps infrastructure stable.
  2. Step 2: Apply version locking in Terraform

    Use the version attribute in the module block to specify exact versions from the registry.
  3. Final Answer:

    Specify exact module versions in the module block using the version attribute -> Option C
  4. Quick Check:

    Version attribute locks module version [OK]
Hint: Always specify exact version to lock modules [OK]
Common Mistakes:
  • Using latest version without locking causes surprises
  • Thinking manual download is better than registry
  • Removing version attribute leads to unstable infra