Terraform Contribution Guide
Important
Every new AVM Terraform module MUST use AzAPI for all control-plane resources and supported data-plane operations. AzureRM is permitted only for a specific unsupported data-plane/non-ARM API operation under the narrow TFFR3 exception. This rule applies to the root module, submodules, examples, end-to-end tests, Terraform tests, fixtures, and documentation snippets; supporting control-plane resources in every surface must use AzAPI.
While this page describes and summarizes important aspects of contributing to AVM, it only references some of the shared and language specific requirements.
Therefore, this contribution guide MUST be used in conjunction with the Terraform specifications. All AVM modules MUST meet the applicable requirements in those specifications.
Summary
This section lists AVM’s Terraform-specific contribution guidance.
- Prerequisites — tooling and access requirements
- Contribution Flow — end-to-end guide for owners and contributors (includes testing)
- Composition — module structure, code styling, interfaces
- Review — module review process before publishing
- Advanced Topics & FAQ — custom subscriptions, OPA exceptions, TFLint overrides
- AVM TFLint Rules — custom rules, their requirements, and supported overrides
- Repository Setup — creating a new module repository (owners only)