In my previous article,  Azure App Service: Create Web Apps Using Resource Manager Template In Visual Studio, we created a basic Azure App Service web app using Quick Start ARM templates available in Visual Studio. We didn’t go through the content of the ARM template.

Azure ARM templates allow us to achieve “Infrastructure as a Code”. Yes, you can create/deploy your infrastructure using Code.

What is ARM Template?

ARM template is a .JSON file and by using it, you can instruct ARM (Azure Resource Manager) to provide you the required infrastructure services in a declarative manner.

Let’s take a blank template now and go through the JSON file in order to understand its elements.

Open Visual Studio (I’m using Visual Studio 2013) and create a New Project -> Select Cloud -> Azure Resource Group.

Once you click OK in the previous step, Visual Studio displays all the available templates as shown below.

Now, select “Blank Template” and click “OK”.

Visual Studio will create a couple of files which are described in my previous article.

The details are shown below about the elements of the. JSON file (ARM template).

Element name Required Description
$schema Yes Location of the JSON schema file that describes the template language. You should use the same for all the template files that you author.The JSON files use a schema which is referenced at the top of each file. You can download the schema and analyze it if you want to understand it better. The schema defines what elements are allowed, the types and formats of fields, the possible values of enumerated values, and so on.
contentVersion Yes Version of the template
Parameters No Instead of hard coding the values in the template file, you can provide the facility of passing them as parameters. Just like passing values to functions by external resources who would like to utilize the template.
variable No These are internal to the template. External resources will not have access to these variable. These are much like variables within the functions.
Resources Yes Here comes the important node. This is where we specify the resources which you would like to create. You can even have nested resources. You can specify whether you want to deploy “Complete” or “Incremental” resources.
output No If you want to return any output value to the caller.

Please note that it is not mandatory to use Visual Studio to create / author the. JSON file. You can use any of your favorite editors to author your ARM templates. I’m using Visual Studio as it is very easy to author the ARM template using Visual Studio features like Intellisense, JSON Outline tools etc. which we will be looking at in our future articles.
A few advantages of using ARM templates are shown below.

  • You can declaratively define your infrastructure with the help of the ARM templates.
  • You can reuse these templates to deploy the resources in multiple environments. For example, if you author an ARM template to create a WebApp + SQL for your Dev environment, you can utilize the same for your Staging as well by making very little changes to the parameter list.

For more details about the ARM, template please refer Official documentation.