I write this blog post as an Azure cloud engineer. I use Terraform for the typical corporate enterprise deploying various azure resources. I have been using azurerm modules for a few years. However, Microsoft released Azure Verified Modules (AVM) in the Terraform Registry last year. I believe this should be the recommended go-to in starting out any new deployemnt scenarios where possible. AVM has a comprehensive dedicated website where you can read all about it at https://azure.github.io/Azure-Verified-Modules/.
Here I will summarize my introduction and provide some insights.
1. Why use Azure Verified Modules?
- For the last many years, the go-to place to use Azure modules has been this Terraform registry. Users should use modules that start with the prefix “azurerm_”.
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs - One disadvantage is that they are not formally supported and managed by Microsoft which results to bugs, stale and dependent on the general open source community.
- Azure Verified Modules solves this problem by
- Officially supported by Microsoft. Each module is assigned to a Microsoft Full Time Employee.
- More consistency of standards across modules.
- You can read more about at https://azure.github.io/Azure-Verified-Modules/overview/introduction/
- My experience has been that the less popular azurerm modules fall behind and can get buggy. So its great to hear an officially Microsoft supported set of modules being worked on and supported with long-term commitment.
2. How to browser through AVM modules?
To browser the AVM terraform modules, go to https://azure.github.io/Azure-Verified-Modules/indexes/terraform/tf-resource-modules/
As a beginner, I would focus on the resource modules at https://azure.github.io/Azure-Verified-Modules/indexes/terraform/tf-resource-modules/

If I were to select the avm-res-storage-storageaccount, it leads me to https://registry.terraform.io/modules/Azure/avm-res-storage-storageaccount/azurerm/latest

In the red boxes, the prefix avm and the Partner tag are signs they are officially Microsoft supported AVM modules.
The green box highlights the module owner who is supposed to be a Microsoft full-time employee.
The purple box highlights the repo to find the module source code along with some examples.
At the moment, I find it confusing to browse AVM modules starting from the Terraform registry. So, I would recommend AVM module browsing from the AVM website.
3. How to get Started working with AVM Modules
It is fairly straight forward to use thse modules by following the instructions such as

You can look for examples such as https://github.com/Azure/terraform-azurerm-avm-res-storage-storageaccount/tree/main/examples. Here you find various scenarios around the use of the resource.

Here is an example where I created a storage account with a blob container in my repo https://github.com/RoyKimYYZ/az-terraform-cicd/tree/main/avm-storage-account-tf

The convenient design of this avm module is that I can define a blob container without a separate call to the azurerm_storage_container
Final Thoughts
As I get more experience with Azure Verified Modules, I am excited to leverage these to get a better user experience, consistency and alignment to the ‘Well Architected Framework’ principles. Even more so is the support that Microsoft can provide through their Github repo by posting an Issue and having a timely response. The AVM site is also very comprehensive and you can tell the AVM team has put a lot of thought into making it scalable, robust and a great customer experience.