Skip to content

Shared Resources

Requirements

Name Version
terraform >= 1.0
azurerm >= 3.114.0

Providers

Name Version
azurerm >= 3.114.0

Modules

Name Source Version
diag ../modules/azure-diagnostics n/a
network ../modules/azure-networking n/a
network_rules ../modules/network-rules n/a
service_bus ../modules/azure-servicebus n/a

Resources

Name Type
azurerm_container_registry.this resource
azurerm_private_endpoint.acr resource
azurerm_private_endpoint.servicebus resource
azurerm_resource_group.this resource
azurerm_role_assignment.rg_read resource
azurerm_role_assignment.rg_write resource
azurerm_storage_account.tfstate resource
azurerm_storage_account_network_rules.tfstate resource
azurerm_storage_container.tfstate resource

Inputs

Name Description Type Default Required
acr_private_endpoint_dns_zone_ids List of Private DNS Zone Resource Ids where DNS records for Azure Container Registry Private Endpoints will be created. Needs to be a single, globally used, DNS zone across all subscriptions. This is for Private DNS Resolver to work in a centralized DNS architecture. It is also documented by Microsoft as a best practice. list(string)
[
"/subscriptions/240c78f2-bab6-4e50-9d4f-cc49534b3eec/resourceGroups/cmgdnsprresrgprod01/providers/Microsoft.Network/privateDnsZones/privatelink.azurecr.io"
]
no
allowed_rbac_access Mapping of 'Name => ObjectId', using Object Ids from AAD. Objects will be granted access to these resources
object({
read = map(string)
write = map(string)
})
{
"read": {},
"write": {}
}
no
company_name n/a string "CMG" no
default_allowed_rbac_access Default AAD Objects that will be granted access. Override to {} if the defaults should not be used
object({
read = map(string)
write = map(string)
})
{
"read": {},
"write": {
"SG-CMGClearDevOps": "1f827054-bd48-479f-b09a-5dfb0a0e08bb"
}
}
no
environment_location Azure primary region to create the resource in string "westus2" no
environment_location_secondary Azure region to replicate resources/data to. Ideally the region paired with the primary region (var.environment_location) string "westcentralus" no
environment_log_retention Number of days to retain Diagnostic Setting logs and used as a default for other log retention settings number 14 no
environment_name Name of the environment, for tagging and naming purposes string n/a yes
log_analytics_id Required. Azure Log Analytics Workspace Id string n/a yes
private_endpoint_subnet_id Resource Id of a subnet where Private Endpoints should be created (unless overridden). Typically a dedicated subnet already in the subscription's hub vnet or inside an application's vnet string n/a yes
product_name n/a string "SharedApp" no
tfstate_storage_account_name Optional. Azure Storage Account where the Terraform State is stored. By default this is automatically generated, but due to 24 character name length it might need to be explicitly set string null no
vnet_address_space Optional. List of CIDR networks list(string) [] no
vnet_dns_servers List of DNS servers for the Vnet to use. The default, NULL, will use 'Azure Provided Dns Servers' list(string) null no
vnet_remote_hub_id Required. Id of the subscription's Hub Vnet, which will be peered string n/a yes
vnet_subnets Required. Mapping of Subnet objects. cidr attribute is required, as it must be unique across all environments/products
object({

Private_Endpoints = optional(object({
cidr = string
nat_gateway = optional(bool, false)
enable_network_policies = optional(bool, false) # Must be false for PEs
service_endpoints = optional(list(string), [])

delegations = optional(set(object({
name = string
actions = list(string)
})), [])
}))

Api_Management = optional(object({
cidr = string
nat_gateway = optional(bool)
enable_network_policies = optional(bool)
service_endpoints = optional(list(string), ["Microsoft.Web"])

delegations = optional(set(object({
name = string
actions = list(string)
})), [])
}))

})
n/a yes

Outputs

Name Description
network_rules n/a
resources n/a