Azure Resource Manager
The Azure cloud is a collection of resources that work in unison to deliver a product or a service. Hardware is virtual and services can be created and destroyed at the stroke of a key. In the context of DevOps, resources can be "spun up" as part of a pipeline. It is crucial that when resources are deployed multiple times, those deployments are consistent, repeatable, and can be automated. Doing it manually through the Azure portal isn’t practical. Azure Resource Manager (ARM) has an interface for processing resource templates that specify resource deployments.
In this course, we look at how those templates can be built and deployed. We start with a simple template and move on to more complex examples to illustrate many of the useful features available when deploying resources with templates. This course contains plenty of demonstrations from the Azure platform so you can see exactly how to use Azure Resource Manager in practice.
If you have any feedback on this course, please reach out to us at firstname.lastname@example.org.
- Understand what Azure Resource Manager (ARM) is and its use cases
- Learn about the different ARM templates available and how they can be used
- Deploy databases using an ARM template
- Export a template and create templates using QuickStart templates
- Deploy resources using a script
This is a beginner-level course aimed at anyone who wants to learn more about managing and configuring their Azure environment, and fast-tracking their deployments.
To get the most out of this course, you should have a basic understanding of the Azure platform.
Let's recap what we have learned about Azure Resource Manager. It's not the Azure portal. It's the behind-the-scenes process that's mostly involved with managing the deployment of resources in the Azure cloud. There are multiple interfaces for interacting with Azure Resource Manager apart from the graphical interface of the portal.
You can issue commands through PowerShell and the Azure CLI, but the preferred method is to use ARM templates. Azure Resource Manager templates are JSON files with sections that allow you to specify parameters, variables, functions, and resources. There is also an outputs section so you can pass values from one template to another.
A template can specify multiple resources, and multiple resources can be specified in multiple template files that are linked to a master template deployment file. Visual Studio Code has an IntelliSense extension for creating ARM templates. This extension has auto-complete and syntax checking and greatly simplifies the creation of templates.
As well as defining your own functions, there are many built-in functions to work with strings, arrays, logical comparisons, and Azure resources. Once a template has been defined, it can be tested with the Test-AzResourceGroupDeployment command. The template can then be deployed to Azure using the New-AzResourceGroupDeployment command. Both of these commands can be actioned either through PowerShell or the Azure CLI.
When a deployment is in progress you can monitor it through the portal or by using the Az group deployment list and show commands. You don't have to create your template from scratch. You can download deployments as templates that you have created previously through the portal. This reaffirms the architecture of the portal as an interface to the Azure Resource Manager.
There is also a marketplace of Quickstart templates that you can use as-is, or download and modify. ARM templates simplify deployment by taking care of dependency management and orchestration. Unlike deploying resources with a script, you don't have to worry about the order you define your resources in. Testing a deployment will let you know if dependencies are missing, and if you deploy without testing either the whole template is successful or none of it succeeds. You won't end up in a situation with half of your resources deployed due to missing dependencies.
When a new resource or service becomes available on Azure often deploying an instance is only available using ARM templates and commands. Quite often a resource is released and there may be some time before the portal is updated to support it. But the main reason to become familiar and experienced with Azure Resource Manager is that it is by far the easiest method to ensure that your deployments are consistent and repeatable. This is of particular importance when deploying infrastructure as code through a DevOps pipeline.
Hallam is a software architect with over 20 years experience across a wide range of industries. He began his software career as a Delphi/Interbase disciple but changed his allegiance to Microsoft with its deep and broad ecosystem. While Hallam has designed and crafted custom software utilizing web, mobile and desktop technologies, good quality reliable data is the key to a successful solution. The challenge of quickly turning data into useful information for digestion by humans and machines has led Hallam to specialize in database design and process automation. Showing customers how leverage new technology to change and improve their business processes is one of the key drivers keeping Hallam coming back to the keyboard.