@@ -27,11 +27,13 @@ resource "azurerm_storage_account" "storage_account" {
2727 is_hns_enabled = local. storage_account [each . key ]. is_hns_enabled
2828 nfsv3_enabled = local. storage_account [each . key ]. nfsv3_enabled
2929 large_file_share_enabled = local. storage_account [each . key ]. large_file_share_enabled
30+ local_user_enabled = local. storage_account [each . key ]. local_user_enabled
3031 queue_encryption_key_type = local. storage_account [each . key ]. queue_encryption_key_type
3132 table_encryption_key_type = local. storage_account [each . key ]. table_encryption_key_type
3233 infrastructure_encryption_enabled = local. storage_account [each . key ]. infrastructure_encryption_enabled
3334 allowed_copy_scope = local. storage_account [each . key ]. allowed_copy_scope
3435 sftp_enabled = local. storage_account [each . key ]. sftp_enabled
36+ dns_endpoint_type = local. storage_account [each . key ]. dns_endpoint_type
3537
3638 dynamic "custom_domain" {
3739 for_each = length (compact (values (local. storage_account [each . key ]. custom_domain ))) > 0 ? [0 ] : []
@@ -43,10 +45,11 @@ resource "azurerm_storage_account" "storage_account" {
4345 }
4446
4547 dynamic "customer_managed_key" {
46- for_each = local. storage_account [each . key ]. customer_managed_key == {} ? [] : [0 ]
48+ for_each = length ( compact ( values ( local. storage_account [each . key ]. customer_managed_key ))) > 0 ? [0 ] : []
4749
4850 content {
4951 key_vault_key_id = local. storage_account [each . key ]. customer_managed_key . key_vault_key_id
52+ managed_hsm_key_id = local. storage_account [each . key ]. customer_managed_key . managed_hsm_key_id
5053 user_assigned_identity_id = local. storage_account [each . key ]. customer_managed_key . user_assigned_identity_id
5154 }
5255 }
@@ -86,7 +89,8 @@ resource "azurerm_storage_account" "storage_account" {
8689 for_each = local. storage_account [each . key ]. blob_properties . delete_retention_policy == {} ? [] : [0 ]
8790
8891 content {
89- days = local. storage_account [each . key ]. blob_properties . delete_retention_policy . days
92+ days = local. storage_account [each . key ]. blob_properties . delete_retention_policy . days
93+ permanent_delete_enabled = local. storage_account [each . key ]. blob_properties . delete_retention_policy . permanent_delete_enabled
9094 }
9195 }
9296
@@ -280,13 +284,92 @@ resource "azurerm_storage_account" "storage_account" {
280284 tags = local. storage_account [each . key ]. tags
281285}
282286
287+ resource "azurerm_storage_management_policy" "storage_management_policy" {
288+ for_each = var. storage_management_policy
289+
290+ storage_account_id = local. storage_management_policy [each . key ]. storage_account_id
291+
292+ dynamic "rule" {
293+ for_each = local. storage_management_policy [each . key ]. rule
294+
295+ content {
296+ name = local. storage_management_policy [each . key ]. rule [rule . key ]. name == " " ? rule. key : local. storage_management_policy [each . key ]. rule [rule . key ]. name
297+ enabled = local. storage_management_policy [each . key ]. rule [rule . key ]. enabled
298+
299+ filters {
300+ blob_types = local. storage_management_policy [each . key ]. rule [rule . key ]. filters . blob_types
301+ prefix_match = local. storage_management_policy [each . key ]. rule [rule . key ]. filters . prefix_match
302+
303+ dynamic "match_blob_index_tag" {
304+ for_each = length (compact (values (local. storage_management_policy [each . key ]. rule [rule . key ]. filters . match_blob_index_tag ))) > 0 ? [0 ] : []
305+
306+ content {
307+ name = local. storage_management_policy [each . key ]. rule [rule . key ]. filters . match_blob_index_tag . name
308+ value = local. storage_management_policy [each . key ]. rule [rule . key ]. filters . match_blob_index_tag . value
309+ operation = local. storage_management_policy [each . key ]. rule [rule . key ]. filters . match_blob_index_tag . operation
310+ }
311+ }
312+ }
313+
314+ actions {
315+ dynamic "base_blob" {
316+ for_each = length (compact (values (local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob ))) > 0 ? [0 ] : []
317+
318+ content {
319+ tier_to_cool_after_days_since_modification_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_cool_after_days_since_modification_greater_than
320+ tier_to_cool_after_days_since_last_access_time_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_cool_after_days_since_last_access_time_greater_than
321+ tier_to_cool_after_days_since_creation_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_cool_after_days_since_creation_greater_than
322+ auto_tier_to_hot_from_cool_enabled = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . auto_tier_to_hot_from_cool_enabled
323+ tier_to_archive_after_days_since_modification_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_archive_after_days_since_modification_greater_than
324+ tier_to_archive_after_days_since_last_access_time_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_archive_after_days_since_last_access_time_greater_than
325+ tier_to_archive_after_days_since_creation_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_archive_after_days_since_creation_greater_than
326+ tier_to_archive_after_days_since_last_tier_change_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_archive_after_days_since_last_tier_change_greater_than
327+ tier_to_cold_after_days_since_modification_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_cold_after_days_since_modification_greater_than
328+ tier_to_cold_after_days_since_last_access_time_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_cold_after_days_since_last_access_time_greater_than
329+ tier_to_cold_after_days_since_creation_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . tier_to_cold_after_days_since_creation_greater_than
330+ delete_after_days_since_modification_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . delete_after_days_since_modification_greater_than
331+ delete_after_days_since_last_access_time_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . delete_after_days_since_last_access_time_greater_than
332+ delete_after_days_since_creation_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . base_blob . delete_after_days_since_creation_greater_than
333+ }
334+ }
335+
336+ dynamic "snapshot" {
337+ for_each = length (compact (values (local. storage_management_policy [each . key ]. rule [rule . key ]. actions . snapshot ))) > 0 ? [0 ] : []
338+
339+ content {
340+ change_tier_to_archive_after_days_since_creation = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . snapshot . change_tier_to_archive_after_days_since_creation
341+ tier_to_archive_after_days_since_last_tier_change_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . snapshot . tier_to_archive_after_days_since_last_tier_change_greater_than
342+ change_tier_to_cool_after_days_since_creation = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . snapshot . change_tier_to_cool_after_days_since_creation
343+ tier_to_cold_after_days_since_creation_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . snapshot . tier_to_cold_after_days_since_creation_greater_than
344+ delete_after_days_since_creation_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . snapshot . delete_after_days_since_creation_greater_than
345+ }
346+ }
347+
348+ dynamic "version" {
349+ for_each = length (compact (values (local. storage_management_policy [each . key ]. rule [rule . key ]. actions . version ))) > 0 ? [0 ] : []
350+
351+ content {
352+ change_tier_to_archive_after_days_since_creation = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . version . change_tier_to_archive_after_days_since_creation
353+ tier_to_archive_after_days_since_last_tier_change_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . version . tier_to_archive_after_days_since_last_tier_change_greater_than
354+ change_tier_to_cool_after_days_since_creation = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . version . change_tier_to_cool_after_days_since_creation
355+ tier_to_cold_after_days_since_creation_greater_than = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . version . tier_to_cold_after_days_since_creation_greater_than
356+ delete_after_days_since_creation = local. storage_management_policy [each . key ]. rule [rule . key ]. actions . version . delete_after_days_since_creation
357+ }
358+ }
359+ }
360+ }
361+ }
362+ }
363+
283364resource "azurerm_storage_container" "storage_container" {
284365 for_each = var. storage_container
285366
286- name = local. storage_container [each . key ]. name == " " ? each. key : local. storage_container [each . key ]. name
287- storage_account_name = local. storage_container [each . key ]. storage_account_name
288- container_access_type = local. storage_container [each . key ]. container_access_type
289- metadata = local. storage_container [each . key ]. metadata
367+ name = local. storage_container [each . key ]. name == " " ? each. key : local. storage_container [each . key ]. name
368+ storage_account_name = local. storage_container [each . key ]. storage_account_name
369+ container_access_type = local. storage_container [each . key ]. container_access_type
370+ default_encryption_scope = local. storage_container [each . key ]. default_encryption_scope
371+ encryption_scope_override_enabled = local. storage_container [each . key ]. encryption_scope_override_enabled
372+ metadata = local. storage_container [each . key ]. metadata
290373}
291374
292375resource "azurerm_storage_share" "storage_share" {
0 commit comments