Terraform was built to describe one durable piece of infrastructure precisely — version it, review it line-by-line, reconcile it against reality. For a handful of long-lived stacks, Terraform plus code review is close to perfect. Operations folklore calls that kind of infrastructure pets, and the templated kind — where the population matters more than any individual — cattle. Per-tenant deployments, per-customer databases, vended accounts, cells in a multi-region fleet: Terraform stamps them beautifully and has no opinion about where the next one lands, whether you're at capacity, or what order to tear one down in.
Everyone who runs stamped infrastructure hits the same wall:
If two or more of those sound like your week, you've probably already built the missing layer by hand — a Lambda, a spreadsheet, a Slack bot.
Entities make instances countable: describe a tenant once as a typed record with properties, a lifecycle, and constraints, and two hundred tenants become a population you can query. Cells make placement a rule instead of a decision: "least-loaded cluster, never more than 500 across the fleet" is enforced before anything provisions. Relationships make teardown safe: typed, cardinality-checked connections are what let deprovisioning walk the graph in the right order so nothing leaks. Core Concepts teaches each in depth.
Terraform still does the provisioning. When Terrantula changes infrastructure, it opens a pull request your CI applies — it never runs terraform apply and never holds your credentials, and the dashboard is a read-only projection of your state. That boundary is why you can adopt visibility first (import your state, see the fleet, stop there for a while) and grow into orchestration when the fleet demands it.
Next: Core Concepts →