Restaurar uma VM com a CLI do Azure

O Backup do Azure cria pontos de recuperação que são armazenados em cofres de recuperação com redundância geográfica. Ao restaurar de um ponto de recuperação, você pode restaurar a VM inteira ou arquivos individuais. Este artigo explica como restaurar uma VM completa usando a CLI. Neste tutorial, você aprenderá a:

  • Liste e selecione os pontos de recuperação
  • Restaurar um disco de um ponto de recuperação
  • Criar uma VM do disco restaurado

Para obter informações sobre como usar o PowerShell para restaurar um disco e criar uma VM recuperada, confira Backup e restauração de VMs do Azure com o PowerShell.

Agora, você também pode usar o CLI para restaurar diretamente o conteúdo de backup em uma VM (original/nova), sem executar as etapas acima separadamente. Para obter mais informações, confira Restaurar dados na máquina virtual usando o CLI.

Pré-requisitos

  • Este tutorial exige a versão 2.0.18 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.

  • Este tutorial requer uma VM do Linux que tenha sido protegida com o Backup do Azure. Para simular um processo de exclusão acidental e recuperação de VM, você pode criar uma VM de um disco em um ponto de recuperação. Se você precisar de uma VM do Linux que tenha sido protegida com o Backup do Azure, consulte Back up a virtual machine in Azure with the CLI (Fazer backup de uma máquina virtual no Azure com a CLI).

Visão geral do backup

Quando o Azure inicia um backup, a extensão de backup na VM cria um instantâneo pontual. A extensão de backup é instalada na VM quando o primeiro backup é solicitado. O Backup do Azure também poderá criar um instantâneo do armazenamento subjacente se a VM não estiver em execução quando o backup ocorrer.

Por padrão, o Backup do Azure usa um backup consistente com o sistema de arquivos. Depois que o Backup do Azure cria o instantâneo, os dados são transferidos para o cofre dos Serviços de Recuperação. Para maximizar a eficiência, o Backup do Azure identifica e transfere apenas os blocos de dados que foram alterados desde o backup anterior.

Quando a transferência de dados é concluída, o instantâneo é removido e um ponto de recuperação é criado.

Listar os pontos de recuperação disponíveis

Para restaurar um disco, selecione um ponto de recuperação como a origem dos dados de recuperação. Como a política padrão cria um ponto de recuperação por dia e os retém por 30 dias, você pode manter um conjunto de pontos de recuperação que permite selecionar um ponto específico para recuperação.

Para ver uma lista de pontos de recuperação disponíveis, use a az backup recoverypoint list. O nome do ponto de recuperação é usado para recuperar os discos. Neste tutorial, queremos o ponto de recuperação mais recente disponível. O parâmetro --query [0].name seleciona o nome do ponto de recuperação mais recente da seguinte maneira:

az backup recoverypoint list \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --backup-management-type AzureIaasVM \
    --container-name myVM \
    --item-name myVM \
    --query [0].name \
    --output tsv

Restaurar um disco de VM

Importante

É altamente recomendável usar a CLI do Az versão 2.0.74 ou posterior para obter todos os benefícios de uma restauração rápida, incluindo a restauração de disco gerenciado. Será melhor se você sempre usar a versão mais recente.

Restauração de disco gerenciado

Se a VM cujo backup foi realizado tiver discos gerenciados e se a intenção for restaurar discos gerenciados no ponto de recuperação, você primeiro fornecerá uma conta de armazenamento do Azure. Essa conta de armazenamento é usada para armazenar a configuração da VM e o modelo de implantação, que pode ser usado posteriormente para implantar a VM dos discos restaurados. Em seguida, você também fornece um grupo de recursos de destino para os discos gerenciados nos quais gravar o conteúdo restaurado.

  1. Para criar uma conta de armazenamento, use az storage account create. O nome da conta de armazenamento deve conter apenas letras minúsculas e ser exclusivo globalmente. Substitua mystorageaccount pelo seu próprio nome exclusivo:

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. Restaure o disco do seu ponto de recuperação com az backup restore restore-disks. Substitua mystorageaccount pelo nome da conta de armazenamento que você criou no comando anterior. Substitua myRecoveryPointName pelo nome do ponto de recuperação obtido na saída do comando az backup recoverypoint list anterior. Forneça também o grupo de recursos de destino para os discos gerenciados nos quais gravar o conteúdo restaurado em .

    az backup restore restore-disks \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --storage-account mystorageaccount \
        --rp-name myRecoveryPointName \
        --target-resource-group targetRG
    

    Aviso

    Se o target-resource-group não for fornecido, os discos gerenciados serão restaurados como discos não gerenciados para a conta de armazenamento informada. Isso terá consequências significativas no tempo de restauração, pois o tempo necessário para restaurar os discos depende totalmente da conta de armazenamento fornecida. Você terá o benefício da restauração instantânea somente quando o parâmetro target-resource-group for fornecido. Se a intenção for restaurar discos gerenciados como não gerenciados, não forneça o parâmetro target-resource-group; forneça, em vez disso, o parâmetro restore-as-unmanaged-disk, conforme mostrado abaixo. Esse parâmetro está disponível no CLI do Azure 3.4.0 e em versões posteriores.

    az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --storage-account mystorageaccount \
    --rp-name myRecoveryPointName \
    --restore-as-unmanaged-disk
    

