AzureFunBytes is a weekly opportunity to learn more about the fundamentals and foundations that make up Azure. It's a chance for me to understand more about what people across the Azure organization do and how they do it. Every week we get together at 11 AM Pacific on Microsoft LearnTV and learn more about Azure.
ARM templates are a JSON file that helps you define what exactly you need to do in your Azure deployment. You do not need to know a specific programming language in order to use this declarative syntax. Specify your needs in this template and send it to ARM using native tools such az Azure CLI or the portal.
To help me share the beauty of ARM templates, I welcomed Microsoft Senior Cloud Advocate Shannon Kuehn to the show. Shannon comes with years of experience in deploying using a variety of IaC tools. A self-described tinkerer, Shannon has worked with technical mentors and colleagues who have helped her develop proficiencies in infrastructure.
00:03:33 - Let's meet Shannon
00:12:26 - Introducing ARM Templates
00:18:48 - Understanding structure and syntax
00:22:39 - Quickstart templates
00:26:54 - Deploy to Azure button
0:28:49 - Authoring templates with Visual Studio 2019
00:33:48 - Templates in Visual Studio Code
00:38:23- Exporting your template in the portal
00:43:17 - Deploying a Virtual Machine
Declarative code vs. imperative.
- Talk terms and stress the importance of idempotency with cloud scale deployments of infrastructure.
- ARM is based upon JSON, which is the response you get from calling an Azure REST API directly.
- Highlight the difference between ARM Templates and Bicep (i.e. ARM came first.
- ARM Templates encompass the full gambit of deployments: simple (single storage account, 1 VM), intermediate (2 VMs in the same VNet in an Availability Set), advanced (VM deployment using DSC/Custom Script Extension, nested templates)
How to get started? Where to go?
- Azure Quickstart GitHub Repo
- Azure ARM Template Reference
- Microsoft Learn Path
- ARM Template best practices
- A few books, courses, and publications also have helped me out in making sense of things
- PLUS – Maybe even finding a dev who can help you understand concepts if you get a lot of errors when deploying and how to make sense of something if you’re stuck.
What makes up an ARM template? (move to my local machine to demonstrate this with real live code)
- Start with a basic template format in Visual Studio Code.
- Highlight what are parameters, variables, functions, resources, and outputs.
- Go over metadata and comments to help ARM templates make sense to someone brand new.
- Go over the reasoning behind using all of these components, indicating the only required component is the resource section (but every section has a function).
- Talk about API versions/schema and why that’s relevant (i.e. Private Link is a newer resource, so you’d pick a newer API when building out your ARM templates)
Start with a vNet. Deploy the vNet with a PowerShell script that I’ll highlight.
- Move to the portal and showcase where it lives.
- Add a VM to the same vNet. Deploy with the same PowerShell script. Highlight that the template didn’t deploy 2 vNets…only 1…and that really showcases the idempotency of declarative syntax vs. imperative syntax.
- Add a storage account and configure it as a file share that you can mount from within the VM. Part of this exercise will be to RDP into the VM and showing how to mount the file share.
Learn about Azure fundamentals with me!
Live stream is normally found on Twitch, YouTube, and LearnTV at 11 AM PT / 2 PM ET Thursday. You can also find the recordings here as well:
Get $200 in free Azure Credit
Microsoft Learn: Introduction to Azure fundamentals
What are ARM templates?
Define resources in ARM templates
Microsoft Learn: Deploy and manage resources in Azure using JSON ARM templates
ARM template best practices
Quickstart: Create ARM templates with Visual Studio Code
Tutorial: Create and deploy your first ARM template
Quickstart: Create and deploy template spec
Tutorial: Utilize the ARM template reference
How to use Key Vault for ARM Template Deployments