ARM Template
Template Format |
Blank Template Deploy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ARM -Template : Azure Resource Manager Template (Infrastructure as code)
- There are many ways to create resource in Azure through Azure portal, CLI, Powershell, biceps, ARM templates, etc.
- ARM Templates are used for creating azure resources through automate process using json scripting.
- It provides version control.
Template Format: it has the following elements.
- {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", (it is required element, it define where you want to deploy template like at management group/subscription/tenant, click here)
"languageVersion": "", : ( it is used for language)
"contentVersion": "", : (It is required element, it is used for version control)
"apiProfile": "", :
"definitions": { },
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ], /* or "resources": { } with languageVersion 2.0 */ : (It is required element, which resource need to deploy)
"outputs": { }
}
Editor: Visual Studio Code, to create the template you need json editor with Resource Manager Tools Extension.
- Download Visual Studio Code and install it.
- open visual studio and click on extensions and search Azure Resource Manager Tools. Install it.

- When you open any file make sure in the bottom azure resource manager is selected instead of plain text, some time when it is in restricted mode, on left bottom corner click on notification and click trust button.
Deploy Blank Json Template:
- jason starts with open and close curly bracket { code }
- "$schema": when you type this it will give an option to choose where you want to deploy.

- Select deploymentTemplate.json: which is at resource level. enter comma and go to next line.
- "contentVsrsion": "1.0.0.0",
- "resources": [ ]

- save the file blank.json and now we need to execute this json file which can be done with powershell, CLI etc
- Validate: To validate the code, go to jsonlint.com and enter code and it will prompt you if there is any syntax or other errors.
- Install AZ module in powershell: ps:/Install-Module -Name Az -Repository PSGallery -Force
- Connect to Azure: Connect-AzAccount or login-AzAccount

- Create a resource group to run the above script "blank_template": New-AzResourceGroupDeployment -Name
- Get-AzSubscription , copy subscription and get into subscription select-AzSubscription -Subscription paste_subscription
- New-AzResourceGroup -Name "TestRG" -Location "UK South" (resource group does not accept blank space), click for script.
- Create a variable of the location of file $blanktemplate = "C:\Users\Admin\Desktop\star cloud\devops\azure\ARM_Template\blank.json"
- Deploy the blank.json file : New-AzResourceGroupDeployment -Name blanktemplate -ResourceGroupName TestRG -TemplateFile $blanktemplate

- run both lines. deployment name = blanktemplate is deployed in TestRG.

- Check in azure portal / TestRG/ deployment.

Storage Account:
- In the resources enter resource provider, insert {} and inside enter type=resource type and select "Microsoft.storage.account",
- "apiversion" : select latest and enter comma
- "" a popup with multiple options appears, select name and enter name of storage ="starstorage1" and enter comma
- "" select location (required) "UK South" enter comma
- "" sku (replication) select and select {} and inside "" and select name = "Standard_LRS",
- "" kind (account kind) : select storage type "StorageV2" do not enter comma as it ends here.
- Click for Jason file.
- Validate the code and save it (storgeaccount.jason)

- Open powershell and define location of jason file and run.

- Storage account created.
- Delete Storage Account: Remove-AzStorageAccount -ResourceGroupName "TestRG" -AccountName "storageaccount" -Force
Parameter:
- In the above script, storage account has been created where we hardcoded storage account name "storageaccount1", the same template cannot be rerun as we need to change name. Instead of name hardcoded we can define parameter and the same script can be run multiple times to create storage account. It will prompt to enter storage account name.
- Define parameter and call in the resource. click for jason file.

- Parameter "storageaccount" has been defined and it is called in resource to create storage account.
- Deploy the jason file (storageaccountwithparameter.jason)

- it will prompt to enter name and will create storage account.
- Run same script again and you can enter different name and storage account will be created.
- code
- code
Function:
- code
- Function define after parameter and variable.
- code
- code
- code
- code
- code
- code
- code
- code
Variable:
- Define dynamic values or element/properties, in the above function scenario we have define dynamic location taken from resource group but we enter storage account name manually. here we use dynamic storage name.
- Name must be unique for the storage account.
- Variable define after parameter and before resource.
- we define one more parameter of "storagesku" in the above code and then we define variable.

- run the above script.

- code
- code
- code
Multiple Resource Creation: Storage Account + Web App
- Dependencies: some resources are depend on other resoruce (Web app service depend on web app service plan, sql database depend on sql server, VM depend on virtual network) etc..
- Webapp Service Plan creates first then Webapp Service.
- You can enter values of app service plan and web app name in parameter but it wil be define as varable so a unique name can be define.
- Get code file

- in the above parameters has been defined.

- Variable, Resources (two), depends on defined.
- code
- code
Multiple Resource Creation: Web APP Service Plan + Web App
- Json Code
- code
- code
- code
- code
- code
- code
- code
- code
- code
8
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
9
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
10
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
11
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
12
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
13
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
14
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
15
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
16
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
17
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
18
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
19
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
20
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
21
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
22
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
23
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
24
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
25
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
26
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
27
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
28
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
29
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code
30
- code
- code
- code
- code
- code
- code
- code
- code
- code
- code