Terraform Specifications

Specifications by Category and Module Classification

CategoryResourcePatternUtility
Contribution/Support988
Telemetry222
Naming/Composition20149
CodeStyle303030
Inputs/Outputs1298
Testing10109
Documentation444
Release/Publishing444
Summary918174

How to propose changes to the specifications?

Important

Any updates to existing or new specifications for Terraform must be submitted as a draft for review by Azure Terraform PG/Engineering(@Azure/terraform-avm) and AVM core team(@Azure/avm-core-team).

Why AVM Terraform modules favor AzAPI

AVM Terraform modules MUST use the AzAPI provider. The AzureRM provider is only permitted under the narrow exception described in TFFR3 (resources that have no AzAPI equivalent, e.g. some data-plane resources).

This decision is intentional and is driven by the following factors:

  • Built-in retries and error handling. AzAPI exposes first-class retry and timeouts blocks, including regex-based error matching, which lets modules handle transient failures (for example, scope locks being removed or eventual-consistency errors) deterministically and without external workarounds.
  • Pre-flight validation. AzAPI performs ARM API pre-flight checks at plan time, surfacing many configuration errors before an apply is attempted. This produces faster feedback loops and fewer partially-deployed resources.
  • Day-zero access to the latest Azure features. Because AzAPI talks directly to the Azure Resource Manager REST API, modules can adopt new resource types, properties and API versions as soon as they ship in Azure — without waiting for an AzureRM provider release.
  • Alignment with Bicep and ARM. AzAPI uses the same resource type identifiers (e.g. Microsoft.KeyVault/vaults@2023-07-01) and the same property shape as Bicep and ARM templates. This makes it dramatically easier to translate documentation, samples and Bicep modules into Terraform, and keeps Bicep and Terraform AVM modules conceptually aligned.
  • Close partnership with the Azure engineering teams. AzAPI is built and maintained in close collaboration with the Azure Resource Provider engineering teams. Issues in AzAPI can be triaged directly against the underlying ARM behavior, and the AVM team works directly with the AzAPI engineering team on roadmap and breaking changes.
  • Consistency across the AVM ecosystem. Standardizing on AzAPI means every AVM Terraform module uses the same patterns for identity, diagnostic settings, role assignments, locks and private endpoints — primarily through the Azure/avm-utl-interfaces/azure utility module — which simplifies authoring, review and consumer experience.

What changed recently?

See what specifications changed in the last 30 days...

#IDLast Modified (UTC)Git HistoryLast Commit
1TFRMFR12026-06-01 20:01:29All Commits448be6e
2TFRMNFR12026-06-01 20:01:29All Commits448be6e
3TFRMNFR22026-06-01 20:01:29All Commits448be6e
4TFFR62026-06-01 20:01:29All Commits448be6e
5TFFR72026-06-01 20:01:29All Commits448be6e
6PMNFR12026-05-26 15:12:56All Commitsb7412ee
7RMNFR12026-05-26 15:12:56All Commitsb7412ee
8SNFR122026-05-26 15:12:56All Commitsb7412ee
9SNFR22026-05-26 15:12:56All Commitsb7412ee
10SNFR262026-05-26 15:12:56All Commitsb7412ee
11UMNFR12026-05-26 15:12:56All Commitsb7412ee
12TFFR12026-05-26 15:12:56All Commitsb7412ee
13TFFR22026-05-26 15:12:56All Commitsb7412ee
14TFFR32026-05-26 15:12:56All Commitsb7412ee
15TFFR42026-05-26 15:12:56All Commitsb7412ee
16TFFR52026-05-26 15:12:56All Commitsb7412ee
17TFNFR112026-05-26 15:12:56All Commitsb7412ee
18TFNFR122026-05-26 15:12:56All Commitsb7412ee
19TFNFR172026-05-26 15:12:56All Commitsb7412ee
20TFNFR182026-05-26 15:12:56All Commitsb7412ee
21TFNFR212026-05-26 15:12:56All Commitsb7412ee
22TFNFR232026-05-26 15:12:56All Commitsb7412ee
23TFNFR252026-05-26 15:12:56All Commitsb7412ee
24TFNFR262026-05-26 15:12:56All Commitsb7412ee
25TFNFR272026-05-26 15:12:56All Commitsb7412ee
26TFNFR292026-05-26 15:12:56All Commitsb7412ee
27TFNFR342026-05-26 15:12:56All Commitsb7412ee
28TFNFR362026-05-26 15:12:56All Commitsb7412ee
29TFNFR382026-05-26 15:12:56All Commitsb7412ee
30TFNFR392026-05-26 15:12:56All Commitsb7412ee
31TFNFR52026-05-26 15:12:56All Commitsb7412ee
32TFNFR72026-05-26 15:12:56All Commitsb7412ee
33TFNFR82026-05-26 15:12:56All Commitsb7412ee