What Modules Are#
A Terraform module is a directory containing .tf files. Every Terraform configuration is already a module (the “root module”). When you call another module from your root module, that is a “child module.” Modules let you encapsulate a set of resources behind a clean interface of input variables and outputs.
Module Structure#
A well-organized module looks like this:
modules/vpc/
main.tf # resource definitions
variables.tf # input variables
outputs.tf # output values
versions.tf # required providers and terraform version
README.md # usage documentationThe module itself has no backend, no provider configuration, and no hardcoded values. Everything configurable comes in through variables. Everything downstream consumers need comes out through outputs.