BROWSE DOCS
REFERENCE
DOCS / INFRASTRUCTURE AS CODE

Terraform

Pricing Databricks resources declared with the Terraform provider, so a team that deploys with Terraform gets the same estimate, the same gate and the same board as a team using bundles.
COMING SOON
Terraform is not supported yet. This page describes what is planned and what the design has to solve, so you can tell whether it will fit your setup — and tell us if it will not.

What is planned

A second reader behind the same commands. finowl breakdown, finowl diff and finowl guard keep their options and their exit codes; what changes is which file they parse.

# what it will look like
finowl breakdown --bundle main.tf --target prod
finowl guard --bundle main.tf --target prod

Resources to be priced, matching what the bundle reader covers today:

TERRAFORM RESOURCEPRICED FROM
databricks_jobjob_cluster and per-task new_cluster blocks, plus schedule, trigger and continuous.
databricks_pipelineIts cluster blocks, edition, photon and continuous.
databricks_sql_endpointSize and type, classic or serverless. Always 730 hours a month.

What the design has to solve

Terraform is not a harder parse than YAML. It is a harder resolve, and these are the questions that decide whether the answer is a real cost or a plausible one.

What is an environment?

A bundle names its environments in one targets: block, which is what --target is checked against. Terraform has no equivalent: an environment might be a workspace, a .tfvars file, a directory, or a branch convention. Finowl will not guess, so --target has to map onto something declared. Terraform workspaces are the likeliest anchor, with an explicit mapping where they are not used.

Modules hide the cluster

A cluster shape passed into a module as a variable, or built inside one from a locals block, is not readable from the calling file. This is the real constraint on Terraform support, and the reason the plan output matters more here than it does for bundles: terraform plan -out resolves modules, variables and interpolation into concrete values.

Plan requires state

Reading the plan means reaching the backend that holds the state. That is fine in CI, where the pipeline already does it, and awkward on a laptop where finowl breakdown is expected to work from files alone. The likely outcome is two paths: a file-only read that prices what it can resolve statically, and a plan-based read for the complete answer.

What works today

Everything in Finowl except the reader is independent of your deployment tool. If you deploy with Terraform now:

  • Estimation, budgets and commitment work unchanged. They are a conversation and a decision, not a file — see Estimate.
  • Actual cost works unchanged. It reads Databricks system tables and Azure Cost Management, and attributes spend by a tag on the cluster — which Terraform sets as readily as a bundle does. See Actual cost.
  • Policies and rules are authored the same way. What waits on this page is their evaluation against Terraform-declared resources in CI.
NOTE
A team running both — bundles for jobs, Terraform for platform resources — registers one product per definition and gets one board covering both, since a product's identity is an opaque id rather than a file path.

Tell us about your setup

The design decisions above turn on how real teams write Terraform for Databricks: whether clusters live in modules, whether workspaces map to environments, whether CI already has state access. If you are deploying Databricks with Terraform, get in touch — that is what the reader will be built against.