Today more and more businesses are moving their workloads to the cloud. To achieve this, a variety of career disciplines come together to create products that are reliable and that can be deployed in an easily repeatable manner.
Let’s take an e-commerce company as an example. A developer might work on some front-end and back-end components, whereas a DevOps engineer might focus more on the integration and delivery setup of the entire app, and the Cloud Architect and Project Manager work on the architecture layout for development and production environments.
Consistent and repeatable deployments require extensive communication across teams.
Consistent and repeatable deployments require extensive communication across teams when using a REST API or other imperative clients to create and update the resources in each deployment. A failure in clear communication can lead to a divergence in an environment configuration.
To solve the divergence problem, businesses make use of Infrastructure-as-Code (IaC), which enables teams to describe their cloud environments into text files using a declarative syntax. Azure Resource Manager (ARM) is the name of Azure’s cloud native declarative syntax and the files used to describe a cloud resource (or resources) is called an ARM template. Using ARM templates provides some key benefits:
Centralized Resource Configurations: Rather than having different cloud resource configurations stored in each different team’s source control, requiring constant sharing, DevOps, Cloud Architects, and Developers teams can store their latest cloud resource configurations into the ARM templates that are used to describe that resource.
Reliable and Repeatable Deployments: By describing your cloud resource configurations into an ARM template, anyone with access to that template can deploy and get the exact same cloud resource.
Simplified Resource Management: Before IaC, users had to use GUIs and other clients to view and manage their resources, making it easier for teams to lose track of what resources they have and how they are configured. By using ARM templates, teams have a better picture of what resources are present and how they are setup.
Managed Orchestration: Ensuring the correct order of operations occur on deployment is complex. Azure Resource Manage takes care of that for you by orchestrating the deployment of interdependent resources so that they get created in the right order. When possible, ARM deploys resources in parallel to finish deployments faster. By using ARM templates, you deploy the template through one command, instead of through multiple imperative commands.
The ARM Template Learning Path provides you with a FREE Azure sandbox environment to test out ARM template concepts, features and best practices. This learn path is designed for beginner to advanced users, looking to learn about ARM templates with scenarios that build on top of each other. The ARM template learn path consists of the following modules:
This module will teach you how to author your own ARM template using Visual Studio Code. You will learn how to declare resources and customize your ARM template by adding multiple resources, parameters, and outputs.
In this module you will learn how to use ARM template language expressions to generate unique values and how to reuse the expression used by storing it into a variable. This module will also cover the basics in how to use tags to organize your resources and how to separate parameters into its own file.
Module 3: Preview changes and validate Azure resources by using what-if and the ARM template test toolkit
In this module you will learn how to preview changes to your ARM template before deploying them by using the what-if capability, enabling you identify any creation, update, or deletion of resources before deploying those changes. You will also learn how to validate your ARM template using the ARM template test toolkit.
This module walks through the different ways ARM templates can be deployed based on your needs and automate the deployment using GitHub actions (CI/CD). Lastly, you will learn how to break down complex templates into multiple smaller linked templates.
In this module you will learn how to setup custom steps in your ARM template by using deployment scripts to integrate with external systems.
This module walks through how to use more advanced ARM template features like the dependsOn, copy, and condition constructs, for managing secrets in conditional deployments.