Introduction
When you build infrastructure with Terraform, you often split your setup into smaller parts called modules. Outputs let these modules share important information with each other, like IP addresses or resource IDs, so they can work together smoothly.
When you want one module to provide a value that another module needs to use.
When you need to see important information from a module after Terraform finishes applying changes.
When you want to organize your infrastructure into reusable parts that communicate cleanly.
When you want to avoid repeating the same resource definitions by sharing outputs.
When you want to pass dynamic values from one module to another without hardcoding.