Skip to content

Define template parameters#

Operational Excellence · All resources · Rule · 2021_03 · Awareness

Each Azure Resource Manager (ARM) template file should contain a minimal number of parameters.

Description#

Azure templates support parameters, which are inputs you can specify when deploying the template resources. Each template can support up to 256 parameters.

When defining template parameters:

  • Minimize the number of parameters that require input by specifying a defaultValue.
  • Use parameters for resource names and deployment locations.
  • Use variables or literal resource properties for values that don't change.

Recommendation#

Consider defining a minimal number of parameters to make the template reusable.

Examples#

Configure with Azure template#

To author templates that pass this rule:

  • Define at least one parameter.

For example:

Azure Template snippet
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "metadata": {
        "name": "Managed Identity",
        "description": "Create or update a Managed Identity."
    },
    "parameters": {
        "identityName": {
            "type": "string",
            "metadata": {
                "description": "The name of the Managed Identity."
            }
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
                "description": "The Azure region to deploy to.",
                "example": "eastus"
            }
        },
        "tags": {
            "type": "object",
            "metadata": {
                "description": "Tags to apply to the resource.",
                "example": {
                    "service": "app1",
                    "env": "prod"
                }
            }
        }
    },
    "variables": {
        "tenantId": "[subscription().tenantId]"
    },
    "resources": [
        {
            "comments": "Create or update a Managed Identity",
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
            "apiVersion": "2018-11-30",
            "name": "[parameters('identityName')]",
            "location": "[parameters('location')]",
            "properties": {
                "tenantId": "[variables('tenantId')]"
            },
            "tags": "[parameters('tags')]"
        }
    ]
}

Notes#

This rule is not applicable and ignored for templates generated with Bicep, PSArm and AzOps. Generated templates from these tools may not require any parameters to be set.

Comments