One of the cornerstones of the modern DevOps approach is the ability to manage and provision the infrastructure for a distributed application with a declarative or even procedural set of definition files that can be versioned and stored together with the application source code. In this Infrastructure-as-Code (IaC) approach, these files should be created in such a way that whatever the current state of the infrastructure is, executing these resources should always lead to the same desired state (that is, idempotency).
In the Azure stack, the infrastructure resources created within a subscription are managed by a service called ARM. ARM provides a consistent management tier that allows the developers to interact with it to execute infrastructure configuration tasks using Azure PowerShell, the Azure portal, and the available REST API. Semantically speaking...