You are viewing a free preview of this lesson.
Subscribe to unlock all 10 lessons in this course and every other course on LearningBro.
Azure Resource Manager (ARM) is the deployment and management service for Azure. Every interaction with Azure — whether through the portal, CLI, SDKs, or IaC tools — passes through ARM. Understanding ARM is essential for writing effective Infrastructure as Code on Azure.
ARM is the control plane for Azure. It receives all API requests, authenticates and authorises them, and then forwards them to the appropriate resource provider (e.g., Microsoft.Compute for VMs, Microsoft.Storage for storage accounts).
Azure Portal
Azure CLI → Azure Resource Manager → Resource Provider → Resource
Bicep / ARM JSON (e.g., Microsoft.Compute)
Terraform
A resource group is a logical container that holds related Azure resources. Every resource must belong to exactly one resource group.
az group create --name rg-webapp-prod --location uksouth
Resource groups provide:
A subscription is a billing and access boundary. An Azure account can have multiple subscriptions to separate workloads, departments, or environments.
Tenant (Entra ID)
└── Subscription (billing boundary)
└── Resource Group (logical container)
└── Resource (VM, storage, etc.)
Management groups sit above subscriptions and allow you to organise subscriptions into a hierarchy. You can apply Azure Policy and RBAC at the management group level.
An ARM deployment is the act of submitting a template to ARM for processing. Deployments can target different scopes:
| Scope | Command | Use case |
|---|---|---|
| Resource group | az deployment group create | Most common — deploy resources into a resource group |
| Subscription | az deployment sub create | Create resource groups, apply policies |
| Management group | az deployment mg create | Apply governance across subscriptions |
| Tenant | az deployment tenant create | Set up management group hierarchy |
az deployment group create \
--resource-group rg-webapp-prod \
--template-file main.json \
--parameters @parameters.prod.json
ARM supports two deployment modes:
| Mode | Behaviour |
|---|---|
| Incremental (default) | Adds or updates resources in the template; leaves existing resources untouched |
| Complete | Adds or updates resources in the template; deletes resources not in the template |
Subscribe to continue reading
Get full access to this lesson and all 10 lessons in this course.