Is there a way to create Azure Storage Queues through ARM templates? I can find a way to create containers, but cannot find anything related to creation of Storage Queue through ARM.
Seems that support for it is available, but maybe not officially as of 29.07.2020. The documentation is available at: https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts/queueservices/queues
Here is what worked for me:
"variables": {
"storageAccountName": "[toLower(concat('sa', 'demo', parameters('environmentName')))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2019-06-01",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
},
{
"name": "[concat(variables('storageAccountName'), '/default/myqueue01')]",
"type": "Microsoft.Storage/storageAccounts/queueServices/queues",
"apiVersion": "2019-06-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
],
"properties": {
"metadata": {}
}
}
],
Let me know if it works for you.
ARM gradually adds support for creation of sub-resources of storage accounts:
ARM template describing a storage account with a queue:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environment": {
"type": "string",
"allowedValues": [
"dev",
"test",
"prod"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"storageAccountSkuName": {
"type": "string",
"defaultValue": "Standard_LRS"
},
"storageAccountSkuTier": {
"type": "string",
"defaultValue": "Standard"
}
},
"variables": {
"uniquePart": "[take(uniqueString(resourceGroup().id), 4)]",
"storageAccountName": "[concat('mystorageaccount', variables('uniquePart'), parameters('environment'))]",
"queueName": "myqueue"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2019-06-01",
"sku": {
"name": "[parameters('storageAccountSkuName')]",
"tier": "[parameters('storageAccountSkuTier')]"
},
"kind": "StorageV2",
"properties": {},
"resources": [
{
"name": "[concat('default/', variables('queueName'))]",
"type": "queueServices/queues",
"apiVersion": "2019-06-01",
"dependsOn": [
"[variables('storageAccountName')]"
],
"properties": {
"metadata": {}
}
}
]
}
]
}
Before the support was added, the resources could be created via other means (best to worst):
The option number two for queues uses the az storage queue create
command.
You can add in the Azure CLI task in Azure DevOps, hook up the subscription and the give it an inline script like so:
call az storage queue create -n "awesome-queue-1" --connection-string "$(storageAccountConnectionString)"
If you're using a Windows build agent then you need to include the
call
to ensure that multiple lines are executed. If you're on a Linux agent thencall
can be omitted.That connection string can be exported from your ARM template as an output parameter and then sucked into the DevOps variables using ARM Outputs.
-- Simon Timms: Creating Storage Queues in Azure DevOps @ Western Devs
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With