https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-syntax

Template Advantages

Template Schema

JSON, data stored as obj in text, key=value, each key is a str where the value can be:

{
    "$schema": "",​
    "contentVersion": "",​
    "parameters": {},​
    "variables": {},​
    "functions": [],​
    "resources": [],​
    "outputs": {}​
}
NameRequiredDesc
schemaJepplocation of sch. that describes version of lang.
contentVersionJeppcan provide any value, i. e 1.0.0.0, next 1.0.0.1 (major/min)
parameters*NAval’s provided when deploy is done or executed to customize
variablesNAval’s used as JSON pieces to simplify exp
functionsNAUDF that are available in temp
resourcesJeppr types for deploy/update in a rg
outputsNareturn values

*parameters limit 256

Template Parameters

QuickStart Templates

https://azure.microsoft.com/en-us/resources/templates/

More 1

Functional testing

Formatting does help but it is still a single block of text that doesn’t have an actual testing framework, so testing really comes down to performing a deployment and seeing what it creates. If used as part of a wider suite of tests, then the test process should be:

Deploy to a test environment, possibly a dev/test subscription in Azure
Deploy code and application tests
Execute tests
Report results

If all the tests return ‘success’ then the template is, by definition, valid.

Basic testing

PowerShell function

Test-AzureRmResourceGroupDeployment

it will take your template, parse it and check that it is syntactically correct as well as validating that you meet requirements such as not hitting quote limits before you deploy.

Defining dependencies

Deploy resources in a specific order, dependsOn section, reference function (use an account key from a storage account which may not be known at build time)

More 2

https://sharegate.com/blog/take-your-azure-resource-manager-arm-template-game-to-next-level

https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource?tabs=json

More 3, IAC, Infrastructure as code

https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/infrastructure-as-code