Skip to content

Use type string for location parameters#

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

Location parameters should use a string value.

Description#

The template parameter location is a standard parameter recommended for deployment templates. The location parameter is a intended for specifying the deployment location of the primary resource. When including location parameters in templates use the type string.

Additionally, the template may include other resources. Use the location parameter value for resources that are likely to be in the same location. This approach minimizes the number of times users are asked to provide location information.

Recommendation#

Consider updating the location parameter to be of type string.

Examples#

Configure with Azure template#

To author templates that pass this rule:

  • If the location parameter is specified, it should be set to a string type.

For example:

Azure Template snippet
{
    "$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": "The location resources will be deployed."
            }
        }
    },
    "resources": [
        {
            "type": "Microsoft.Network/networkSecurityGroups",
            "apiVersion": "2021-02-01",
            "name": "nsg-001",
            "location": "[parameters('location')]",
            "properties": {
                "securityRules": [
                    {
                        "name": "deny-hop-outbound",
                        "properties": {
                            "priority": 200,
                            "access": "Deny",
                            "protocol": "Tcp",
                            "direction": "Outbound",
                            "sourceAddressPrefix": "VirtualNetwork",
                            "destinationAddressPrefix": "*",
                            "destinationPortRanges": [
                                "3389",
                                "22"
                            ]
                        }
                    }
                ]
            }
        }
    ]
}

Configure with Bicep#

To author bicep source files that pass this rule:

  • If the location parameter is specified, it should be set to a string type.

For example:

Azure Bicep snippet
@description('The location resources will be deployed.')
param location string = resourceGroup().location

Comments