Using conditions in Azure ARM templates

nitinb picture nitinb · Mar 9, 2016 · Viewed 8.4k times · Source

Is there any way to use conditional statements in templates?

for example I am building template which will have vms with data disks on QA and Production, but no data disks on Dev. Another scenario would be there are some extensions only needs to be installed in prod VMs but no where else.

Any help is appreciated.

Answer

dbarkol picture dbarkol · Jun 6, 2017

You can leverage the newly released comparison functions to accomplish most of this.

Here is an example of how you would use a parameter to determine if a storage account should be deployed.

Parameter:

"deployStorage": {
  "type": "string"
},

Resource:

{
  "condition": "[equals(parameters('deployStorage'),'yes')]",
  "name": "[variables('storageAccountName')]",
  "type": "Microsoft.Storage/storageAccounts",
  "location": "[resourceGroup().location]",
  "apiVersion": "2017-06-01",
  "sku": {
    "name": "[parameters('storageAccountType')]"
  },
  "kind": "Storage"
}

Notice the new condition property in the resource along with the most recent API version for the storage provider.

Reference: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-comparison