What are Terraform modules and when would you use them?
Assesses fundamental understanding of Terraform & IaC conventions, runtime behavior, and memory/performance considerations.
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
A module is a reusable package of Terraform configuration. Every configuration is a root module, and it can call child modules.
Benefits:
- Encapsulation: expose a small set of input variables and outputs, and hide the complexity.
- Consistency: standardise how a database or VPC is provisioned across teams.
- Reuse: avoid copy-pasting the same blocks.
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.5.0"
name = "app-vpc"
cidr = "10.0.0.0/16"
azs = ["us-east-1a", "us-east-1b"]
}
Use the public registry or a private module registry with version pins. Pass data in through variables and expose needed values via outputs. Avoid deep nesting and over-abstraction; a module should have a clear single purpose. Test modules with tools such as Terratest, and document inputs and outputs.
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.