Skip to content

Shared Infrastructure

Shared Modules

This repository contains shared Terraform modules that other projects can use. It provides for a consistent setup that conforms to the CMG application architecture and best practices.


Example:

The following example shows how to use the azure-diagnostics module, which creates diagnostic settings for each resource in a resource group.

module "diag" {
  source = "git::ssh://git@ssh.dev.azure.com/v3/cmgfidev/DevOps/shared-infrastructure//modules/azure-diagnostics?ref=v1.0.0"

  log_analytics_id       = var.workspace_id
  resource_group_to_scan = azurerm_resource_group.this.name
}

In the above example, the source's ref parameter (v1.0.0) is a git tag pointing to a specific commit (link to all git tags).

Using the ref parameter is optional but highly encouraged, as it explicitly sets the version of the module. Breaking changes are discouraged but should be expected as new features are added to a given module.


Documentation Index

Area Documentation
modules/azure-appservice Azure App Service Module
modules/azure-appservice/appplan Azure App Service Plan Module
modules/azure-appservice/functionapp Azure App Service FunctionApp Module
modules/azure-appservice/webapp Azure App Service WebApp Module
modules/azure-diagnostics Azure Diagnostics Module
modules/azure-frontdoor Azure FrontDoor Module
modules/azure-keyvault Azure KeyVault Module
modules/azure-keyvault-secret Azure KeyVault Secret Module
modules/azure-monitor Azure Monitor Module
modules/azure-monitor/action-group Azure Monitor Action Group Module
modules/azure-monitor/metric-alert Azure Monitor Metric Alert Module
modules/azure-monitor/query-alert Azure Monitor Query Alert Module
modules/azure-monitor/smart-detector-alert Azure Monitor Smart Detector Alert Module
modules/azure-mssql Azure MSSQL Module
modules/azure-networking Azure Networking Module
modules/azure-servicebus Azure Service Bus Module
modules/azuread-objects Azure AD Objects Module
modules/azuread-objects/Data Azure AD Data Module
modules/azuread-objects/Groups Azure AD Groups Module
modules/network-rules Network Rules Module
shared-resources Shared Resources

Module Hierarchy

graph LR;
root["Modules"]
root ==> modules_azure_appservice["azure-appservice"]
subgraph modules_azure_appservice_group["Azure Appservice"]
  modules_azure_appservice --> modules_azure_appservice_appplan["appplan"]
  modules_azure_appservice --> modules_azure_appservice_functionapp["functionapp"]
  modules_azure_appservice --> modules_azure_appservice_webapp["webapp"]
end
root ==> modules_azure_diagnostics["azure-diagnostics"]
root ==> modules_azure_frontdoor["azure-frontdoor"]
root ==> modules_azure_keyvault["azure-keyvault"]
root ==> modules_azure_keyvault_secret["azure-keyvault-secret"]
root ==> modules_azure_monitor["azure-monitor"]
subgraph modules_azure_monitor_group["Azure Monitor"]
  modules_azure_monitor --> modules_azure_monitor_action_group["action-group"]
  modules_azure_monitor --> modules_azure_monitor_metric_alert["metric-alert"]
  modules_azure_monitor --> modules_azure_monitor_query_alert["query-alert"]
  modules_azure_monitor --> modules_azure_monitor_smart_detector_alert["smart-detector-alert"]
end
root ==> modules_azure_mssql["azure-mssql"]
root ==> modules_azure_networking["azure-networking"]
root ==> modules_azure_servicebus["azure-servicebus"]
root ==> modules_azuread_objects["azuread-objects"]
subgraph modules_azuread_objects_group["Azuread Objects"]
  modules_azuread_objects --> modules_azuread_objects_data["Data"]
  modules_azuread_objects --> modules_azuread_objects_groups["Groups"]
end
root ==> modules_network_rules["network-rules"]
root ==> shared_resources["shared-resources"]