ARM templates are a form of infrastructure as code, a concept where you define the infrastructure you need to be deployed. The template defines the resources, and the Azure ARM management layer is responsible for creating the infrastructure. Templates use a JavaScript Object Notation (JSON) syntax that also includes advanced capabilities. Templates use declarative syntax. In this way, you can specify what to deploy without writing a series of commands that specify how to deploy it.
The template includes the following parts:
- Parameters - values that allow you to use the same template in different environments during deployment.
- Variables - values to be reused in different templates. Variables can use values from parameters.
- User-Defined Functions - lets you define customized elements to simplify templates.
- Resources - specifies Azure resources to be deployed.
- Outputs - the return value of the deployed resource.