0
0
Terraformcloud~20 mins

Outputs for module communication in Terraform - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Terraform Module Output Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
service_behavior
intermediate
2:00remaining
What is the output value of the root module after applying this Terraform configuration?
Given a root module that calls a child module which outputs a value, what will be the value of module.child.output_value in the root module?
Terraform
module "child" {
  source = "./child_module"
  input_var = "hello"
}

output "child_output" {
  value = module.child.output_value
}

# child_module/main.tf
variable "input_var" {}

output "output_value" {
  value = "${var.input_var}-world"
}
A"hello-world"
B"hello"
C"world"
D"${var.input_var}-world"
Attempts:
2 left
💡 Hint
Remember that module outputs can be accessed in the root module using module...
Configuration
intermediate
2:00remaining
Which option correctly defines an output in a Terraform module to expose a resource attribute?
You want to expose the ID of an AWS EC2 instance created inside a module. Which output block correctly achieves this?
Terraform
resource "aws_instance" "example" {
  ami           = "ami-123456"
  instance_type = "t2.micro"
}

# Define output here
A
output "instance_id" {
  value = aws_instance.example.id
}
B
output "instance_id" {
  value = aws_instance.example[0].id
}
C
output "instance_id" {
  value = aws_instance.example.instance_id
}
D
output "instance_id" {
  value = aws_instance.example
}
Attempts:
2 left
💡 Hint
Resource attributes are accessed by their exact attribute names, not by index or the whole resource.
Architecture
advanced
2:00remaining
How can you pass a computed value from one module to another in Terraform?
You have two modules: Module A creates a VPC and outputs its ID. Module B needs the VPC ID to create subnets. How should you connect these modules in the root module?
Terraform
module "vpc" {
  source = "./vpc_module"
}

module "subnet" {
  source = "./subnet_module"
  vpc_id = ???
}
ASet vpc_id = output.vpc_id
BSet vpc_id = var.vpc_id
CSet vpc_id = aws_vpc.main.id
DSet vpc_id = module.vpc.vpc_id_output
Attempts:
2 left
💡 Hint
Modules expose outputs that can be referenced by other modules in the root module.
security
advanced
2:00remaining
What is a security risk when exposing sensitive data via Terraform module outputs?
You have a module output that exposes a database password. What is the main risk and how can you mitigate it?
AThe password is stored in plain text in logs; mitigate by disabling logging.
BThe password is encrypted in state files; no mitigation needed.
CThe password appears in Terraform state files; mitigate by marking the output as sensitive.
DThe password is only visible to admins; mitigate by restricting IAM roles.
Attempts:
2 left
💡 Hint
Terraform state files store outputs and can be read if not protected.
Best Practice
expert
2:00remaining
What is the best practice for managing outputs when a module is used multiple times with different configurations?
You use the same module twice to create two different environments (dev and prod). How should you handle outputs to avoid conflicts and confusion?
AAvoid using outputs; instead, hardcode values in the root module.
BUse unique module instance names and reference outputs with those names in the root module.
CDefine outputs only in one module instance and share them via variables.
DUse the same module name and rely on Terraform to merge outputs automatically.
Attempts:
2 left
💡 Hint
Terraform distinguishes module instances by their names in the root module.