Use Bicep and ARM templates
MS Learn modules: Explore Azure deployments with ARM templates · Use Bicep to declaratively deploy your Azure infrastructure · Learning objectives: author and deploy Azure infrastructure with bicep and ARM templates, understand scopes, parameters, loops, modules, and safe preview/
what-ifdeployment.
Overview
The Azure-native IaC stack. ARM templates (JSON) are the deployment engine’s format; Bicep is a concise DSL that transpiles 1:1 to ARM JSON — two views of the same deployment. This module covers authoring, parameterizing, modularizing, and safely shipping Bicep through a provisioning-pipeline.
Units / lessons covered
- ARM template anatomy:
$schema,contentVersion,parameters,variables,resources,outputs - Bicep authoring: parameters, variables, modules, loops, conditional/
dependsOn - Deployment scopes: resource group vs subscription/management group/tenant
az deployment group what-if / createand incremental vs complete modes- Deploying Bicep/ARM from Azure Pipelines or GitHub Actions
Concepts introduced (link to term notes)
Key terms / commands
bicep build·az deployment group create -f main.bicep·az deployment group what-if·@displayName·module,param,var,output·%TARGETSCOPE%(rg/sub/mg/tenant) · parameter files (main.bicepparam/.parameters.json)
Hands-on / what to try
Author a main.bicep with a parameterized storage account + VM, run az deployment group what-if to preview changes, then deploy. Extract a nested module and re-wire it with an explicit dependsOn.
Exam focus
- Bicep → ARM: they are the same deployment; Bicep is not a different engine.
- Incremental leaves undeclared resources alone; complete deletes them (drift vs cleanup trade-off).
- Preview every deployment with
what-if; know resource-group vs subscription scopes.
Related
Path MOC · intro-infrastructure-as-code · terraform-in-azure · configuration-and-drift