Fundamentals of Bicep

Solution Architect
Azure Resource Manager

Bicep enables you to deploy Azure resources. Bicep uses a declarative syntax that you treat like application code. Treating your infrastructure as code enables you to track changes to your infrastructure requirements and makes your deployments more consistent and repeatable.

If you're familiar with the JSON syntax for writing Azure Resource Manager templates (ARM templates), you'll find that Bicep provides a more concise syntax and improved type safety. In fact, Bicep files compile to standard ARM templates.

Take this learning path to get started with Bicep. In it, you'll:

  • Decide whether Bicep is the right choice for your deployments to Azure.
  • Understand Bicep's declarative syntax and the structure of a Bicep template.
  • Apply Bicep features such as parameters, conditions, and loops to control how your infrastructure is deployed.
  • Define modules that break down complex deployments into smaller and more reusable components.

Each module in this learning path provides options for use with the Azure CLI and with Azure PowerShell. You'll use Visual Studio Code to write and validate your Bicep code.


Want to learn Bicep live from subject matter experts? Follow on-demand Learn Live sessions with our experts.

To learn about Bicep, we recommend you take these three learning paths:

After that, you might be interested in adding your Bicep code to a deployment pipeline. Take one of these two learning paths based on the tool you want to use:


Familiarity with Azure Resource Manager and Azure resource groups is recommended, but not required.

Modules in this learning path

Infrastructure as code can help you quickly and confidently scale your cloud deployments. By using Bicep and Azure Resource Manager, you can automate and simplify the provisioning of infrastructure resources.

Define Azure resources within a Bicep template. Improve the consistency and reliability of your deployments, reduce the manual effort required, and scale your deployments across environments. Your template will be flexible and reusable by using parameters, variables, expressions, and modules.

Use Bicep parameters to provide information for your template during each deployment. Add decorators to make your parameters easy to understand and work with, and to protect secret data. Provide parameter values at the command line and by using parameter files.

In this module, you'll deploy resources only when specific constraints are in place and use loops to deploy multiple resources that have similar properties.

Design and build reusable modules to simplify your Bicep templates. Compose multiple modules into templates by using parameters and outputs.