Control Plane · Infrastructure as Code

Bicep

Microsoft's domain-specific language for declaratively deploying Azure resources.

Overview

Bicep is Microsoft's language for deploying Azure resources. It is a domain-specific language that compiles to ARM templates, so it is a friendlier surface over the same deployment engine rather than a separate one.

It exists because ARM JSON is verbose and awkward. Bicep is concise, typed, and works out dependencies between resources automatically, so most explicit dependency declarations disappear.

The most useful difference from Terraform for anyone comparing: there is no state file. Azure itself holds the state, so there is nothing to store, lock or lose. Deployments are idempotent, and a what-if operation previews changes against the live environment before applying them.

It is Azure-only, which is the point. Every resource type and API version is available as soon as the resource provider ships it, with no waiting for a provider to catch up.

Modules are shared through a private registry backed by Azure Container Registry, or through template specs. The public registry now carries Azure Verified Modules only, which Microsoft owns and maintains.

Governance leans on Azure: Azure Policy, role-based access control, and deployment stacks, which manage a group of resources together and can deny changes made outside the template. There is no bespoke policy-as-code engine or unit test framework; linting and a local snapshot diff are provided instead.

It is MIT licensed and free, supported by Microsoft Support, with version 0.47 current in September 2026.

Key features and capabilities

The same headings are used for every infrastructure as code entry, so two tools can be read side by side.

How infrastructure is described
  • Declarative domain-specific language with type safety and concise syntax
  • Modules are Bicep files deployed by other Bicep files, with conditions and loops
  • User-defined types and functions, and compile-time imports
  • Dependencies between resources are worked out automatically
State and planning
  • No state file at all; Azure holds the state
  • What-if previews changes against the live environment
  • A snapshot command gives an offline diff, useful in pull requests
  • Deployment stacks track a group of resources as one unit
What it can provision
  • Azure only, covering every resource type and API version as soon as it ships
  • Scopes from resource group and subscription to management group and tenant
  • No multi-cloud, SaaS or non-Azure Kubernetes provisioning
Policy, testing and secrets
  • Integrates with Azure Policy, template specs and blueprints
  • Linting with configurable rules
  • Secure decorators keep module outputs out of logs and deployment history
  • Deployment stacks support deny settings that block changes made outside the template
Team workflow
  • Private module registry backed by Azure Container Registry, or template specs
  • The public registry carries Azure Verified Modules only
  • Snapshot diffs are documented for catching unintended changes in pull requests
  • Registry hostnames are restricted to an allowlist
Integrations
  • Deployed through Azure CLI, Azure PowerShell or the portal
  • VS Code and Visual Studio extensions with IntelliSense and validation
  • A JSON-RPC interface for programmatic use
  • No Databricks or Snowflake providers; it provisions Azure resource types only
How it runs
  • CLI only; the control plane is Azure Resource Manager itself
  • Nothing to self-host and no managed service to buy
  • MIT licence

Pricing

Free

Free. Microsoft states plainly that Bicep costs nothing and has no premium capabilities, and the tooling is MIT licensed. You pay only for the Azure resources you deploy, and a private module registry uses Azure Container Registry, which is chargeable.

Vendor pricing page →

Demos and videos

About Microsoft

Bicep is developed by Microsoft in the Azure organisation on GitHub and is MIT licensed, with contributions accepted for code, documentation, snippets and quickstart templates. It is Microsoft-led open source rather than foundation-governed, and the Azure Verified Modules in the public registry are created and owned by Microsoft employees. Microsoft Support covers it, though not experimental features.

learn.microsoft.com

Other infrastructure as code tools

Databricks Asset Bundles

Control Plane · Infrastructure as Code

Defines Databricks jobs, pipelines and other workspace assets as YAML and deploys them with the Databricks CLI. Renamed Declarative Automation Bundles in 2026.

  • Commercial

OpenTofu

Control Plane · Infrastructure as Code

Open-source fork of Terraform under the Linux Foundation, compatible with Terraform providers.

  • Open source

Pulumi

Control Plane · Infrastructure as Code

Infrastructure as code written in general-purpose languages such as TypeScript, Python and Go.

  • Open core

Terraform

Control Plane · Infrastructure as Code

Infrastructure as code tool from HashiCorp, with providers for clouds and data platforms such as Databricks and Snowflake.

  • Source available

Drafted with AI assistance and checked against the vendor’s own documentation.