Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Template deployment methods
📖 Scenario: You are working in a cloud team that manages resources on Microsoft Azure. Your team uses ARM templates to deploy infrastructure consistently. You want to practice deploying a simple storage account using different template deployment methods.
🎯 Goal: Build an ARM template deployment step-by-step. You will create the initial template data, add configuration parameters, apply the deployment logic, and finalize the deployment with outputs.
📋 What You'll Learn
Create a basic ARM template JSON structure
Add parameters for resource naming
Define a storage account resource using the parameters
Add outputs to show the storage account name
💡 Why This Matters
🌍 Real World
ARM templates are used to deploy Azure resources consistently and repeatedly with infrastructure as code.
💼 Career
Understanding ARM template structure and deployment methods is essential for Azure cloud engineers and DevOps professionals.
Progress0 / 4 steps
1
Create the initial ARM template structure
Create a variable called template and assign it a dictionary with keys $schema set to "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", contentVersion set to "1.0.0.0", and an empty list for resources.
Azure
Hint
Start by creating a dictionary with the required ARM template keys and empty resources list.
2
Add parameters for the storage account name
Add a parameters key to the template dictionary. It should be a dictionary with a key storageAccountName that has a nested dictionary with type set to "string" and metadata containing description set to "Name of the storage account".
Azure
Hint
Add a parameters section with storageAccountName as a string and a description.
3
Add the storage account resource using the parameter
Add a dictionary to the resources list in template. This dictionary should have type set to "Microsoft.Storage/storageAccounts", apiVersion set to "2022-09-01", name set to [parameters('storageAccountName')], location set to [resourceGroup().location], and kind set to "StorageV2". Also include a sku dictionary with name set to "Standard_LRS".
Azure
Hint
Add a storage account resource dictionary inside the resources list using the parameter for the name.
4
Add outputs to show the storage account name
Add an outputs key to the template dictionary. It should be a dictionary with a key storageAccountNameOutput that has a nested dictionary with type set to "string" and value set to [parameters('storageAccountName')].
Azure
Hint
Add an outputs section to return the storage account name parameter value.
Practice
(1/5)
1. What is the main purpose of using an Azure Resource Manager (ARM) template for deployment?
easy
A. To manually create resources one by one in the Azure portal
B. To write code for a web application
C. To automate the creation and configuration of cloud resources
D. To monitor resource usage and billing
Solution
Step 1: Understand ARM template purpose
ARM templates are JSON files that define infrastructure and configuration in a repeatable way.
Step 2: Compare options
Only To automate the creation and configuration of cloud resources describes automation of resource creation, which is the core use of ARM templates.
Final Answer:
To automate the creation and configuration of cloud resources -> Option C
Quick Check:
ARM templates automate deployments [OK]
Hint: Templates automate resource setup, not manual or monitoring tasks [OK]
Common Mistakes:
Confusing templates with manual portal actions
Thinking templates are for app coding
Mixing deployment with monitoring
2. Which Azure CLI command correctly deploys a resource group using an ARM template file named template.json with parameters in params.json?
easy
A. az resource deploy --group MyGroup --template template.json --params params.json
B. az group create --template template.json --params params.json
C. az deployment create --resource MyGroup --template template.json --parameters params.json
D. az deployment group create --resource-group MyGroup --template-file template.json --parameters params.json
Solution
Step 1: Identify correct Azure CLI syntax for group deployment
The correct command is az deployment group create with flags for resource group, template file, and parameters.
Step 2: Check each option
Only az deployment group create --resource-group MyGroup --template-file template.json --parameters params.json uses the correct command and flags as per Azure CLI documentation.
Final Answer:
az deployment group create --resource-group MyGroup --template-file template.json --parameters params.json -> Option D
Quick Check:
Use az deployment group create for group deployments [OK]
Hint: Use 'az deployment group create' with --resource-group flag [OK]
Common Mistakes:
Using 'az group create' which creates resource groups, not deploys templates
Wrong command verbs like 'deploy' or 'resource deploy'
Incorrect flag names like --template instead of --template-file
3. Given this Azure CLI command: az deployment sub create --location eastus --template-file main.json --parameters storageAccountName=mystorage What is the scope of this deployment?
medium
A. Deploys resources at the management group level
B. Deploys resources at the subscription level
C. Deploys resources inside a resource group
D. Deploys resources only in the eastus resource group
Solution
Step 1: Analyze the command scope
The command uses az deployment sub create, which means deployment at the subscription scope.
Step 2: Understand location and parameters
The --location flag is required for subscription deployments; parameters define resource details.
Final Answer:
Deploys resources at the subscription level -> Option B
Quick Check:
az deployment sub create = subscription scope [OK]
Hint: 'sub create' means subscription-level deployment [OK]
Common Mistakes:
Confusing subscription with resource group scope
Assuming location defines resource group
Mixing management group with subscription
4. You run this command to deploy a template: az deployment group create --resource-group MyGroup --template-file template.json But you get an error saying parameters are missing. What is the likely cause?
medium
A. The template requires parameters but none were provided
B. The resource group MyGroup does not exist
C. The template file template.json is not valid JSON
D. The Azure CLI is not installed
Solution
Step 1: Understand error message
The error about missing parameters means the template expects input values not given in the command.
Step 2: Check command and options
The command does not include --parameters, so required parameters are missing.
Final Answer:
The template requires parameters but none were provided -> Option A
Quick Check:
Missing parameters cause deployment errors [OK]
Hint: Always provide required parameters with --parameters flag [OK]
Common Mistakes:
Assuming resource group missing causes parameter error
Ignoring template validation errors
Not verifying Azure CLI installation
5. You want to deploy a template at the management group level to apply policies across multiple subscriptions. Which Azure CLI command should you use?
hard
A. az deployment mg create --management-group-id MyMgmtGroup --location eastus --template-file policy.json
B. az deployment group create --resource-group MyGroup --template-file policy.json
C. az deployment sub create --subscription MySubscription --template-file policy.json
D. az deployment create --template-file policy.json
Solution
Step 1: Identify deployment scope for management groups
Management group deployments use az deployment mg create with the management group ID.
Step 2: Compare options
az deployment mg create --management-group-id MyMgmtGroup --location eastus --template-file policy.json correctly uses the management group deployment command and specifies the management group ID.
Final Answer:
az deployment mg create --management-group-id MyMgmtGroup --location eastus --template-file policy.json -> Option A
Quick Check:
Use az deployment mg create for management group scope [OK]
Hint: Use 'az deployment mg create' for management group deployments [OK]
Common Mistakes:
Using group or subscription commands for management group scope