Introduction
Managing cloud infrastructure manually becomes difficult as applications grow.
Imagine creating:
Virtual Machines
Databases
Storage Accounts
Networking
…one by one through the Azure Portal every time.
This is where Azure Resource Manager (ARM) becomes powerful.
ARM allows you to:
Deploy infrastructure as code
Automate Azure resource creation
Manage resources consistently
Reuse templates across environments
In modern cloud development, ARM is one of the most important concepts for:
DevOps
CI/CD
Infrastructure Automation
Cloud Architecture
What is Azure Resource Manager (ARM)?
Azure Resource Manager (ARM) is the deployment and management service for Azure.
It helps you:
Create
Update
Delete
Organize
Azure resources using:
Templates
APIs
CLI
PowerShell
ARM Architecture
User / DevOps Engineer
↓
Azure Resource Manager
↓
---------------------------------
| VM | Storage | SQL | Network|
---------------------------------ARM acts as the central management layer between users and Azure resources.
Why ARM is Important
Without ARM:
Manual deployments
Human errors
Difficult scaling
Inconsistent environments
With ARM:
Repeatable deployments
Automation
Version-controlled infrastructure
Faster environment setup
Core ARM Concepts
Resource
A resource is any Azure service.
Examples:
Virtual Machine
Storage Account
SQL Database
App Service
Resource Group
A logical container for Azure resources.
Example:
Plain text
ECommerce-Production-RG
Contains:
API App Service
SQL DB
Storage Account
ARM Template
A JSON file that defines infrastructure.
Infrastructure as Code (IaC)
Example:
Create VM
Create Storage
Configure Networking
All automatically.
Declarative Syntax
ARM uses declarative configuration.
You define: “What should exist”
Not: “How to create step-by-step”
ARM Template Structure
Basic ARM template:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": []
}Main Sections Explained
| Section | Purpose |
|---|---|
| $schema | Template schema |
| contentVersion | Version info |
| parameters | Input values |
| variables | Reusable values |
| resources | Azure resources |
| outputs | Return values |
Practical Example 1: Create Storage Account
ARM Template
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "mystorageaccount123",
"location": "Central India",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {}
}
]
}Deploy ARM Template
Using Azure CLI:
az deployment group create \
--resource-group MyResourceGroup \
--template-file storage.jsonWhat Happens?
ARM:
Reads JSON template
Validates configuration
Creates storage account
Ensures desired state
Practical Example 2: App Service + SQL Database
ARM Template
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-09-01",
"name": "my-app-plan",
"location": "Central India",
"sku": {
"name": "B1"
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-09-01",
"name": "my-dotnet-api",
"location": "Central India",
"dependsOn": [
"Microsoft.Web/serverfarms/my-app-plan"
],
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', 'my-app-plan')]"
}
}
]
}
Join the conversation! Your thoughts help the community grow.