Skip to content

Module Catalogue

The library has 30 modules: 21 in both technologies, 5 only in Bicep and 4 only in Terraform. This page groups them by service. It summarises what each module deploys. The authoritative reference is the generated README in the folder of each module (parameters, outputs, resource types and a minimal example). The repository root also has a template index with links to these READMEs.

Reference list, your library may differ

The catalogue shows the modules of the reference repository at the time of writing. Your platform team delivers a copy of this repository, at a version of their choice. Check the tags and the module folders in your copy (Use Managed Templates). Module names are the folder names, and they are the same in both technologies.

How to read the tables

  • TF and Bicep show whether the module exists in that technology. A dash means it does not exist.
  • A module can differ in parameters between Terraform and Bicep. The names follow the conventions of each technology.
  • Most modules call a module of the Azure Verified Modules (AVM) project of Microsoft and add the platform standards on top. Exceptions are in the Notes column.
  • Where the resource type supports it, modules offer the usual options: tags, locks, role assignments, managed identities, diagnostic settings and private endpoints, and where the policies require it these are fixed or enforced (Policy compliance).

Identity and security

Module What it deploys TF Bicep Notes
user_assigned_identity A user-assigned managed identity Yes Yes
key_vault A Key Vault, with keys, secrets and role assignments Yes Yes The Terraform module forces a default network action of deny, switches legacy access policies off and sends the audit logs and all metrics to diagnostics.
disk_encryption_set A disk encryption set for customer-managed keys on disks - Yes Tries to set the permissions on the given Key Vault for the used identity.

Compute

Module What it deploys TF Bicep Notes
virtual_machine_windows A Windows VM with one or more network interfaces and optional public IP addresses Yes Yes Applies the Windows baseline guest configuration and installs the extensions that policies expect. Needs encryption at host and Defender for Cloud on the subscription.
virtual_machine_linux A Linux VM with one or more network interfaces and optional public IP addresses - Yes Applies the Linux baseline guest configuration. Same prerequisites as the Windows module.

For fully managed VMs with backup, patching and access, use the Managed VM module of the platform. The VM modules of this library only deploy the VM.

Containers

Module What it deploys TF Bicep Notes
container_registry An Azure Container Registry Yes Yes
containerinstance_containergroup A container instance group Yes Yes The Terraform module calls a fork of the AVM module that the maintainers keep (Decision 0007).
containerservice_managedcluster A managed Kubernetes cluster (AKS) Yes Yes The Terraform examples include a cluster with virtual network integration.
container_app An Azure Container App Yes - Does not call an AVM resource module: it owns its resource logic and uses the azapi provider. Changes made outside Terraform to the template are not detected.

App hosting

Module What it deploys TF Bicep Notes
serverfarm An App Service plan Yes Yes
app_service_site_linux A Linux web app, with slots Yes Yes
app_service_site_windows A Windows web app, with slots Yes Yes
app_service_function_linux A Linux function app, with slots Yes Yes
app_service_function_windows A Windows function app, with slots Yes Yes
static_web_app A static web app Yes -

The runtime version of web apps is not fixed by the modules, because the related policies have no default value. See Known findings.

Data and storage

Module What it deploys TF Bicep Notes
storage_account A storage account with blob containers, queues, tables and file shares, and a private endpoint Yes Yes Supports customer-managed keys. Terraform also supports Data Lake Gen2 file systems, management policies and local users. Has upgrade notes.
ptn_storage_account A storage account with customer-managed encryption, as a pattern Yes - Creates a resource group, a Log Analytics workspace, a user-assigned identity, and a Key Vault with a key when you do not supply them. It calls the key_vault, log_analytics_workspace, storage_account and user_assigned_identity modules of this library. Needs the storage_use_azuread setting on the azurerm provider.
sql_server An Azure SQL logical server with databases, auditing, encryption and vulnerability assessment Yes Yes Terraform also has elastic pools. Supports transparent data encryption with a customer-managed key. Has upgrade notes.
postgresql_flexibleserver A PostgreSQL flexible server, and databases Yes Yes Some parameters are fixed because of the policies. Has upgrade notes.

Integration and configuration

Module What it deploys TF Bicep Notes
apim An API Management service Yes Yes
event_hub_namespace An Event Hubs namespace, with event hubs Yes Yes
servicebus_namespace A Service Bus namespace, with queues and topics Yes -
app_configuration_store An App Configuration store Yes Yes Terraform can also create key-values.

Monitoring

Module What it deploys TF Bicep Notes
log_analytics_workspace A Log Analytics workspace Yes Yes
application_insights An Application Insights component Yes Yes
data_collection_endpoint A data collection endpoint Yes Yes
data_collection_rule A data collection rule - Yes
action_group An action group - Yes
network_interface_diagnostic_settings Diagnostic settings for a network interface - Yes A helper that other Bicep modules use for the network interface of a private endpoint.

Networking

Module What it deploys TF Bicep Notes
network_security_group A network security group with rules Yes Yes Flow logs on the group are no longer supported. Use virtual network flow logs. Has upgrade notes.

The library does not contain modules for virtual networks, firewalls, DNS or peering. The spoke network is part of the platform (What you get).

Find a module that is missing

Ask your platform team. A new module needs a module folder, an example and tests, and follows the same creation process as all others (Create and contribute modules).