Bird
Raised Fist0
Terraformcloud~10 mins

Module registry for organization in Terraform - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the source of the module from the organization registry.

Terraform
module "network" {
  source = "app.terraform.io/[1]/network/vpc/aws"
  version = "1.0.0"
}
Drag options to blanks, or click blank then click option'
Amy-org
Bterraform
Caws
Dvpc
Attempts:
3 left
💡 Hint
Common Mistakes
Using provider name instead of organization name
Omitting the organization name
Confusing module name with organization
2fill in blank
medium

Complete the code to specify the module version from the registry.

Terraform
module "database" {
  source  = "app.terraform.io/my-org/db/mysql"
  version = "[1]"
}
Drag options to blanks, or click blank then click option'
A1.2.3
Blatest
Cv1
Dstable
Attempts:
3 left
💡 Hint
Common Mistakes
Using non-semantic version strings
Omitting the version attribute
Using provider or module names instead of version
3fill in blank
hard

Fix the error in the module source path to correctly reference the organization registry.

Terraform
module "webserver" {
  source = "app.terraform.io/my-org/[1]/nginx/aws"
  version = "2.0.0"
}
Drag options to blanks, or click blank then click option'
Awebserver
Bmodules
Cnetwork
Dnginx
Attempts:
3 left
💡 Hint
Common Mistakes
Using generic terms like 'modules' instead of the actual module name
Confusing module name with provider or organization
4fill in blank
hard

Fill both blanks to define a module source with organization and provider correctly.

Terraform
module "storage" {
  source = "app.terraform.io/[1]/storage/[2]"
  version = "1.1.0"
}
Drag options to blanks, or click blank then click option'
Amy-org
Baws
Cgcp
Dazure
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping organization and provider positions
Using provider name as organization
Using incorrect provider names
5fill in blank
hard

Fill all three blanks to define a module source with organization, module name, and provider.

Terraform
module "cache" {
  source  = "app.terraform.io/[1]/[2]/[3]"
  version = "3.0.1"
}
Drag options to blanks, or click blank then click option'
Amy-org
Bredis
Caws
Dmysql
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up module name and provider
Using incorrect organization name
Using unrelated module names

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