3 min read

Managing Fabric with Terraform: Why It Matters and Where It Fits

Managing Fabric with Terraform: Why It Matters and Where It Fits

As Microsoft Fabric matures into a powerful unified analytics platform, more organisations are asking how to manage it at scale. The Fabric UI is great for hands-on work, but managing dozens of workspaces, users, and capacities manually can get messy fast.

Enter: Terraform

In this post, we’ll explore why this industry-standard Infrastructure as Code (IaC) tool is a valuable addition to your Fabric environment management strategy, where it fits into the broader Fabric ecosystem, and how it complements rather than replaces tools like Fabric Deployment Pipelines.

Why Use Terraform to Manage a Fabric Tenant

Microsoft Fabric is a powerful platform, but provisioning and configuring it manually via the UI becomes error-prone and time-consuming as you scale. Terraform brings Infrastructure as Code (IaC) to Fabric, letting you define your environment in code that can be versioned, reused, and automatically deployed.

Here’s why Terraform makes sense for managing your Fabric environment:

  • Standardise and Automate:
    Define Fabric workspaces, assign capacities, and configure roles consistently → no more manual errors.

  • Version Control Your Environment:
    Track changes in Git, collaborate with others, and audit every modification.

  • Scale with Confidence:
    Spin up dozens of workspaces or assign roles in seconds.

  • Enable CI/CD:
    Automate provisioning and plug Fabric into your DevOps pipelines.

What Can Terraform Manage in Fabric?

The official Microsoft Fabric Terraform provider is actively evolving, and currently supports key components such as:

  • Workspaces (including Fabric capacity assignment)

  • Lakehouses

  • Notebooks

  • Data pipelines

  • Workspace permissions

  • Deployment pipelines

  • Power BI items (where applicable)

For example, here’s how you might create a workspace with Terraform:

resource "fabric_workspace" "sales_workspace" {
name = "Sales Analytics"
capacity = "prod-capacity"
description = "Workspace for Sales Analytics team"
}
 

While not every component is configurable yet, Terraform is already powerful for laying down your foundational structure.

The Fabric Terraform provider is actively being developed with new features being shipped regularly. I’m keeping an eye on their GitHub repo to see what’s coming soon.

At the time of writing, I am keeping my eyes on these upcoming features:

Where Terraform Stops and the Fabric UI Begins

While Terraform shines in provisioning environments, it doesn’t replace the need for the Fabric UI or the authoring experience.

Use the Fabric UI when you need to:

  • Build or edit notebooks, pipelines, and semantic models

  • Configure data transformations and relationships visually

  • Perform ad-hoc troubleshooting or data inspection

  • Fine-tune Power BI visuals and dashboards

Terraform is excellent for infrastructure, but Fabric’s UI and authoring tools remain essential for day-to-day content creation and exploration.

Not sure when to use Terraform vs the Fabric UI? Here's a quick guide to what each is best at:

Task

Use Terraform

Use Fabric UI

Create workspace

✔️

✔️

Assign workspace roles

✔️

✔️

Build semantic models

✔️

Create reports or dashboards

✔️

Design pipelines or notebooks

✔️

Upload files to a Lakehouse

✔️

 

Terraform vs. Deployment Pipelines in Fabric

Terraform and Deployment Pipelines solve different problems, here’s how they complement each other:

Tool

What it does

Terraform

  • Provisions infrastructure: workspaces, capacities, permissions

  • CI/CD approach to deploying content

Deployment Pipelines

  • Moves content (reports, datasets) across dev/test/prod stages

 

Think of Terraform as setting up the stage, and Deployment Pipelines as managing the play.

You might use Terraform to:

  • Set up a new dev/test/prod environment with identical structure

  • Assign workspace admins or viewer roles

  • Connect a workspace to a dedicated capacity

  • Deploy boilerplate artefacts

Then use Deployment Pipelines to:

  • Promote reports and datasets from development to production

  • Compare and validate changes across environments

  • Control content lifecycle

When to Use What

Terraform is great at setting up development, testing, and production environments. It automates user and group permissions while efficiently managing large-scale workspace deployments.

On the other hand, the Fabric UI is the best experience for developing data artefacts, creating visual representations, adjusting data flows, and promoting content effectively.

Here’s how we typically decide what to use, and when:

Use Case

Use Terraform?

Use Fabric Deployment Pipeline?

Provision new workspaces

✔️ Yes

🚫 No

Assign workspace permissions

✔️ Yes

🚫 No

Create lakehouses and notebooks

✔️ (basic setup)

✔️ (for editing)

Build DAX models and visuals

🚫 No

✔️ Yes

Promote a dataset to production

🚫 No

✔️ Yes (Deployment Pipeline)

 

Gotchas & Limitations

While the Terraform provider for Fabric allows us to manage quite a lot today, here are a few things to keep in mind:

  • Most new Fabric features land in Preview, which may limit production use.

  • Terraform support often lags behind new Fabric releases by a few months.

  • Development of the Terraform provider is mostly community-driven, but Microsoft is actively triaging issues on GitHub.

  • For full IaC, you’ll likely need to combine:

    • azurerm/fabric_capacity for capacity deployment

    • azuread/azuread_group for Entra ID group management

What next?

Using Terraform to manage your Microsoft Fabric tenant isn’t a one-size-fits-all decision. It depends on where your organisation is in its data journey.

  • If you’re just getting started, Terraform might feel like overkill. But setting it up early builds a solid foundation for scale, governance, and repeatability.

  • If you’re managing multiple environments, teams, or workloads, it’s time to consider Terraform seriously. It helps you bring order, consistency, and automation to an otherwise manual setup.

At Arkahna, we work with organisations to map out their current state, design future-ready Fabric architectures, and implement scalable, code-based solutions to manage them.

This post is part of a short series on managing Fabric environments at scale, in the next one, I’ll dive into how we use Terraform alongside Deployment Pipelines to support CI/CD for content promotion.

If you're exploring Terraform or rethinking your Fabric governance approach, reach out, we'd love to help.

 

Medallion Architecture Meets Microsoft Fabric: Insights and Fiction

Medallion Architecture Meets Microsoft Fabric: Insights and Fiction

Microsoft wants to recreate the undeniable success of Power BI but with a wider data remit by including Data Engineering, Data Warehousing and Data...

Read More
Organising assets and access control in MS Fabric

Organising assets and access control in MS Fabric

This article is a direct follow up from my previous blog post where I laid out my approach to the Medallion Architecture and how I see it fit in...

Read More
Building Multi-Environment Terraform Projects in Azure

Building Multi-Environment Terraform Projects in Azure

Howdy! In my previous article about Getting Started with Terraform I talked about what Terraform is, why it's neat-o, and a small example on getting...

Read More