skip to Main Content

I used "azurerm_recovery_services_vault" to create a backup space. OS disks and managed disks are being backed up at 00:00 AM every day.

resource "azurerm_recovery_services_vault" "vaultvm" {
  name                = var.backup-vault-name
  location              = var.location
  resource_group_name   = var.system-rg
  sku                 = "Standard"

  soft_delete_enabled = true
}

resource "azurerm_backup_policy_vm" "backup" {
  name                = var.backup_name
  resource_group_name   = var.system-rg
  recovery_vault_name = azurerm_recovery_services_vault.vaultvm.name

  timezone                       = var.timezone
  instant_restore_retention_days = var.days

  backup {
    frequency = "Daily"
    time      = "00:00"
  }

  retention_daily {
    count = 7
  }

}

What I want to know is whether we can restore these backed up VMs using terraform.

3

Answers


  1. According with the azurerm_backup_protected_vm resource, it should be possible.

    Previously, it was possible leveraging the azurerm_recovery_services_protected_vm resource

    Login or Signup to reply.
  2. Yes. You will need to import the vm you are trying to restore and then reference the OS and managed disks to that vm

         data "azurerm_virtual_machine" "example" {
              name                = "somename"
              resource_group_name = "somename"
            }
            
         output "virtual_machine_id" {
              value = data.azurerm_virtual_machine.example.id
            }
            
         resource "azurerm_virtual_machine" "example" {
             name = data.azurerm_virtual_machine.example.name
            resource_group_name ="groupname"
            location =""
            
         storage_os_disk {
            name = ""
            create_option = "FromImage"
            image_uri = "/path/.vhd"
            }
            
         storage_data_disk {
            name = ""
            create_option = "FromImage"
            image_uri = "/path/.vhd"
            }
            }
    
    Login or Signup to reply.
  3. What I want to know is whether we can restore these backed up VMs using terraform.

    The below Terraform to define Azure resources and a null resource with a local-exec provisioner to run an az backup restore restore-disks command using the Azure CLI.

    Terraform

    provider "azurerm" {
      features {}
    }
    data "azurerm_virtual_machine" "azurevm" {
        name    = "vm_name"
        resource_group_name = "Mindtree_ResourceGroup"
    }
    
    data "azurerm_recovery_services_vault" "azurevm" {
        name    = "rcrvault"
        resource_group_name = "Mindtree_ResourceGroup"
    }
    
    resource "null_resource" "powershell" {
      triggers = {
        vault_id        = data.azurerm_recovery_services_vault.azurevm.id
        protected_vm_id = data.azurerm_virtual_machine.azurevm.id
      }
      
    provisioner "local-exec" {
            command = <<-EOT
            az backup restore restore-disks --container-name "<container-name>" --item-name MyItem --resource-group "<ResourceGroup_Name>" --rp-name <recovery-point_name> --storage-account "<Storage-Account-name>" --vault-name <vaultname>
            EOT
          }
    }
    

    When you run the code, the az backup restore restore-disks command will be executed using the Azure CLI. The command is responsible for restoring disks from a specified recovery point in Azure Backup.

    Terraform apply

    enter image description here

    Reference: az backup restore restore-disks

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search