You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过azurerm_backup_protected_vm立即触发Azure VM备份

问题说明

使用Terraform配置Azure恢复服务保管库(Recovery Service Vault)的VM备份时,备份策略、保护关联配置完成后,备份状态显示警告「初始备份待执行」,需要在配置完成后立即触发首次备份,现有配置代码如下:

resource "azurerm_recovery_services_vault" "vault" {
  name                = var.vaultname
  location            = var.location
  resource_group_name = var.rgname
  sku                 = "Standard"
  soft_delete_enabled = false
}
resource "azurerm_backup_policy_vm" "example" {
  name                = "test-recovery-vault-policy"
  resource_group_name = var.rgname
  recovery_vault_name = azurerm_recovery_services_vault.vault.name
  timezone = "UTC"
  backup {
    frequency = "Daily"
    time      = "23:00"
  }
  retention_daily {
    count = 10
  }
  retention_weekly {
    count    = 42
    weekdays = ["Sunday", "Wednesday", "Friday", "Saturday"]
  }

  retention_monthly {
    count    = 7
    weekdays = ["Sunday", "Wednesday"]
    weeks    = ["First", "Last"]
  }

  retention_yearly {
    count    = 77
    weekdays = ["Sunday"]
    weeks    = ["Last"]
    months   = ["January"]
  }
}

resource "azurerm_backup_protected_vm" "vm1" {
  resource_group_name = var.rgname
  recovery_vault_name = var.vaultname
  source_vm_id        = var.vm_id
  backup_policy_id    = azurerm_backup_policy_vm.example.id
}
原因说明

azurerm_backup_protected_vm资源仅完成VM和备份策略、保管库的关联绑定,不会自动触发首次备份。默认首次备份会按照你配置的备份策略指定时间(当前配置为UTC每日23:00)执行,在计划时间到达前就会显示「初始备份待执行」的警告状态。

实现方案

通过null_resource配合本地执行Azure CLI命令的方式,在备份保护关联创建完成后自动触发即时备份,操作要求如下:

  • 确保Terraform运行环境已安装Azure CLI并完成账号登录,拥有恢复服务保管库的备份操作权限
  • 在现有配置基础上新增如下代码块:
resource "null_resource" "trigger_initial_vm_backup" {
  # 明确依赖备份保护项,等保护项创建完成后再执行
  depends_on = [azurerm_backup_protected_vm.vm1]

  provisioner "local-exec" {
    command = <<EOT
sleep 20
az backup protection backup-now \
  --resource-group ${var.rgname} \
  --vault-name ${var.vaultname} \
  --backup-management-type AzureIaasVM \
  --item-name ${var.vm_name} \
  --retain-until $(date -d "+10 days" -u +"%Y-%m-%dT%H:%M:%SZ")
EOT
  }
}

配置说明

  • 开头的sleep 20是等待Azure后端完成VM备份保护的注册流程,避免接口调用时报保护项不存在的错误,可根据实际环境响应速度调整等待时长
  • --retain-until参数指定本次即时备份的过期时间,示例设置为10天后过期,和你配置的每日备份保留10天的规则对齐,可根据实际需求调整
  • 代码中用到的var.vm_name需要提前定义为目标VM的名称变量,如果你已经通过数据源或其他资源获取到VM名称可直接替换引用

如果你不想依赖本地Azure CLI环境,也可以替换为azapi_resource调用Azure Backup REST API实现相同效果,适配无CLI的CI/CD流水线场景。

内容的提问来源于stack exchange,提问作者Muthu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:57:31