如何使用Terraform配置Azure Managed Disks的备份
实现Azure托管磁盘备份所需Terraform资源
你需要用到azurerm provider提供的3个专用资源分别对应你提到的三类配置:
- 备份保管库:
azurerm_data_protection_backup_vault,用于存储磁盘备份数据的加密保管库 - 备份策略:
azurerm_data_protection_backup_policy_disk,用于定义定时备份周期、备份数据保留时长等规则 - 备份关联实体:
azurerm_data_protection_backup_instance_disk,用于将目标托管磁盘与备份保管库、备份策略绑定,触发自动备份
完整配置示例
首先确保你使用的azurerm provider版本不低于3.0.0,完整配置如下:
# 你已有的托管磁盘配置 resource "azurerm_managed_disk" "mongodb_disk" { name = "${var.env_name}-mongodb-disk" location = var.resource_group.location resource_group_name = var.resource_group.name create_option = "Empty" storage_account_type = "Premium_LRS" disk_size_gb = var.mongo_db_disk_size_in_gb } # 1. 创建备份保管库 resource "azurerm_data_protection_backup_vault" "disk_backup_vault" { name = "${var.env_name}-disk-backup-vault" resource_group_name = var.resource_group.name location = var.resource_group.location datastore_type = "VaultStore" redundancy = "LocallyRedundant" # 可根据需求修改为GeoRedundant/ZoneRedundant } # 2. 创建磁盘备份策略 resource "azurerm_data_protection_backup_policy_disk" "daily_backup_policy" { name = "daily-disk-backup-policy" vault_id = azurerm_data_protection_backup_vault.disk_backup_vault.id backup_repeating_time_intervals = ["R/2023-01-01T01:00:00+08:00/P1D"] # 每天凌晨1点备份,可按所在时区调整 default_retention_rule { life_cycle { duration = "P30D" # 备份保留30天 data_store_type = "VaultStore" } } # 可选:配置周/月/年级别的长期保留规则 # retention_rule { # name = "monthly-retention" # life_cycle { # duration = "P1Y" # data_store_type = "VaultStore" # } # criteria { # absolute_criteria = "FirstOfMonth" # } # } } # 3. 关联托管磁盘与备份策略,创建备份实例 resource "azurerm_data_protection_backup_instance_disk" "mongodb_disk_backup" { name = "${var.env_name}-mongodb-disk-backup" vault_id = azurerm_data_protection_backup_vault.disk_backup_vault.id disk_id = azurerm_managed_disk.mongodb_disk.id backup_policy_id = azurerm_data_protection_backup_policy_disk.daily_backup_policy.id }
配置说明
- 备份保管库的位置必须和目标托管磁盘的位置保持一致,否则无法绑定
backup_repeating_time_intervals遵循ISO 8601重复时间间隔格式,P1D代表每天一次,P7D代表每周一次- 保留时长配置同样遵循ISO 8601时长格式,
P30D代表30天,P1Y代表1年
内容的提问来源于stack exchange,提问作者Nagy Vilmos
相关产品推荐
相关产品推荐

