Category Terraform Notes

The Terraform Registry & Module Versioning

Don’t Build What Already Exists I’ve watched engineers spend two weeks writing a custom VPC module. Handcrafting subnet logic, NAT gateway failover, route table associations. Beautiful code. Then I showed them terraform-aws-modules/vpc/aws — a module that’s been downloaded millions of times and…

Provisioners & null_resource: The Last Resort

Provisioners & null_resource: The Last Resort HashiCorp’s Own Warning — And Why You Should Listen HashiCorp explicitly documents provisioners as a “last resort.” This isn’t just a suggestion buried in footnotes — it’s a design philosophy statement. Provisioners break the…

Built-in Functions & Dynamic Expressions

Built-in Functions & Dynamic Expressions HCL Is Not a Programming Language — But It’s Surprisingly Capable You can’t write arbitrary loops, define custom functions, or implement object-oriented patterns in HCL. It’s a configuration language, not a general-purpose one. But it…

References, Dependencies & the Resource Graph

References, Dependencies & the Resource Graph Terraform Knows the Order — That’s the Point One of Terraform’s most powerful properties is that you don’t write step-by-step provisioning scripts. You don’t say “create the VPC, then create the subnet, then create…