Add support for Azure Blob Storage backup policies and instances
This commit is contained in:
46
main.tf
46
main.tf
@@ -7,6 +7,29 @@ locals {
|
||||
var.name :
|
||||
"${coalesce(var.base_name, "")}${substr(md5("${data.azurerm_client_config.current.subscription_id}/${var.rg_name}/${coalesce(var.base_name, "")}"), 0, 6)}"
|
||||
)
|
||||
|
||||
blob_storage_accounts = var.protected_blob_storage_accounts
|
||||
blob_backup_enabled = length(local.blob_storage_accounts) > 0
|
||||
|
||||
default_backup_policies = {
|
||||
default = {
|
||||
name = "${local.backup_vault_name}-blob-policy"
|
||||
backup_repeating_time_intervals = ["R/2026-01-01T01:00:00+00:00/P1D"]
|
||||
operational_default_retention_duration = "P30D"
|
||||
vault_default_retention_duration = "P30D"
|
||||
}
|
||||
}
|
||||
|
||||
blob_backup_policies = length(var.blob_backup_policies) > 0 ? {
|
||||
for key, policy in var.blob_backup_policies : key => {
|
||||
name = coalesce(try(policy.name, null), "${local.backup_vault_name}-${key}-blob-policy")
|
||||
backup_repeating_time_intervals = coalesce(try(policy.backup_repeating_time_intervals, null), local.default_backup_policies.default.backup_repeating_time_intervals)
|
||||
operational_default_retention_duration = coalesce(try(policy.operational_default_retention_duration, null), local.default_backup_policies.default.operational_default_retention_duration)
|
||||
vault_default_retention_duration = coalesce(try(policy.vault_default_retention_duration, null), local.default_backup_policies.default.vault_default_retention_duration)
|
||||
}
|
||||
} : local.default_backup_policies
|
||||
|
||||
default_backup_policy_key = contains(keys(local.blob_backup_policies), "default") ? "default" : sort(keys(local.blob_backup_policies))[0]
|
||||
}
|
||||
|
||||
resource "azurerm_data_protection_backup_vault" "this" {
|
||||
@@ -32,3 +55,26 @@ resource "azurerm_data_protection_backup_vault" "this" {
|
||||
|
||||
tags = var.tags
|
||||
}
|
||||
|
||||
resource "azurerm_data_protection_backup_policy_blob_storage" "this" {
|
||||
for_each = local.blob_backup_enabled ? local.blob_backup_policies : {}
|
||||
|
||||
name = each.value.name
|
||||
vault_id = azurerm_data_protection_backup_vault.this.id
|
||||
|
||||
backup_repeating_time_intervals = each.value.backup_repeating_time_intervals
|
||||
operational_default_retention_duration = each.value.operational_default_retention_duration
|
||||
vault_default_retention_duration = each.value.vault_default_retention_duration
|
||||
}
|
||||
|
||||
resource "azurerm_data_protection_backup_instance_blob_storage" "this" {
|
||||
for_each = local.blob_storage_accounts
|
||||
|
||||
name = coalesce(try(each.value.backup_instance_name, null), "${local.backup_vault_name}-${each.key}-blob-instance")
|
||||
vault_id = azurerm_data_protection_backup_vault.this.id
|
||||
location = coalesce(try(each.value.backup_instance_location, null), var.location)
|
||||
storage_account_id = each.value.id
|
||||
backup_policy_id = azurerm_data_protection_backup_policy_blob_storage.this[coalesce(try(each.value.backup_policy_key, null), local.default_backup_policy_key)].id
|
||||
|
||||
storage_account_container_names = try(each.value.container_names, null)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user