PracticeVideosBlogFlashcards

3.5 Azure Blueprints, ARM Templates, and Bicep

Key Takeaways

  • ARM (Azure Resource Manager) templates are declarative JSON files that define infrastructure as code for repeatable, idempotent deployments.

  • Bicep is Microsoft's domain-specific language that compiles down to ARM JSON with cleaner syntax, modules, and type safety.

  • Azure Blueprints packages policies, role assignments, ARM templates, and resource groups; Azure Blueprints (Preview) will be retired on January 31, 2027, with a phased retirement beginning July 31, 2026.

  • Microsoft says to migrate blueprint definitions and assignments to Deployment Stacks (recommended) and Template Specs before the retirement date.

  • AZ-900 tests WHAT these tools do, not how to write them; you must know ARM uses JSON and Bicep compiles to ARM.

Last updated: October 2026

Quick Answer: ARM templates (JSON) and Bicep (a cleaner DSL that compiles to ARM) define Azure infrastructure as code for repeatable, idempotent deployments. Azure Blueprints bundles policies, roles, and templates, but Azure Blueprints (Preview) will be retired on January 31, 2027, with a phased retirement beginning July 31, 2026; Microsoft recommends migrating to Deployment Stacks and Template Specs.

Infrastructure as Code (IaC)

Infrastructure as Code (IaC) means provisioning and managing infrastructure through machine-readable definition files instead of clicking through portals. The same file deploys the same environment every time.

BenefitWhy it matters
ConsistencyDev, test, and prod come from one source of truth — no drift.
RepeatabilityRedeploy an identical environment in minutes after a disaster.
Version controlStore templates in Git for history, review, and rollback.
AutomationRun deployments inside CI/CD pipelines with no manual steps.
DocumentationThe template is the documentation of what exists.

ARM Templates (JSON)

ARM templates are JSON files that declare the resources to deploy. They are declarative — you state the desired end state and Azure Resource Manager works out the order and the API calls.

Template sectionPurpose
$schemaThe JSON schema describing the template language version.
contentVersionYour version string (e.g., 1.0.0.0).
parametersInputs supplied at deploy time (VM name, region).
variablesReusable values built from parameters.
resourcesThe resources to create or update.
outputsValues returned after deployment (e.g., a public IP).

Key properties: ARM is idempotent (re-running yields the same result, not duplicates), deploys independent resources in parallel, validates the template before any change, and offers what-if to preview changes.

Bicep

Bicep is Microsoft's domain-specific language (DSL) for Azure. Bicep files (.bicep) transpile (compile) into ARM JSON before deployment, so the runtime is identical — Bicep just makes authoring far easier.

AspectARM JSONBicep
SyntaxVerbose JSONConcise, declarative
File sizeLargeTypically much smaller
ModulesLinked templates (complex)Native module system
ToolingLimited IntelliSenseFull VS Code support, type checking
Learning curveSteeperGentler

On the Exam: You will NOT write template code. Know that ARM templates are JSON, Bicep compiles to ARM, both are declarative IaC, and both give repeatable deployments.

Azure Blueprints (Retiring January 31, 2027)

Azure Blueprints packages several governance artifacts into one versioned, deployable definition so an entire compliant environment can be stamped out repeatedly. Microsoft says Azure Blueprints (Preview) will be retired on January 31, 2027, with a phased retirement beginning July 31, 2026; migrate blueprint definitions and assignments to Deployment Stacks (recommended) and Template Specs. Blueprints is not in the July 20, 2026 AZ-900 skills outline.

Blueprint artifactWhat it provides
Role assignmentsRBAC roles to grant
Policy assignmentsAzure Policies to enforce
ARM templatesResources to deploy
Resource groupsContainers to create
CapabilityBlueprints (retiring)Replacement
Packaging templatesBlueprint definitionTemplate Specs
Managing a deployment as a unitBlueprint assignmentDeployment Stacks
Protecting deployed resourcesBlueprint locksDeployment Stack deny settings

Azure Management Tools Summary

ToolRole
Azure portalWeb GUI for managing resources
Azure CLICross-platform command line (az, Bash-friendly)
Azure PowerShellPowerShell module (Az)
Azure Cloud ShellBrowser shell with Bash AND PowerShell; a storage account is optional and only needed to persist files
ARM templates / BicepNative IaC
TerraformThird-party multi-cloud IaC

On the Exam: Cloud Shell runs in the browser with no local install and supports both Bash and PowerShell. The first time you start it, you can continue with or without storage; an Azure Storage account (file share) is needed only to persist your files between sessions.

Choosing the Right Tool — A Scenario

A team needs to stand up an identical three-tier web app in dev, test, and production with zero configuration drift. The portal is wrong here because manual clicks are not repeatable; the CLI and PowerShell are imperative scripts that can drift over time. The right answer is declarative IaC: author the resources once in Bicep, store the file in Git, and deploy it through a pipeline to all three environments. Because the deployment is idempotent, re-running it to apply a patch updates only what changed rather than creating duplicates, and what-if previews the impact before anyone commits.

Now suppose the same team must also stamp out, for each new business unit, a resource group plus the policies and role assignments that keep it compliant. Historically that was Azure Blueprints, which packaged all of those artifacts together. With Blueprints retiring on January 31, 2027, the team should instead store the templates as Template Specs and deploy them through Deployment Stacks, using the stack's deny settings to protect the deployed resources the way Blueprint locks used to.

Common Traps

  • ARM is JSON, Bicep is a DSL that compiles to ARM — they are not rivals, Bicep sits on top of ARM.
  • Terraform is third-party and multi-cloud; ARM and Bicep are Azure-native.
  • Blueprints is being retired — if a question offers it as a new recommendation, prefer Template Specs and Deployment Stacks.
  • Cloud Shell storage is optional: without a storage account, files don't persist between sessions.
Test Your Knowledge

What file format are Azure Resource Manager (ARM) templates written in?

A

YAML

B

JSON

C

XML

D

HCL

Test Your Knowledge

What is the relationship between Bicep and ARM templates?

A

They are unrelated technologies

B

ARM templates compile into Bicep

C

Bicep compiles into ARM JSON before deployment

D

Bicep has fully replaced and removed ARM

Test Your Knowledge

Microsoft is retiring Azure Blueprints. Which services are the recommended replacements?

A

Azure Policy and RBAC

B

Resource Locks and Tags

C

Management Groups and Budgets

D

Template Specs and Deployment Stacks

Test Your Knowledge

Which statement about Azure Cloud Shell is correct?

A

It requires installing software on your local machine

B

It runs in the browser and supports both Bash and PowerShell

C

It only supports PowerShell

D

It keeps files between sessions without any storage account

Sections you finish are checked off in the contents.