The ARM template is JavaScript Object Notation (JSON) file that defines resources which will be deployed and is made up of different sections.
In its simplest structure, a template has the following elements:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "",
"apiProfile": "",
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ],
"outputs": { }
}
Elements
$Schema
Location of the JSON schema file that describes the version of the template language.
contentVersion
Version of the template (such as 1.0.0.0). You can provide any value for this element. Use this value to document significant changes in your template.
apiProfile
An API version that serves as a collection of API versions for resource types. Use this value to avoid having to specify API versions for each resource in the template.
parameters
Allows for specifying values to be provided when deployment is executed to customize resource deployment. For example specifying environment (such as dev, test, and production). Without parameters the template will always deploy with the same names, locations and properties.
variables
These do not need to be defined but can be used to simplify the template by constructing values that can be used throughout the template.
functions
User-defined functions that are available within the template.
resources
Resource types that are deployed or updated in a resource group or subscription.
outputs
Values that are returned from deployment are specified here