4.2. References and Dependencies
💡 First Principle: When one block references another's attribute, Terraform doesn't just copy a value — it learns an ordering, because the referenced thing must exist first; this is why you almost never specify order manually.
Why care: Dependency handling is where "declarative" becomes concrete. Misunderstanding it leads to either over-using depends_on (creating brittle configs) or hitting "resource not ready" errors. The 004 objectives call out dependency definition and depends_on explicitly.
The mental model: References are wires. Each wire from A into B says "B needs A first." Terraform collects all the wires into a graph and walks it in order — you wired the dependencies by referencing, not by sequencing.
⚠️ Common Misconception: "I must list dependencies with depends_on to control order." In the vast majority of cases, simply referencing an attribute is enough — Terraform infers the dependency. depends_on is reserved for dependencies that can't be expressed through a reference.