Azure Terraform Modules
The terraform-az-modules GitHub organization hosts 40+ production-grade Terraform modules for Microsoft Azure. All modules are Apache 2.0 licensed and written in HCL.
Networking
| Module | GitHub | Description |
|---|---|---|
| terraform-azurerm-vnet | → | Provisions Azure Virtual Networks — the foundational private network layer for all Azure resources |
| terraform-azurerm-nsg | → | Configures Network Security Groups to control inbound and outbound traffic rules |
| terraform-azurerm-vnet-peering | → | Establishes VNet peering connections for seamless cross-network routing |
| terraform-azurerm-private-dns | → | Manages Private DNS zones for internal name resolution of PaaS services |
| terraform-azurerm-application-gateway | → | Deploys a Layer 7 load balancer with WAF, SSL termination, and URL-based routing |
| terraform-azurerm-load-balancer | → | Configures Layer 4 Azure Load Balancer for TCP/UDP traffic distribution |
| terraform-azurerm-vpn | → | Deploys Azure VPN Gateway for secure site-to-site and point-to-site connectivity |
Compute & Containers
| Module | GitHub | Description |
|---|---|---|
| terraform-azurerm-aks | → | Provisions Azure Kubernetes Service (AKS) clusters with node pools, RBAC, and monitoring |
| terraform-azurerm-acr | → | Creates Azure Container Registry for storing and managing private Docker images |
| terraform-azurerm-app-service | → | Deploys Azure App Service plans and web apps for hosting APIs and web applications |
| terraform-azurerm-functions-app | → | Provisions Azure Functions for event-driven serverless compute workloads |
Databases
| Module | GitHub | Description |
|---|---|---|
| terraform-azurerm-flexible-postgresql | → | Manages Azure Database for PostgreSQL – Flexible Server with HA and read replicas |
| terraform-azurerm-flexible-mysql | → | Provisions Azure Database for MySQL – Flexible Server with configurable compute tiers |
| terraform-azurerm-mssql-db | → | Deploys Azure SQL Database (MSSQL) with elastic pools and geo-replication support |
| terraform-azurerm-sql-managed-instance | → | Provisions Azure SQL Managed Instance for near-complete SQL Server compatibility |
| terraform-azurerm-cosmos-db | → | Sets up globally distributed Azure Cosmos DB with configurable consistency models |
| terraform-azurerm-redis-cache | → | Provisions Azure Cache for Redis as a fully managed in-memory data store |
Storage
| Module | GitHub | Description |
|---|---|---|
| terraform-azurerm-storage | → | Creates Azure Storage Accounts with support for blobs, files, queues, and tables |
Messaging & Events
| Module | GitHub | Description |
|---|---|---|
| terraform-azurerm-service-bus | → | Configures Azure Service Bus namespaces, queues, and topics for enterprise messaging |
| terraform-azurerm-eventhub | → | Deploys Azure Event Hubs for high-throughput real-time event streaming |
| terraform-azurerm-communication-service | → | Provisions Azure Communication Services for SMS, email, and video capabilities |
Identity & Security
| Module | GitHub | Description |
|---|---|---|
| terraform-azurerm-key-vault | → | Manages Azure Key Vault for securely storing secrets, certificates, and encryption keys |
| terraform-azurerm-service-principal | → | Creates and configures Azure Active Directory service principals for application identities |
| terraform-azurerm-sentinel | → | Enables Microsoft Sentinel cloud-native SIEM and SOAR with data connectors and analytics rules |
Monitoring & Data
| Module | GitHub | Description |
|---|---|---|
| terraform-azurerm-application-insights | → | Sets up Azure Application Insights for application performance monitoring and telemetry |
| terraform-azurerm-data-factory | → | Provisions Azure Data Factory for data integration, ETL pipelines, and orchestration |
| terraform-azurerm-logic-app | → | Deploys Azure Logic Apps for low-code workflow automation and system integrations |
Foundation
| Module | GitHub | Description |
|---|---|---|
| terraform-azurerm-resource-group | → | Creates and tags Azure Resource Groups for logical resource organization |
Quick start
# Example: provision an AKS cluster
module "aks" {
source = "git::https://github.com/terraform-az-modules/terraform-azurerm-aks.git?ref=v1.0.0"
name = "my-cluster"
resource_group_name = module.rg.name
location = "eastus"
default_node_pool = {
name = "system"
node_count = 2
vm_size = "Standard_D2s_v3"
}
}
Pin each module to a release tag. Browse tags on the module's GitHub releases page.
All modules
Full list at github.com/terraform-az-modules.