Deploying ARM Template Spec fails w/ missing Main Template parameters. I'm following Create Template Spec to create an ARM Template Spec via ARM template definition. But I hit an error when trying to deploy this:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"template_location": { "type": "string" },
"template_name": { "type": "string" },
"template_version": { "type": "string" }
},
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2021-05-01",
"name": "[parameters('template_name')]",
"location": "[parameters('template_location')]",
"properties": {
"description": "Spec to deploy IPv4 resource with optional IP Tag.",
"displayName": "IPv4 Template Spec"
}
},
{
"type": "Microsoft.Resources/templateSpecs/versions",
"apiVersion": "2021-05-01",
"name": "[format('{0}/{1}', parameters('template_name'), parameters('template_version'))]",
"location": "[parameters('template_location')]",
"dependsOn": ["[resourceId('Microsoft.Resources/templateSpecs', parameters('template_name'))]"],
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"cloud_suffix": { "type": "string" },
"ip_tags": { "type": "object" },
"resource_name": { "type": "string" },
"resource_region": { "type": "string" }
},
"resources": [
{
"type": "Microsoft.Network/publicIPAddresses",
"name": "[parameters('resource_name')]",
"apiVersion": "2020-05-01",
"location": "[parameters('resource_region')]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static",
"idleTimeoutInMinutes": 4,
"dnsSettings": {
"domainNameLabel": "[parameters('resource_name')]",
"fqdn": "[concat(parameters('resource_name'), '.', parameters('resource_region'), '.cloudapp', parameters('cloud_suffix'))]"
},
"ipTags": "[parameters('ip_tags')]"
}
}
]
}
}
}
]
}
I receive the following Template Spec deployment failure message, where it is expecting a main template parameter to be provided:
"InvalidTemplate\",\"message\":\"Unable to process template language expressions for resource '/subscriptions//resourceGroups//providers/Microsoft.Resources/templateSpecs/public_ipv4/versions/1.0.0.0' at line '20' and column '5'. 'The template parameter 'resource_name' is not found.
I've tried a number of permutations, including providing the resource_name in the template spec deployment, but get the following error:
AzCliExecutionException: Exit Code:1, Result:unrecognized template parameter 'resource_name'. Allowed parameters: template_location, template_name, template_version
I've also tried some conditional logic like:
"name": "[if(empty(parameters('resource_name')), parameters('template_name'), parameters('resource_name'))]",
But I can't successfully deploy the ARM Template Spec. How do I unblock?