Why ARM Templates Are Holding You Back (And How Bicep Fixes Azure Deployments) episode artwork

EPISODE · Sep 13, 2025 · 17 MIN

Why ARM Templates Are Holding You Back (And How Bicep Fixes Azure Deployments)

from M365.FM - Modern work, security, and productivity with Microsoft 365 · host Mirko Peters - Founder of m365.fm, m365.show and m365con.net

ARM templates look powerful on paper—but in real projects they grow into giant JSON blobs that are hard to read, harder to debug, and almost impossible to keep in sync with what’s actually running in Azure. One missing comma or brace can block a whole deployment, error messages are vague, and teams under pressure quietly “fix it in the portal,” leaving templates and reality out of sync. In this episode, we unpack why ARM collapses under its own weight as soon as you go beyond trivial examples, how configuration drift slowly destroys your “infrastructure as code,” and why so many ARM files end up as untrusted skeletons instead of a real source of truth.Bicep flips that experience: it gives you a cleaner, more readable language on top of the same ARM engine, with proper modules, reuse, and tooling support so you stop copy‑pasting JSON and start composing infrastructure like code. We walk through the same deployment written once in classic ARM and once in Bicep so you can see the difference side by side, then show how Bicep makes refactors, reviews, and DRY patterns realistic instead of painful.WHY ARM TEMPLATES BREAK MORE THAN THEY BUILDARM was supposed to make deployments predictable: declare the end state, let Azure handle the rest. In practice, the declarative model gets buried under verbose JSON syntax, deeply nested structures, and duplicated parameter boilerplate, so even a “simple” VM or app service template quickly runs into hundreds of lines. We look at what that does to real teams: error messages that point to the wrong place, hours spent hunting for a missing brace, and pipelines blocked by templates nobody feels confident editing. The result is a familiar pattern: people start bypassing templates with quick portal changes “just this once,” and the more painful the JSON gets, the more often those one‑offs happen.THE SILENT KILLER: CONFIGURATION DRIFTOnce you start fixing things directly in Azure instead of in code, configuration drift begins. Your template says one thing, your running environment says another, and over time the gap widens until the file you committed isn’t a reliable description of production anymore. We break down how that drift shows up: dev and prod no longer behaving the same even though they “came from the same template,” firewalls and access rules that exist only in the portal, and audits where nobody can explain why a live environment doesn’t match the code in Git. ARM’s bulk and friction make this worse—because editing templates is so painful, small fixes almost never make it back into JSON, so drift becomes the default instead of the exception.WHERE ARM TEMPLATES COLLAPSE UNDER THEIR OWN WEIGHTThe real breaking point comes when you try to scale. ARM doesn’t give you clean, first‑class ways to build abstractions or reuse building blocks, so teams fall back to copy‑paste as soon as they need similar patterns across environments or stacks. Every copy increases size and complexity, introduces subtle differences, and makes future changes risky, because you’re now editing the same logic in five places instead of one. We talk through how this hits larger deployments—multi‑resource apps, shared components, cross‑region patterns—and why ARM’s design nudges you toward sprawling templates that nobody really owns.HOW BICEP FIXES THE WORST ARM PAIN POINTSBicep keeps the underlying ARM engine but replaces unwieldy JSON with a concise, purpose‑built language for Azure infrastructure. You get readable syntax, proper modules for reuse, parameters and variables that don’t drown in quotes and commas, and tooling that can decompile existing ARM templates so you can migrate instead of starting from scratch. In the episode, we walk a real example: the same VM or app deployment first in ARM, then in Bicep, highlighting how many lines disappear, how much easier it is to spot logic errors, and how review comments suddenly become about architecture instead of bracket placement.WHAT YOU’LL LEARNWhy ARM templates become cluttered, brittle and hard to debug as soon as you leave trivial examples.How configuration drift erodes your “source of truth” when teams fix issues in the portal instead of in code.How and why ARM collapses under its own weight when you try to reuse or scale patterns.How Bicep’s cleaner syntax and modular design make Azure deployments simpler, faster and more consistent.THE CORE INSIGHTThe core insight of this episode is that ARM’s problem isn’t what it promises, it’s how it forces you to express those promises. As long as your infrastructure is trapped in giant JSON templates, drift and duplication are almost guaranteed; once you switch to Bicep and treat infrastructure like real code—with modules, reuse and reviews—you finally get the predictable, repeatable deployments ARM was supposed to deliver in the first place.WHO THIS EPISODE IS FORAzure engineers and DevOps teams stuck maintaining large, fragile ARM templates.Architects and platform teams designing IaC standards for Azure environments.Developers who’ve avoided ARM because of JSON pain but want a realistic path into IaC with Bicep.ABOUT THE AUTHOR / HOSTMirko Peters is a Microsoft 365, Azure and infrastructure‑as‑code consultant and host of the M365.FM podcast, helping organizations treat Azure, DevOps and IaC as one integrated operating system instead of a pile of ad‑hoc scripts and portal changes. He works with teams running on Microsoft 365, Azure and modern DevOps toolchains to replace brittle ARM templates with Bicep‑based deployments that are easier to read, review and keep in sync with reality.Become a supporter of this podcast: https://www.spreaker.com/podcast/m365-fm-modern-work-security-and-productivity-with-microsoft-365--6704921/support.

