能否使用Terraform恢复通过azurerm备份的Azure虚拟机?
能否用Terraform恢复已备份的虚拟机?
目前AzureRM Terraform Provider没有原生支持直接恢复虚拟机备份的资源类型,不过可以通过以下间接方式实现:
使用
null_resource配合Azure CLI执行恢复操作
可以在Terraform配置里定义null_resource,通过local-execprovisioner调用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
相关产品推荐
相关产品推荐

