main.storage_account.tf (59 lines of code) (raw):
module "storage_account" {
source = "Azure/avm-res-storage-storageaccount/azurerm"
version = "0.5.0"
count = var.create_secure_storage_account ? 1 : 0
enable_telemetry = var.enable_telemetry
account_replication_type = var.storage_account.account_replication_type
access_tier = var.storage_account.access_tier
account_kind = var.storage_account.account_kind
name = var.storage_account.name
resource_group_name = coalesce(var.storage_account.resource_group_name, var.resource_group_name)
location = var.location
public_network_access_enabled = var.storage_account.public_network_access_enabled
# this is necessary as managed identity does not work with Elastic Premium Plans due to missing authentication support in Azure Files
shared_access_key_enabled = var.storage_account.shared_access_key_enabled
storage_management_policy_rule = var.storage_account.storage_management_policy_rule
storage_management_policy_timeouts = var.storage_account.storage_management_policy_timeouts
immutability_policy = var.storage_account.immutability_policy
containers = var.storage_account.containers
network_rules = var.storage_account.network_rules
table_encryption_key_type = var.storage_account.table_encryption_key_type
tables = var.storage_account.tables
queues = var.storage_account.queues
queue_encryption_key_type = var.storage_account.queue_encryption_key_type
queue_properties = var.storage_account.queue_properties
lock = var.storage_account.lock
edge_zone = var.storage_account.edge_zone
https_traffic_only_enabled = var.storage_account.https_traffic_only_enabled
static_website = var.storage_account.static_website
min_tls_version = var.storage_account.min_tls_version
nfsv3_enabled = var.storage_account.nfsv3_enabled
routing = var.storage_account.routing
sftp_enabled = var.storage_account.sftp_enabled
cross_tenant_replication_enabled = var.storage_account.cross_tenant_replication_enabled
private_endpoints = {
for endpoint in local.endpoints :
endpoint => {
name = "pe-${endpoint}-${var.storage_account.name}"
subnet_resource_id = var.private_endpoint_subnet_resource_id
subresource_name = endpoint
private_dns_zone_resource_ids = ["/subscriptions/${var.private_dns_zone_subscription_id}/resourceGroups/${var.private_dns_zone_resource_group_name}/providers/Microsoft.Network/privateDnsZones/privatelink.${endpoint}.core.windows.net"]
tags = var.tags
}
}
role_assignments = {
storage_blob_data_owner = {
role_definition_id_or_name = "Storage Blob Data Owner"
principal_id = module.function_app.resource.identity[0].principal_id
}
storage_account_contributor = {
role_definition_id_or_name = "Storage Account Contributor"
principal_id = module.function_app.resource.identity[0].principal_id
}
storage_queue_data_contributor = {
role_definition_id_or_name = "Storage Queue Data Contributor"
principal_id = module.function_app.resource.identity[0].principal_id
}
}
shares = length(var.storage_account.shares) > 0 ? local.var_shares : local.shares
tags = var.tags
}