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

能否使用Terraform恢复通过azurerm备份的Azure虚拟机?

能否用Terraform恢复已备份的虚拟机?

目前AzureRM Terraform Provider没有原生支持直接恢复虚拟机备份的资源类型,不过可以通过以下间接方式实现:

  • 使用null_resource配合Azure CLI执行恢复操作
    可以在Terraform配置里定义null_resource,通过local-exec provisioner调用Azure CLI的备份恢复命令完成操作。示例配置如下:

    resource "null_resource" "restore_vm" {
      triggers = {
        # 可根据备份恢复点更新或手动触发执行
        trigger_timestamp = timestamp()
      }
    
      provisioner "local-exec" {
        command = <<EOT
          az backup restore restore-vm \
            --resource-group ${var.system-rg} \
            --vault-name ${azurerm_recovery_services_vault.vaultvm.name} \
            --container-name "VM;iaasvmcontainerv2;${var.system-rg};${var.vm_name}" \
            --item-name "${var.vm_name}" \
            --restore-mode "OriginalLocation" \
            --recovery-point $(az backup recoverypoint list --resource-group ${var.system-rg} --vault-name ${azurerm_recovery_services_vault.vaultvm.name} --container-name "VM;iaasvmcontainerv2;${var.system-rg};${var.vm_name}" --item-name "${var.vm_name}" --query "[0].name" -o tsv)
        EOT
      }
    }
    

    注意:需要提前安装并配置好Azure CLI认证,容器名称和备份项名称格式为VM;iaasvmcontainerv2;<资源组名>;<虚拟机名>,要根据实际环境替换变量。

  • 通过azurerm_template_deployment调用ARM模板恢复
    如果有现成的ARM模板用于VM备份恢复,可以用Terraform的azurerm_template_deployment资源部署该模板,传入恢复点ID、目标资源组等必要参数。

需要说明的是,Terraform主打基础设施的声明式管理,备份恢复这类偏操作型的任务,用Azure CLI或Azure Portal会更直接。如果一定要在Terraform里集成恢复逻辑,上述两种方式可行,但要处理好认证、参数传递和触发条件等细节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:23:17