AzureBicepIaCARM TemplatesDevOps

Azure Bicep From Scratch: The Full Free Series, Labs and Resources

Parveen Singh
September 10, 2026
9 min read
Azure Bicep From Scratch: The Full Free Series, Labs and Resources

All right, so I have been putting out the Bicep From Scratch series on YouTube over the last few months, and the one thing I keep hearing is that people want it in one place. Fair enough. This page is that place.

Every episode is here in order, with the practice lab that goes with it, the written version if you prefer reading, and the official Microsoft documentation for when you need the real reference instead of my summary of it. Nothing here costs anything.

If you are completely new to infrastructure as code, start at Episode 01 and work down. If you already write Bicep and you are here for a specific thing, use the list below to jump straight to it.

The series at a glance

EpisodeWhat it coversLength
01What Bicep is, why it replaced ARM JSON, and when to use it8:05
02Writing and deploying your first template, line by line7:59
03Parameters, variables, and .bicepparam files14:06
04Modules, and how to stop copy-pasting infrastructure code12:59
05Loops, and previewing changes with what-if before you deploy14:45
BonusDeploying a full Azure environment from a single file10:22
BonusWhy Bicep deployment errors are so hard to read5:54

Episode 01: What Bicep actually is

This is the orientation episode. Bicep is a domain-specific language that compiles down to ARM JSON, which means everything you deploy with it is still an ARM deployment underneath. Understanding that relationship is what stops Bicep from feeling like magic.

What you'll learn

  • What Bicep is and what problem it was built to solve
  • How Bicep compiles to ARM JSON, and why that matters for troubleshooting
  • Where Bicep fits against Terraform and the portal
  • What you need installed before you can deploy anything

Practice it: Introduction to Azure Bicep: Write and Deploy Your First Template is Beginner level and takes about 45 minutes.

Read the written version: What Is Azure Bicep and Why You Should Learn It

Official docs


Episode 02: Your first template, line by line

No skipping ahead in this one. We write a template from an empty file and go through every line, because the syntax only stops looking strange once you have typed it yourself a few times.

What you'll learn

  • The anatomy of a resource declaration, and what each part is doing
  • How API versions work and why pinning them matters
  • Deploying with az deployment group create
  • Reading what Azure sends back when the deployment finishes

Practice it: Deploy a Virtual Network and Virtual Machine Using Bicep is Beginner level and takes about 60 minutes.

Read the written version: How to Write Your First Azure Bicep Template

Official docs


Episode 03: Parameters and .bicepparam files

This is where a template stops being a one-off script and starts being something you can reuse across dev, test and production. The .bicepparam format is newer than most of the tutorials you will find, so this episode is worth watching even if you already pass parameters inline.

What you'll learn

  • Parameters, variables and outputs, and when to reach for each one
  • Writing .bicepparam files instead of JSON parameter files
  • Decorators for defaults, allowed values and validation
  • The built-in functions you will actually use day to day

Practice it: Azure Bicep Expressions: Parameters, Variables, Outputs and Functions is Beginner level and takes about 45 minutes.

Read the written version: Azure Bicep Parameters, Variables, and Conditions

Official docs


Episode 04: Modules

Honestly, this is the episode that changes how your repository looks. Once you can write a module, the copy-pasted 400-line template you have been maintaining turns into something much smaller that you can actually reason about.

What you'll learn

  • Splitting a template into modules and wiring them together
  • Passing values between modules, and getting outputs back out
  • Publishing modules to a private registry backed by Azure Container Registry
  • Versioning modules so a change does not break every consumer at once

Practice it: Publish and Consume Bicep Modules with Azure Container Registry is Advanced level and takes about 60 minutes.

Read the written version: Bicep Modules and the Private Registry: Stop Copy-Pasting Templates

Official docs


Episode 05: Loops and what-if

And here's the thing about what-if: it is the closest Bicep gets to terraform plan, and a lot of people never turn it on. If you take one habit away from this whole series, make it this one.

What you'll learn

  • Loops for deploying several copies of a resource without repeating yourself
  • Conditions, so a resource only deploys in the environments that need it
  • Running az deployment group what-if to preview a change
  • Reading what-if output, including where it is known to be noisy

Practice it: Azure Bicep Conditions, Loops and What-If Deployments is Intermediate level and takes about 60 minutes.

Read the written version: Testing Bicep Before It Breaks Production: What-If, PSRule and CI Validation

Official docs


Bonus: A full environment in one file

This one predates the numbered series, but it is the payoff episode. Networking, a web app, storage and the wiring between them, all deployed from a single template.

Practice it: Deploy a Full Azure Environment Using Bicep Infrastructure as Code is Intermediate level and takes about 60 minutes.


Bonus: When the error message makes no sense

Bicep errors surface from the ARM layer underneath, which is why they so often point at a line number that has nothing to do with your actual mistake. This is a short one on how to trace an error back to its real cause.

Official docs


Going further than the series

These are the posts that pick up where the videos stop. They assume you can already write and deploy a template.


The full lab track

Every lab below runs in a real Azure subscription that is provisioned for you, so there is nothing to set up and no bill at the end. This is the order I would work through them.

Bicep

LabLevelTime
Introduction to Azure Bicep: Write and Deploy Your First TemplateBeginner45 min
Deploy a Virtual Network and Virtual Machine Using BicepBeginner60 min
Azure Bicep Expressions: Parameters, Variables, Outputs and FunctionsBeginner45 min
Azure Bicep Conditions, Loops and What-If DeploymentsIntermediate60 min
Deploy a Full Azure Environment Using Bicep Infrastructure as CodeIntermediate60 min
Automate Bicep Deployments with GitHub Actions CI/CD PipelineIntermediate60 min
Publish and Consume Bicep Modules with Azure Container RegistryAdvanced60 min
Azure Deployment Stacks with Bicep for Resource Lifecycle ManagementAdvanced60 min

ARM templates

You do not need these to learn Bicep. They are here because most people inherit an ARM estate before they get to build a Bicep one, and being able to read the JSON is what makes decompiling it bearable.

LabLevelTime
Deploying Your First ARM TemplateBeginner60 min
Deploy an Azure Web App using an ARM TemplateBeginner60 min
Deploy a Storage Account with ARM TemplatesIntermediate45 min

Pro tip: If you already have ARM JSON in a repository, run az bicep decompile --file template.json on it. The output is never production-ready, but reading the Bicep it generates alongside the JSON you already understand is a fast way to learn the syntax.


Reference material worth bookmarking


Where to start

If you have never written a line of Bicep, watch Episode 01, then do the intro lab before you watch Episode 02. The episodes are short on purpose, and the labs are where the learning actually sticks.

If you are already deploying Bicep and you want to level up, skip to Episode 04 on modules and then read the Azure Verified Modules post. That combination is the difference between templates that work and templates a team can maintain.

New episodes get added here as they publish, so this page is worth bookmarking rather than saving any single video.

Recommended Readings