Azure Resource Manager Overview
Azure Resource Manager, or ARM, is a way to manage resources in Azure. With ARM, we will be able to define our platform, or infrastructure, as code.
One of the benefits of using code to manage platform / infrastructure is we can check in to source control to see different changes over time. It also allow us to reuse part of the code for other deployment.
Azure Resource Manager also have the following benefits:
- Manage resources. Deploy, add, remove resources at ease.
- Resource grouping. Group resource into logical set that makes sense to you, i.e.: environment, location, etc.
- Resource dependencies. Handle dependencies between different resources.
- Repeatable deployments. ARM template can be used to perform same. repeatable deployments.
- Template. Using template and code to define platform / infrastructure. Template is also reusable.
With ARM architecture, there are few components. They are:
- Resource providers. These are the functionalities of the resources, such as compute, storage, etc.
- Resource types. The actual resource of Azure services that will be deployed.
- ARM REST APIs. Allow invocation of ARM command thru its APIs.
In general, ARM template has the following structure:
- Schema (required)
- Content Version (required)
How it Works
You can also abstract out parameters for a ARM template to its own template parameter file. ARM template parameter must also have schema and version. The version doesn’t have to be the same with the template file.
In ARM template deployment, Azure automatically detect dependencies between resource types and deploy the dependent resource first. For example, if a template has specified to deploy App Service Plan and App Service Web Site, ARM REST API will deploy App Service Plan first, which Web Site depends on.
You can also specify dependency in ARM template as well as deploy resources simultaneously for services that don’t have dependency, i.e. deploying 4 App Service Websites.
Azure Resource Manager will only deploy resources in the template that are not yet exist. When you the specified resource already exists, it will be skipped.
Within ARM template, you can also specify to deploy the application itself, this is useful, for example, when the App Service Web Site deployment will include populating the website with web application from source control.