Bird
Raised Fist0
GCPcloud~20 mins

Modules for reusability in GCP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
GCP Modules Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Architecture
intermediate
2:00remaining
Understanding Module Outputs in GCP Terraform

You have a Terraform module that creates a Google Cloud Storage bucket and outputs its name. What will be the value of module.bucket.bucket_name after applying the configuration?

GCP
module "bucket" {
  source = "./modules/gcs_bucket"
  bucket_name = "my-app-bucket"
}

output "bucket_name" {
  value = module.bucket.bucket_name
}
A"bucket_name"
BThrows an error because output is not defined
C"my-app-bucket"
Dnull
Attempts:
2 left
💡 Hint

Think about what the module outputs and how outputs are accessed.

❓ Configuration
intermediate
2:00remaining
Module Variable Scope in GCP Terraform

Given a Terraform module that defines a variable region with a default value, what will be the region used if the module is called without specifying region?

GCP
variable "region" {
  type    = string
  default = "us-central1"
}

resource "google_compute_instance" "vm" {
  name         = "vm-instance"
  machine_type = "e2-medium"
  zone         = "${var.region}-a"
}
A"us-east1"
Bnull
CThrows an error because region is not passed
D"us-central1"
Attempts:
2 left
💡 Hint

Consider the default value behavior of variables in Terraform modules.

❓ security
advanced
2:30remaining
Securing Module Inputs in GCP Terraform

You want to ensure that a sensitive variable like a service account key is not exposed in Terraform logs or state files when passed to a module. Which approach correctly secures this sensitive input?

ADeclare the variable with <code>type = string</code> and <code>sensitive = true</code> in the module and pass the key as input.
BEncrypt the key manually and pass the encrypted string as input without marking it sensitive.
CStore the key in a public GitHub repo and reference it in the module input.
DPass the key as a plain string variable without any special flags.
Attempts:
2 left
💡 Hint

Think about Terraform's built-in support for sensitive variables.

❓ service_behavior
advanced
2:30remaining
Module Reuse Impact on Resource Naming in GCP Terraform

You reuse a module twice in your Terraform configuration to create two Google Cloud Storage buckets. Both module calls use the same bucket_name input. What will happen when you apply this configuration?

ATerraform will throw an error due to duplicate resource names.
BBoth buckets will be created with the same name successfully.
CTerraform will create only one bucket and ignore the second.
DTerraform will append a suffix to the second bucket name automatically.
Attempts:
2 left
💡 Hint

Consider how resource names must be unique in GCP and Terraform behavior on duplicates.

✅ Best Practice
expert
3:00remaining
Designing Reusable Modules for Multi-Environment Deployments in GCP

You are designing a Terraform module to deploy a GCP Compute Engine instance. You want to reuse this module for multiple environments (dev, staging, prod) with different configurations. Which design approach best supports this reuse while following best practices?

ACreate separate modules for each environment with hardcoded values inside each module.
BUse input variables for all environment-specific settings and avoid hardcoding any values inside the module.
CUse environment variables outside Terraform to switch configurations and keep the module static.
DHardcode production values in the module and override them only for dev and staging.
Attempts:
2 left
💡 Hint

Think about how to keep modules flexible and maintainable across environments.

Practice

(1/5)
1. What is the main benefit of using modules in GCP infrastructure setup?
easy
A. They let you reuse code to create cloud resources easily.
B. They automatically fix errors in your cloud setup.
C. They increase the cost of cloud resources.
D. They replace the need for any configuration files.

Solution

  1. Step 1: Understand what modules do

    Modules are reusable pieces of configuration that help you avoid repeating code.
  2. Step 2: Identify the benefit in context

    Using modules makes your cloud setup easier and faster by reusing code.
  3. Final Answer:

    They let you reuse code to create cloud resources easily. -> Option A
  4. Quick Check:

    Modules = Reuse code [OK]
Hint: Modules help reuse code to save time and effort [OK]
Common Mistakes:
  • Thinking modules fix errors automatically
  • Believing modules increase costs
  • Assuming modules remove all config files
2. Which of the following is the correct way to call a module in a Terraform configuration for GCP?
easy
A. module "storage" { source = "./modules/storage" }
B. call module storage from "./modules/storage"
C. use module storage located at ./modules/storage
D. import module storage from "./modules/storage"

Solution

  1. Step 1: Recall Terraform module syntax

    Terraform uses the keyword module followed by a name and a block with source to specify the module path.
  2. Step 2: Match the correct syntax

    module "storage" { source = "./modules/storage" } matches the correct syntax: module "name" { source = "path" }.
  3. Final Answer:

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

    Terraform module call = module "name" with source [OK]
Hint: Use 'module "name" { source = "path" }' to call modules [OK]
Common Mistakes:
  • Using keywords like call or import which are invalid
  • Missing quotes around module name
  • Not using a block structure for module
3. Given this Terraform module call:
module "network" {
  source = "./modules/network"
  region = "us-central1"
}

What will happen if the module network does not accept a region variable?
medium
A. Terraform will deploy but with a default region.
B. Terraform will ignore the extra variable and deploy successfully.
C. Terraform will throw an error about an unknown variable.
D. Terraform will deploy but skip the network module.

Solution

  1. Step 1: Understand variable passing in modules

    Terraform requires that variables passed to modules must be declared in the module's variables file.
  2. Step 2: Identify behavior when unknown variable is passed

    If a variable is passed but not declared, Terraform throws an error about unknown input variable.
  3. Final Answer:

    Terraform will throw an error about an unknown variable. -> Option C
  4. Quick Check:

    Unknown module variable = error [OK]
Hint: Modules must declare variables before use [OK]
Common Mistakes:
  • Assuming Terraform ignores unknown variables
  • Thinking Terraform uses defaults without declaration
  • Believing module is skipped silently
4. You have a module defined in ./modules/storage but when you run Terraform apply, it fails with:
Error: Module not found
What is the most likely cause?
medium
A. Terraform does not support modules in local folders.
B. The module code has syntax errors inside it.
C. You forgot to initialize the Terraform backend.
D. The source path in the module call is incorrect or misspelled.

Solution

  1. Step 1: Understand the error meaning

    The error 'Module not found' means Terraform cannot locate the module source path.
  2. Step 2: Check common causes

    The most common cause is a wrong or misspelled source path in the module call.
  3. Final Answer:

    The source path in the module call is incorrect or misspelled. -> Option D
  4. Quick Check:

    Module not found = wrong source path [OK]
Hint: Check module source path spelling if module not found error [OK]
Common Mistakes:
  • Assuming syntax errors cause 'Module not found'
  • Thinking Terraform disallows local modules
  • Confusing backend init with module loading
5. You want to create multiple GCP VM instances with similar settings using a module. Which approach best uses modules for reusability and scalability?
hard
A. Use a module only once and duplicate its code for other VMs.
B. Create a module for one VM and call it multiple times with different instance names.
C. Create separate modules for each VM with hardcoded settings.
D. Write all VM configurations directly in the main file without modules.

Solution

  1. Step 1: Understand module reusability

    Modules let you reuse the same configuration by calling them multiple times with different inputs.
  2. Step 2: Identify scalable approach

    Calling one VM module multiple times with different names is scalable and clean.
  3. Final Answer:

    Create a module for one VM and call it multiple times with different instance names. -> Option B
  4. Quick Check:

    Reuse module calls for multiple resources [OK]
Hint: Call one module multiple times with different inputs [OK]
Common Mistakes:
  • Duplicating module code instead of reusing
  • Hardcoding settings in separate modules
  • Avoiding modules and repeating code
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