Type to search




Suppose you’re an IT professional targeted at infrastructure. In that case, you, in all likelihood, already realize the significance and splendor of ARM Templates, in which we have a declarative way to construct out our Azure environments. If you are a developer, it’s miles just any other JSON record that you recognize inside out.

At the top of the day, it doesn’t rely on your cup of tea (dev or infra); you may see the advantages of using ARM Templates. And if you may combine that with Azure DevOps, the sky is not the restriction because you may have pipelines for your numerous environments, which will be spread among premium subscriptions. You can have a consistent deployment no matter what.

In this text, I need to consciousness on one of the most vital capabilities, the resource, and how we can leverage that to create some order inside the deployment procedure using the dependsOn element. We will apply a straightforward situation: First, we will make a digital community using ARM Templates. Later on, we can create network protection corporations and accomplice them with the virtual community.


Top investment rounds for cloud computing startups in 2017-18 Using resource characteristics When referencing other assets in ARM Templates, we need to provide their specific identifier to find the aid. Using the ResourceID attribute, we can offer a few records and retrieve any given asset’s proper resource ID.

The feature is simple to apply. In its primary form, we need to provide just two pieces of statistics which might be the valuable resource kind and resource call, but, in some conditions, we want extra information to discover the valuable resource. We can add subscription identity, helpful resource organization name (in situations where the useful resource is in a different willing resource organization), and so on.

ResourceId(<subscriptionID>,<ResourceGroupName>,<Resource-Type>, <ResourceName1>,<ResourceName2>) You can be thinking, where do I locate the Resource Type? There are numerous ways to do this. The first way is to look for it on this Microsoft Azure useful resource web page right here; the second option is while the use of ARM Templates, observe the type line of the resource and you may find it there; a third and clean manner to identify the choice is to test the identification of the item. It affords you the resource kind on it. (We will find out a way to retrieve the ID in the next segment.)

We were using Resource Explorer to become aware of the ID of any given helpful resource. There are several techniques to find out the ID of any shared beneficial resource. My favorite is the usage of Resource Explorer, in which we can navigate inside the subscription and find the exact valuable resource. At the proper facet, we can have all homes in a JSON format. In the instance under, we will see the ID inside the second line.


ResourceId function

The ID layout is described with some dynamic facts, including subscription ID and the virtual network call. Here is the textual content retrieved from the primary traces of the virtual community that we created for this article.

  • “call”: “VNET”,
  • “identification”: “/subscriptions/3c062fc8-2da3-4704-9dbb-8f91ffb43902/resourceGroups/Network-
  • VNET/vendors/Microsoft.Network/virtualNetworks/VNET”,
  • “etag”: “W/”2e119f6f-de11-4a5f-b08c-679136ca7fea””,
  • “kind”: “Microsoft.Network/virtualNetworks”,
  • “place”: “eastus”,
  • “tags”:
  • “displayName”: “VNET”

When using ARM Templates, we can use the Outputs segment of the ARM template to show a resource’s resource ID. In our state of affairs, we knew the name of the digital network, so we used the ResourceID feature.

  • “outputs”:
  • “VNET-ResourceID”:
  • “kind”: “string”,
  • “cost”:”[resourceid(‘Microsoft.Network/virtualNetworks’,’vnet’)]”

resource function

We were associating a network safety institution to a subnet. In our ARM Template, we created two resources: a Virtual Network with two subnets, and we named them Servers and Quarantine, and a community security institution, which has its name described by the variable name.

I’ve shared the entire ARM Template as a weblog right here at TechGenix, but the maximum essential part of the code is highlighted inside the picture depicted underneath.

ResourceId function

The code required to feature an existent community security institution to a subnet is listed beneath. We are taking gain of the resource feature that we explored within the preceding section. We are passing the resource type (Microsoft. Network/network security groups) and the name of the NSG (defined through the parameters nsgName).

“Network security group”: “identification”: “[resourceId(‘Microsoft. Network/networkSecurityGroups’, parameters(‘Noname))]” The result may be the network security institution being related to the subnet of the server, as depicted within the picture under.

ResourceId characteristic

That is great, but it fails after I run the ARM Template for the primary time! If you’re jogging the ARM Template that creates a digital community and a community protection organization, it’ll inevitably fail at the primary time. The main purpose is that the virtual network can be made, and I’ll try and use the network safety group that is additionally being built at an equal time. As a result, an error might be displayed. When we run a 2d time, it’ll paintings, which happens because, within the 2d spherical, the community protection organization could be already in the vicinity.

By default, Azure Resource Manager (ARM) will create sources in parallel. When we want some order inside the technique, we need to play with dependsOn detail for resources being provisioned inside the same template.

To solve this hassle and make our ARM Template bulletproof, we want to use it depends on the digital community aid degree. We will add the community safety organization as a requirement earlier than growing the virtual helpful community resource.

ResourceId feature

Here is the code required to pressure the introduction of a Network Security Group positioned within the ARM Template earlier than growing the virtual network. Note that we’re taking benefit of the resource feature once more.

“dependsOn”: [

“[resourceId(‘Microsoft. Network/networkSecurityGroups’, parameters(‘Noname))]” ], When executing the ARM Template, we can see the distinction in which the first aid to be provisioned is the network security group (Item 1), and as soon as it’s miles completed (Item 2), the Virtual Network provision kicks in.

Beatrice Nelson

Explorer. Extreme communicator. Problem solver. Alcohol buff. Beer geek. Twitter nerd. Bacon lover. Food fan. Wannabe tv fanatic. Managed a small team deploying velcro in Bethesda, MD. Spent a weekend working with hobos in the financial sector. What gets me going now is merchandising plush toys in Ocean City, NJ. Garnered an industry award while merchandising dandruff for the government. At the moment I'm short selling Slinkies in New York, NY. Spent 2001-2006 researching terrorism in Salisbury, MD.