Isso vai restaurar os discos gerenciados como discos não gerenciados na conta de armazenamento fornecida e não aproveitará a funcionalidade de restauração "instantânea". Em versões futuras da CLI, será obrigatório fornecer o parâmetro target-resource-group ou o parâmetro restore-as-unmanaged-disk.

Restaurar discos para uma região secundária

Os dados de backup são replicados para a região secundária quando você habilita a restauração entre regiões no cofre em que protegeu suas VMs. Você pode usar os dados de backup para executar uma operação de restauração.

Para restaurar discos na região secundária, use o sinalizador --use-secondary-region no comando az backup restore restore-disks. Especifique uma conta de armazenamento de destino localizada na região secundária.

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --storage-account targetStorageAccountID \
    --rp-name myRecoveryPointName \
    --target-resource-group targetRG
    --use-secondary-region

Restauração entre zonas

É possível restaurar VMs fixadas na zona do Azure em quaisquer zonas de disponibilidade da mesma região.

Para restaurar uma VM em outra zona, especifique o parâmetro TargetZoneNumber no comando az backup restore restore-disks.

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --storage-account targetStorageAccountID \
    --rp-name myRecoveryPointName \
    --target-resource-group targetRG
    --target-zone 3

A restauração entre zonas só tem suporte em cenários em que:

  • A VM de origem está fixada na zona e NÃO está criptografada.
  • O ponto de recuperação está presente apenas no nível do cofre. Não há suporte para instantâneos apenas ou instantâneos e camada de cofre.
  • A opção de recuperação é criar uma nova VM ou restaurar discos. A opção Substituir discos substitui os dados de origem; portanto, a opção zona de disponibilidade não é aplicável.
  • Criar VM/discos na mesma região quando a redundância de armazenamento do cofre é ZRS. Observe que isso não funcionará se a redundância de armazenamento do cofre for GRS, apesar de a VM de origem ser fixada na zona.
  • A criação de VM/discos na região emparelhada quando a redundância de armazenamento do cofre estiver habilitada para restauração entre regiões e se a região emparelhada der suporte a zonas.

Restauração de discos não gerenciados

Se a VM cujo backup foi realizado tiver discos não gerenciados e se a intenção for restaurar discos no ponto de recuperação, você primeiro fornecerá uma conta de armazenamento do Azure. Essa conta de armazenamento é usada para armazenar a configuração da VM e o modelo de implantação, que pode ser usado posteriormente para implantar a VM dos discos restaurados. Por padrão, os discos não gerenciados serão restaurados para as respectivas contas de armazenamento originais. Se você quiser restaurar todos os discos não gerenciados para um só local, a conta de armazenamento fornecida também poderá ser usada como um local de preparo para esses discos.

Nas etapas adicionais, o disco restaurado é usado para criar uma VM.

  1. Para criar uma conta de armazenamento, use az storage account create. O nome da conta de armazenamento deve conter apenas letras minúsculas e ser exclusivo globalmente. Substitua mystorageaccount pelo seu próprio nome exclusivo:

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. Restaure o disco do seu ponto de recuperação com az backup restore restore-disks. Substitua mystorageaccount pelo nome da conta de armazenamento que você criou no comando anterior. Substitua myRecoveryPointName pelo nome do ponto de recuperação obtido na saída do comando az backup recoverypoint list anterior:

    az backup restore restore-disks \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --storage-account mystorageaccount \
        --rp-name myRecoveryPointName
    

Conforme mencionado acima, os discos não gerenciados serão restaurados para as respectivas contas de armazenamento originais. Isso fornece o melhor desempenho de restauração. Mas se todos os discos não gerenciados precisarem ser restaurados para a conta de armazenamento fornecida, use o sinalizador relevante, conforme mostrado abaixo.

    az backup restore restore-disks \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --storage-account mystorageaccount \
        --rp-name myRecoveryPointName \
        --restore-to-staging-storage-account
    ```

## Monitor the restore job

To monitor the status of restore job, use [az backup job list](/cli/azure/backup/job#az-backup-job-list):

```azurecli-interactive
az backup job list \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --output table

O resultado é semelhante ao exemplo a seguir, que mostra que o trabalho de restauração está InProgress:

Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myvm         2017-09-19T19:39:52  0:00:34.520850
a0a8e5e6  Backup           Completed   myvm         2017-09-19T03:09:21  0:15:26.155212
fe5d0414  ConfigureBackup  Completed   myvm         2017-09-19T03:03:57  0:00:31.191807

Quando o Status do trabalho de restauração for relatado como Concluído, as informações necessárias (a configuração da VM e o modelo de implantação) terão sido restauradas para a conta de armazenamento.

Usando a identidade gerenciada para restaurar discos

O Backup do Azure também permite usar a MSI (identidade gerenciada) durante a operação de restauração para acessar contas de armazenamento nas quais os discos devem ser restaurados. Atualmente, essa opção tem suporte apenas para a restauração de disco gerenciado.

