Every resource within Azure, no matter how it is deployed, will have a resource definition written as an ARM template in JSON. There are also certain resources that no matter what language they utilized will require the definition be written in a JSON/ARM template. Such resources as Azure Policy, Azure Data Factory, and Azure Logic Apps just to name a few.
- It is JSON file, not a programming language
- Explicitly call out any dependency between templates or resources
- Any Export Resource button in Azure will product an ARM template
- Day 0 support for any Azure resources, even those in private preview
- Azure specific
- Easily declare individual Azure Resource provider API versions
- No state file
The JSON file will be submitted directly to the Azure Resource Manager for provisioning the necessary Azure resources.
Source From: Microsoft Docs
The best way to validate changes would be to leverage the Azure CLI what-if
command similar to:
az deployment sub what-if --location EastUS --name azureADOCLIDeployment --template-file main.json --parameters parameters/dev.eus.parameters.json
For more information check out the ARM Template deployment what-if operation
Deployment for these examples are done at the Subscription level. This is done to ensure full deployment by creating the required Resource Group.
az deployment sub create --name storageDeployment --location eastus --template-file main.json --parameters parameters/dev.eus.parameters.json