You've learned the mindset, the vocabulary, and the YAML shapes, and you've applied your first cell. This section turns all of that into a complete, working fleet — built one primitive at a time, in the order you'd actually build it.
This is a guided, sequential tutorial. Do the steps in order; each one depends on the one before it, and each page ends pointing at the next. By the end you'll have imported your real Terraform state, modeled it as entity types and cells, connected it with a relationship, and wired an Action that opens a pull request to onboard a tenant — without ever asking Terrantula to run terraform apply.
The Learn Terrantula section taught you what the primitives are. This section is hands-on. If a term here feels unfamiliar, the concept pages are one click away — but you shouldn't need them. We re-introduce each piece as we build it.
A small but complete tenant fleet, modeled on the canonical bare-tf-gh-actions-onefile-per-tenant demo:
TenantCluster entity type and a Tenant entity type — the two shapes in your fleet.prod-clusters cell that groups your clusters and decides where the next tenant lands.runs_on relationship type that connects tenants to clusters, with enforced cardinality and an explicit dependency order.OnboardTenant Action whose trigger opens a GitHub pull request. Your CI applies the change on merge; Terrantula tracks the run and transitions the tenant when it lands.When you're done, your dashboard shows a live graph of clusters, tenants, and the links between them — and you have a one-command way to grow the fleet that produces a reviewable PR every time.
Follow these in order. Each builds on the last.
terrantula import terraform. Start from reality, not a blank page.prod-clusters cell.runs_on relationship type, and learn how dependsOn gives the cascade its ordering.OnboardTenant with a pull-request trigger. Terrantula opens the PR; your CI applies it..tfstate file for some real infrastructure — ideally a cluster or two you can model as the fleet's hosts. If you don't have one handy, the synthetic 50-resource fixture at examples/m1-timing/terraform.tfstate in the repository works for following along.
Until you run terrantula login --api-url ..., every command here applies to a local SQLite database on your machine. That's the right place to do this tutorial: you can experiment freely, and nothing leaves your workstation. When you're ready to share with a team, the exact same commands point at a remote project.
Ready? Start with the import — the cheapest, fastest way to get your real fleet on screen.