# Azure Storage Module # Main resources terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 3.0" } } } # Storage Account resource "azurerm_storage_account" "main" { name = var.storage_account_name resource_group_name = var.resource_group_name location = var.location account_tier = var.account_tier account_replication_type = var.account_replication_type account_kind = var.account_kind enable_https_traffic_only = var.enable_https_traffic_only min_tls_version = var.min_tls_version blob_properties { delete_retention_policy { days = var.blob_delete_retention_days } container_delete_retention_policy { days = var.container_delete_retention_days } } network_rules { default_action = var.network_rules.default_action bypass = var.network_rules.bypass ip_rules = var.network_rules.ip_rules virtual_network_subnet_ids = var.network_rules.virtual_network_subnet_ids } tags = var.tags lifecycle { create_before_destroy = true } } # Containers resource "azurerm_storage_container" "containers" { for_each = var.containers name = each.value.name storage_account_name = azurerm_storage_account.main.name container_access_type = each.value.access_type } # File Shares resource "azurerm_storage_share" "shares" { for_each = var.file_shares name = each.value.name storage_account_name = azurerm_storage_account.main.name quota = each.value.quota } # Queues resource "azurerm_storage_queue" "queues" { for_each = var.queues name = each.value.name storage_account_name = azurerm_storage_account.main.name } # Tables resource "azurerm_storage_table" "tables" { for_each = var.tables name = each.value.name storage_account_name = azurerm_storage_account.main.name }