Archived post: posted sometime between 2016 and 2022.

High-level notes on Azure ARM Templates

Expressions

Parameters

Variables

We can creatively use variables to create conditional logic.

Output

Output is useful for inspecting parameters during tests of the deployment.

Functions

Examples

Example: conditional logic with variables.

"parameters": {
   "envName": {
     "type": "string",
     "allowedValues": [
       "test",
       "prod"
     ]
   }
},
"variables": {
   "envSettings": {
     "test": {
       "instancesSize": "Small",
       "instancesCount": 1
     },
     "prod": {
       "instancesSize": "Large",
       "instancesCount": 4
     }
   },
   "currentEnvSettings": "[variables('envSettings')[parameters('envName')]]",
   "instancesSize": "[variables('currentEnvSettings').instancesSize]",
   "instancesCount": "[variables('currentEnvSettings').instancesCount]"
}

Example: output the instance size.

"outputs": {
   "actualInstanceSize" : {
     "type" : "string",
     "value": "[variables('instanceSize')]"
   }
}

See

https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates