0
0
Azurecloud~5 mins

Template deployment methods in Azure - Commands & Configuration

Choose your learning style9 modes available
Introduction
Deploying resources in Azure can be repetitive and error-prone if done manually. Template deployment methods let you define your infrastructure as code, so you can create and manage resources consistently and quickly.
When you want to create multiple Azure resources together in a repeatable way.
When you need to share your infrastructure setup with your team or automate deployments.
When you want to keep track of your infrastructure changes in version control.
When you want to deploy the same environment multiple times, like for testing or production.
When you want to avoid manual errors by using a predefined configuration.
Config File - azuredeploy.json
azuredeploy.json
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "metadata": {
        "description": "Name of the storage account to create"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[parameters('storageAccountName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
    }
  }
}

This JSON file is an Azure Resource Manager (ARM) template.

parameters: Defines input values like the storage account name.

resources: Describes the Azure resources to create, here a storage account in East US.

outputs: Returns useful info after deployment, like the resource ID.

Commands
Create a resource group named 'example-resource-group' in the East US region to hold your resources.
Terminal
az group create --name example-resource-group --location eastus
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-resource-group", "location": "eastus", "managedBy": null, "name": "example-resource-group", "properties": { "provisioningState": "Succeeded" }, "tags": {}, "type": "Microsoft.Resources/resourceGroups" }
--name - Specifies the resource group name
--location - Specifies the Azure region
Deploy the ARM template to the resource group, creating the storage account with the given name.
Terminal
az deployment group create --resource-group example-resource-group --template-file azuredeploy.json --parameters storageAccountName=examplestorageacct
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-resource-group/providers/Microsoft.Resources/deployments/deployment1", "name": "deployment1", "properties": { "provisioningState": "Succeeded", "outputs": { "storageAccountId": { "type": "String", "value": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-resource-group/providers/Microsoft.Storage/storageAccounts/examplestorageacct" } } }, "type": "Microsoft.Resources/deployments" }
--resource-group - Specifies the target resource group
--template-file - Specifies the ARM template file to deploy
--parameters - Passes parameters to the template
Verify that the storage account was created successfully by showing its details.
Terminal
az storage account show --name examplestorageacct --resource-group example-resource-group
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-resource-group/providers/Microsoft.Storage/storageAccounts/examplestorageacct", "location": "eastus", "name": "examplestorageacct", "primaryEndpoints": { "blob": "https://examplestorageacct.blob.core.windows.net/", "file": "https://examplestorageacct.file.core.windows.net/", "queue": "https://examplestorageacct.queue.core.windows.net/", "table": "https://examplestorageacct.table.core.windows.net/" }, "sku": { "name": "Standard_LRS", "tier": "Standard" }, "tags": {}, "type": "Microsoft.Storage/storageAccounts" }
--name - Specifies the storage account name
--resource-group - Specifies the resource group name
Key Concept

If you remember nothing else from this pattern, remember: ARM templates let you define and deploy Azure resources consistently using code.

Common Mistakes
Not creating the resource group before deploying the template.
The deployment fails because the target resource group does not exist.
Always create the resource group first using 'az group create' before deploying.
Using invalid or already taken storage account names.
Storage account names must be globally unique and follow naming rules, otherwise deployment fails.
Choose a unique, lowercase name between 3 and 24 characters with only numbers and letters.
Forgetting to pass required parameters when deploying the template.
The deployment will fail if required parameters are missing or incorrect.
Use the '--parameters' flag to provide all required inputs.
Summary
Create a resource group to hold your Azure resources.
Deploy an ARM template file with parameters to create resources automatically.
Verify the deployment by checking the created resources.