Azure Resource Manager Template – JSON

Author: Sakaldeep

July 26, 2017

This topic will be around what is  JSON template and how it is going to make your deployment easy and industry standard. Resource Manager template is JSON file that enables to quickly deploy infrastructure as code to Azure. Infrastructure as code means treat your network, server, application as a code. Rather than deploying network and wait for the outcome and then deploy server and same for application, program it with JSON template. In the template, we have to fill up all the required details such as resource group, storage account, VM size, location and it will deploy the resources for you. The same template can be used to deploy the solution to the other organization by simply changing the value with the minimal effort– either a few mouse clicks or running a small PowerShell script. Let the template deploy solution for you and you do something else.

To start with templates, you need a JSON editor. Visual Studio Code is a lightweight, open-source, cross-platform code editor. It supports creating and editing Resource Manager templates.

Install Visual Studio Code and add Azure extension

  1. Install Visual Studio Code from

  2. To install the Azure Resource Manager Tools open VS Code and click on Extensions Pane, and search the extension.

  3. Restart VS Code to enable the extension

Start with Template

 First of all start with a blank template that includes only the basic sections of a template then we will add the details.

  1. Create a new file.
  2. Copy and paste the following JSON syntax into the newly created file:

    "$schema": "",
    "contentVersion": "",
    "parameters": { },
    "variables": { },
    "resources": [ ],
    "outputs": { }

  3. Save the file as AzureRMTemplate.json.

Now, lets understand the syntax of the JSON template. It has four section ParametersVariablesResources and Outputs. Let’s understand each of them.


While deploying anything via the Azure Portal, you are asked a bunch of questions such as vm name, user name, password, network address as per the customer requirements. we use parameters to ask for configuration data to customize the deployment. The below simple example shows how we can ask for a username and password for one or more virtual machines that a template will deploy.

When a template with the above details will be deployed, two fields (ServerAdminName and ServerPassword) will appear and request data entry to configure the deployment.

Understand the {} delimited definition of ServerAdminName is followed by a comma; this comma designates that another parameter will follow. The last parameter will not have a trailing comma.

we can also supply a default value for the parameters that can be overwritten at the time of deployment.


Variable is used to store values rather than hard-coding these values in the Resources section to reuse value.


This is the section of the template where you will do most of the work. Here we describe storage accounts, networks, NICs, virtual machines, load balancers, and so forth. Parameters and variables are used to customize each deployment. Each type of resource is described using the Microsoft Azure JSON schema.


In this section, you can define outputs from your template. These values can be for example a connection string from a deployment of a database. This can then be passed into another deployment to use for example as a connection string for a website you are going to deploy.

There is a repository of community templates on GitHub, download a template and try to understand all the section in more details before writing your first JSON template.

I hope now you are ready to deploy the first resource using a template. In the next post, we will deploy a storage account using a template.

Total visits : 572