Deploy and manage resources in Azure by using 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.
  • Deploy advanced Azure resource types, including child and extension resources.
  • Deploy resources at the subscription, management group, and tenant level.
  • Build deployment scripts that define custom steps in your Bicep templates.

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.


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

Modules in this learning path

Describe the benefits of using infrastructure as code, Azure Resource Manager, and Bicep to quickly and confidently scale your cloud deployments. Determine the types of deployments for which Bicep is a good imperative deployment tool.

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 through the use of parameters, variables, expressions, and modules.

This module describes how you can use Bicep parameters to provide information for your template during each deployment. You'll learn about parameter decorators, which make your parameters easy to understand and work with. You'll also learn about the different ways that you can provide parameter values, and how to protect these values when you're working with secure information.

Learn how to use conditions to deploy resources only when specific constraints are in place. Also learn how to use loops to deploy multiple resources that have similar properties.

This module shows how to deploy a variety of Azure resources in your Bicep code. Learn about child and extension resources, and how they can be defined and used within Bicep. Use Bicep to work with resources that you created outside a Bicep template or module.

Deploy Azure resources at the subscription, management group, and tenant scope. Learn what these resources are, why you would use them, and how you create Bicep code to deploy them. Also learn how to create a single set of Bicep files that you can deploy across multiple scopes in one operation.

Learn how to add custom steps to your Bicep or JSON Azure Resource Manager templates (ARM templates) by using deployment scripts.