ARM templates look powerful on paper—but in real projects they grow into giant JSON blobs that are hard to read, harder to debug, and almost impossible to keep in sync with what’s actually running in Azure. One missing comma or brace can block a whole deployment, error messages are vague, and teams under pressure quietly “fix it in the portal,” leaving templates and reality out of sync. In this episode, we unpack why ARM collapses under its own weight as soon as you go beyond trivial examples, how configuration drift slowly destroys your “infrastructure as code,” and why so many ARM files end up as untrusted skeletons instead of a real source of truth.Bicep flips that experience: it gives you a cleaner, more readable language on top of the same ARM engine, with proper modules, reuse, and tooling support so you stop copy‑pasting JSON and start composing infrastructure like code. We walk through the same deployment written once in classic ARM and once in Bicep so you can see the difference side by side, then show how Bicep makes refactors, reviews, and DRY patterns realistic instead of painful.WHY ARM TEMPLATES BREAK MORE THAN THEY BUILDARM was supposed to make deployments predictable: declare the end state, let Azure handle the rest. In practice, the declarative model gets buried under verbose JSON syntax, deeply nested structures, and duplicated parameter boilerplate, so even a “simple” VM or app service template quickly runs into hundreds of lines. We look at what that does to real teams: error messages that point to the wrong place, hours spent hunting for a missing brace, and pipelines blocked by templates nobody feels confident editing. The result is a familiar pattern: people start bypassing templates with quick portal changes “just this once,” and the more painful the JSON gets, the more often those one‑offs happen.THE SILENT KILLER: CONFIGURATION DRIFTOnce you start fixing things directly in Azure instead of in code, configuration drift begins. Your template says one thing, your running environment says another, and over time the gap widens until the file you committed isn’t a reliable description of production anymore. We break down how that drift shows up: dev and prod no longer behaving the same even though they “came from the same template,” firewalls and access rules that exist only in the portal, and audits where nobody can explain why a live environment doesn’t match the code in Git. ARM’s bulk and friction make this worse—because editing templates is so painful, small fixes almost never make it back into JSON, so drift becomes the default instead of the exception.WHERE ARM TEMPLATES COLLAPSE UNDER THEIR OWN WEIGHTThe real breaking point comes when you try to scale. ARM doesn’t give you clean, first‑class ways to build abstractions or reuse building blocks, so teams fall back to copy‑paste as soon as they need similar patterns across environments or stacks. Every copy increases size and complexity, introduces subtle differences, and makes future changes risky, because you’re now editing the same logic in five places instead of one. We talk through how this hits larger deployments—multi‑resource apps, shared...

NOW PLAYING

Why ARM Templates Are Holding You Back (And How Bicep Fixes Azure Deployments)

0:00 17:55

No transcript for this episode yet

We transcribe on demand. Request one and we'll notify you when it's ready — usually under 10 minutes.

Frequently Asked Questions

How long is this episode of M365.FM - Modern work, security, and productivity with Microsoft 365?

This episode is 17 minutes long.

When was this M365.FM - Modern work, security, and productivity with Microsoft 365 episode published?

This episode was published on September 13, 2025.

What is this episode about?

ARM templates look powerful on paper—but in real projects they grow into giant JSON blobs that are hard to read, harder to debug, and almost impossible to keep in sync with what’s actually running in Azure. One missing comma or brace can block a...

Is there a transcript available for this episode?

Yes, a full transcript is available for this episode. You can read the complete transcript on the episode page.

Can I download this M365.FM - Modern work, security, and productivity with Microsoft 365 episode?

Yes, you can download this episode by clicking the download button on the episode player, or subscribe to the podcast in your preferred podcast app for automatic downloads.
URL copied to clipboard!