Skip to main content

Azure Resource Manager

The deployment and management layer that all Azure tools (Portal, CLI, PowerShell, SDKs) go through to create, update, and delete resources, processing requests as declarative JSON templates with built-in dependency resolution.

Azure Resource Manager

ARM is the API layer underneath every Azure interaction — the Portal, CLI, and Terraform providers all ultimately call ARM.

Why It Matters in Production

Zerodha's infrastructure-as-code pipeline submits ARM templates through CI/CD rather than manual Portal clicks, so every production change is version-controlled and reviewable before it reaches zerodha-prod-rg.

Bash
az deployment group create --resource-group zerodha-prod-rg \
--template-file main.json --parameters params.json
Remember

ARM operations are idempotent — re-running the same template against existing resources updates them to match, it doesn't duplicate them.

Frequently Asked Questions

Why does everything in Azure eventually go through Resource Manager?

ARM exists as a single control plane so that the Portal, CLI, PowerShell, Terraform, and Bicep all produce consistent, auditable results instead of each tool managing resources through its own path. Every request — whether typed into the Portal or submitted as an ARM/Bicep template — is normalized into the same declarative JSON representation, gets RBAC-checked, and is logged in Activity Log. This is also why ARM template deployments can resolve resource dependencies automatically rather than requiring manually ordered creation steps.

What's a practical pitfall when writing ARM/Bicep templates?

Relying on implicit dependency resolution instead of explicit `dependsOn` when a dependency isn't expressed through a direct property reference. ARM infers dependencies when one resource's definition references another's ID, but if two resources are related only through naming convention or external configuration, ARM has no way to know the order and may attempt to create them in parallel, causing intermittent deployment failures that are hard to reproduce because they depend on race timing.