PMFR1 - Resource Group Creation
A Pattern Module MAY create Resource Group(s).
A Pattern Module MAY create Resource Group(s).
Pattern Modules MUST follow the below naming conventions (all lower case):
avm/ptn/<hyphenated grouping/category name>/<hyphenated pattern module name>
avm/ptn/compute/app-tier-vmss
or avm/ptn/avd-lza/management-plane
or avm/ptn/3-tier/web-app
ptn
defines this as a pattern module<hyphenated grouping/category name>
is a hierarchical grouping of pattern modules by category, with each word separated by dashes, such as:avd-lza
,compute
or network
, or3-tier
<hyphenated pattern module name>
is a term describing the module’s function, with each word separated by dashes, e.g., app-tier-vmss
= Application Tier VMSS; management-plane
= Azure Virtual Desktop Landing Zone Accelerator Management Planeavm-ptn-<pattern module name>
(Module name for registry)terraform-<provider>-avm-ptn-<pattern module name>
(GitHub repository name to meet registry naming requirements)avm-ptn-apptiervmss
or avm-ptn-avd-lza-managementplane
<provider>
is the logical abstraction of various APIs used by Terraform. In most cases, this is going to be azurerm
or azuread
for resource modules.ptn
defines this as a pattern module<pattern module name>
is a term describing the module’s function, e.g., apptiervmss
= Application Tier VMSS; avd-lza-managementplane
= Azure Virtual Desktop Landing Zone Accelerator Management PlaneA Pattern Module SHOULD be built from AVM Resources Modules to establish a standardized code base and improve maintainability. If a valid reason exists, a pattern module MAY contain native resources (“vanilla” code) where it’s necessary. A Pattern Module MUST NOT contain references to non-AVM modules.
A Pattern Module MAY contain and be built using other AVM Pattern Modules. A Pattern Module MUST NOT contain references to non-AVM modules.
Parameter/variable input names SHOULD contain the resource to which they pertain. E.g., virtualMachineSku
/virtualmachine_sku
Modules MAY create/adopt public preview services and features at their discretion.
Preview API versions MAY be used when:
Microsoft.Insights/diagnosticSettings
) the latest version of the API available with GA features, like Category Groups etc., is 2021-05-01-preview
Preview services and features, SHOULD NOT be promoted and exposed, unless they are supported by the respective PG, and it’s documented publicly.
Modules SHOULD set defaults in input parameters/variables to align to high priority/impact/severity recommendations, where appropriate and applicable, in the following frameworks and resources:
They SHOULD NOT align to these recommendations when it requires an external dependency/resource to be deployed and configured and then associated to the resources in the module.
We will maintain a set of CSV files in the AVM Central Repo (
Azure/Azure-Verified-Modules
) with the required TelemetryId prefixes to enable checks to utilize this list to ensure the correct IDs are used. To see the formatted content of these CSV files with additional information, please visit the AVM Module Indexes page.SFR4 - Telemetry Enablement Flexibility
The telemetry enablement MUST be on/enabled by default, however this MUST be able to be disabled by a module consumer by setting the below parameter/variable value to
false
:
- Bicep:
enableTelemetry
- Terraform:
enable_telemetry
Whenever a module references AVM modules that implement the telemetry parameter (e.g., a pattern module that uses AVM resource modules), the telemetry parameter value MUST be passed through to these modules. This is necessary to ensure a consumer can reliably enable & disable the telemetry feature for all used modules.SFR5 - Availability Zones
Modules that deploy zone-redundant resources MUST enable the spanning across as many zones as possible by default, typically all 3.
Modules that deploy zonal resources MUST provide the ability to specify a zone for the resources to be deployed/pinned to. However, they MUST NOT default to a particular zone by default, e.g.
1
in an effort to make the consumer aware of the zone they are selecting to suit their architecture requirements.