Para usar a identidade gerenciada que foi atribuída pelo sistema do cofre na restauração de discos, transmita um sinalizador adicional --mi-system-assigned para o comando az backup restore restore-disks. Para usar a identidade gerenciada atribuída por um usuário, transmita um parâmetro --mi-user-assigned com a ID do Azure Resource Manager da identidade gerenciada do cofre como o valor do parâmetro. Consulte este artigo para saber como habilitar a identidade gerenciada para seus cofres.

Criar uma VM do disco restaurado

A etapa final é criar uma VM dos discos restaurados. Você pode usar o modelo de implantação baixado para a conta de armazenamento fornecida a fim de criar a VM.

Buscar os detalhes do trabalho

Os detalhes do trabalho resultante fornecem o URI do modelo, o qual pode ser consultado e implantado. Use o comando job show para obter mais detalhes sobre o trabalho restaurado disparado.

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414

A saída dessa consulta fornecerá todos os detalhes, mas estamos interessados apenas no conteúdo da conta de armazenamento. Podemos usar a funcionalidade de consulta da CLI do Azure para buscar os detalhes relevantes

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414 \
    --query properties.extendedInfo.propertyBag

{
  "Config Blob Container Name": "myVM-daa1931199fd4a22ae601f46d8812276",
  "Config Blob Name": "config-myVM-1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414.json",
  "Config Blob Uri": "https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/config-appvm8-1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json",
  "Job Type": "Recover disks",
  "Recovery point time ": "12/25/2019 10:07:11 PM",
  "Target Storage Account Name": "mystorageaccount",
  "Target resource group": "mystorageaccountRG",
  "Template Blob Uri": "https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json"
}

Buscar o modelo de implantação

O modelo não pode ser acessado diretamente, pois está sob a conta de armazenamento de um cliente e o contêiner fornecido. Precisamos da URL completa (junto com um token SAS temporário) para acessar esse modelo.

Primeiro, extraia o URI do blob de modelo dos detalhes do trabalho

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414 \
    --query properties.extendedInfo.propertyBag."""Template Blob Uri"""

"https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json"

O URI do blob de modelo será desse formato e extrairá o nome do modelo

https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>

Portanto, o nome do modelo do exemplo acima será azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json e o nome do contêiner será myVM-daa1931199fd4a22ae601f46d8812276

Agora, obtenha o token SAS para esse contêiner e modelo, conforme detalhado aqui

expiretime=$(date -u -d '30 minutes' +%Y-%m-%dT%H:%MZ)
connection=$(az storage account show-connection-string \
    --resource-group mystorageaccountRG \
    --name mystorageaccount \
    --query connectionString)
token=$(az storage blob generate-sas \
    --container-name myVM-daa1931199fd4a22ae601f46d8812276 \
    --name azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json \
    --expiry $expiretime \
    --permissions r \
    --output tsv \
    --connection-string $connection)
url=$(az storage blob url \
   --container-name myVM-daa1931199fd4a22ae601f46d8812276 \
    --name azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json \
    --output tsv \
    --connection-string $connection)

Implantar o modelo para criar a VM

Agora, implante o modelo para criar a VM, conforme explicado aqui.

az deployment group create \
  --resource-group ExampleGroup \
  --template-uri $url?$token

Para confirmar que a VM foi criada usando o disco recuperado, liste as VMs em seu grupo de recursos com az vm list da seguinte maneira:

az vm list --resource-group myResourceGroup --output table

Restaurar dados na máquina virtual usando o CLI

Agora você pode restaurar os dados diretamente para a VM original/alternativa sem executar várias etapas.

Restaurar dados na VM original

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --restore-mode OriginalLocation 
    --storage-account mystorageaccount \
    --rp-name myRecoveryPointName \ 
Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myVM         2017-09-19T19:39:52  0:00:34.520850

O último comando dispara uma operação de restauração de local original para restaurar os dados in-loco na VM existente.

Restaurar dados para uma VM recém-criada

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --restore-mode AlternateLocation \
    --storage-account mystorageaccount \

--target-resource-group "Target_RG" \
    --rp-name myRecoveryPointName \
    --target-vm-name "TargetVirtualMachineName" \
    --target-vnet-name "Target_VNet" \
    --target-vnet-resource-group "Target_VNet_RG" \
    --target-subnet-name "targetSubNet"
Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myVM         2017-09-19T19:39:52  0:00:34.520850

O último comando dispara uma operação alternativa de restauração de local para criar uma VM no grupo de recursos em Target_RG de acordo com as entradas especificadas pelos parâmetros TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Isso garante que os dados sejam restaurados na VM, na rede virtual e na sub-rede necessárias.

Próximas etapas

Neste tutorial, você restaurou um disco de ponto de recuperação e, em seguida, criou uma VM do disco. Você aprendeu a:

  • Liste e selecione os pontos de recuperação
  • Restaurar um disco de um ponto de recuperação
  • Criar uma VM do disco restaurado

Avance para o próximo tutorial para saber mais sobre como restaurar arquivos individuais de um ponto de recuperação.