Hello @@Mary Vineela Lella
Only if it is mandatory for other reasons you can use something like:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"resourceGroupName": {
"type": "string",
"metadata": {
"description": "Name of the resource group to create."
}
},
"storageAccountName": {
"type": "string",
"metadata": {
"description": "Name of the storage account to create."
}
}
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2022-09-01",
"name": "createResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2022-09-01",
"name": "[parameters('resourceGroupName')]",
"location": "[parameters('location')]"
}
]
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2022-09-01",
"name": "createStorageAccount",
"dependsOn": [
"createResourceGroup"
],
"properties": {
"mode": "Incremental",
"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-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
]
}
}
}
]
}
In this example, the createResourceGroup
deployment resource deploys a Resource Group, and the createStorageAccount
deployment resource deploys a Storage Account. The createStorageAccount
deployment resource depends on the createResourceGroup
deployment resource, so the Resource Group is created before the Storage Account is deployed.
- az deployment group create --resource-group <YourResourceGroup> --template-file nestedTemplate.json
https://video2.skills-academy.com/en-us/azure/azure-resource-manager/templates/linked-templates?wt.mc_id=knwlserapi_inproduct_azportal#nested-template
Otherwise you can :
- Separate Templates (Recommended)
- Create two separate ARM templates:
-
resource-group-template.json
: Contains only the resource group creation.
-
storage-account-template.json
: Contains the storage account and container creation.
- This template should take the
resourceGroupName
as a parameter, not create it.
- Two-Step Deployment
Step 1: Create Resource Group
- Use
New-AzSubscriptionDeployment
to deploy resource-group-template.json
.
- Step 2: Create Storage Account
I hope this helps!
Kindly mark the answer as Accepted and Upvote in case it helped!
Regards