Restaurar uma VM com a CLI do Azure

O Azure Backup cria pontos de recuperação que são armazenados em cofres de recuperação georredundantes. Quando restaurar a partir de um ponto de recuperação, pode restaurar a VM completa ou ficheiros individuais. Este artigo explica como restaurar uma VM completa através do CLI. Neste tutorial, ficará a saber como:

  • Listar e selecionar pontos de recuperação
  • Restaurar um disco a partir de um ponto de recuperação
  • Criar uma VM a partir do disco restaurado

Para obter informações sobre como utilizar o PowerShell para restaurar um disco e criar uma VM recuperada, consulte Cópia de segurança e restauro de VMs do Azure com o PowerShell.

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

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

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

  • Este tutorial requer uma VM Linux que tenha sido protegida com o Azure Backup. Para simular um processo de recuperação e eliminação acidental da VM, crie uma VM a partir de um disco num ponto de recuperação. Se precisar de uma VM Linux que tenha sido protegida com o Azure Backup, veja Realizar uma cópia de segurança de uma máquina virtual no Azure com a CLI.

Descrição geral da Cópia de Segurança

Quando o Azure inicia uma cópia de segurança, a extensão da cópia de segurança na VM tira um instantâneo de ponto no tempo. A extensão da cópia de segurança é instalada na VM quando a primeira cópia de segurança é pedida. O Backup do Azure também pode tirar um instantâneo do armazenamento subjacente se a VM não estiver em execução quando o backup ocorrer.

Por predefinição, o Azure Backup cria uma cópia de segurança consistente com o sistema de ficheiros. Assim que o Azure Backup tira o instantâneo, os dados são transferidos para o cofre dos Serviços de Recuperação. Para maximizar a eficiência, o Azure Backup identifica e transfere apenas os blocos de dados que foram alterados desde a cópia de segurança anterior.

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

Listar pontos de recuperação disponíveis

Para restaurar um disco, selecione um ponto de recuperação como a origem dos dados de recuperação. Uma vez que a política predefinida cria um ponto de recuperação por dia e mantêm-nos durante 30 dias, pode manter um conjunto de pontos de recuperação que lhe permite selecionar um ponto específico no tempo para a recuperação.

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

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 da VM

Importante

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

Restauração de disco gerenciado

Se a VM de backup tiver discos gerenciados e se a intenção for restaurar discos gerenciados a partir do ponto de recuperação, primeiro forneça 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 a partir dos discos restaurados. Em seguida, você também fornece um grupo de recursos de destino para os discos gerenciados a serem restaurados.

  1. Para criar uma conta de armazenamento, utilize az storage account create. O nome da conta de armazenamento tem de estar todo em minúsculas e ser globalmente exclusivo. 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 ponto de recuperação com az backup restore restore-disks. Substitua mystorageaccount pelo nome da conta de armazenamento que 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 o qual os discos gerenciados são restaurados.

    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 target-resource-group não for fornecido, os discos gerenciados serão restaurados como discos não gerenciados para a conta de armazenamento fornecida. Isso terá consequências significativas para o tempo de restauração, uma vez que o tempo necessário para restaurar os discos depende inteiramente da conta de armazenamento fornecida. Você obterá 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 e, em vez disso, forneça o parâmetro restore-as-unmanaged-disk, conforme mostrado abaixo. Este parâmetro está disponível a partir da CLI do Azure 3.4.0 em diante.

    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 restaurará os discos gerenciados como discos não gerenciados para a 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 a 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 que protegeu suas VMs. Você pode usar os dados de backup para executar uma operação de restauração.

Para restaurar discos para a região secundária, use o --use-secondary-regionsinalizador no comando az backup restore restore-disks . Certifique-se de especificar 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 interzonal

Você pode restaurar VMs fixas de zona do Azure em qualquer zona de disponibilidade da mesma região.

Para restaurar uma VM para outra zona, especifique o TargetZoneNumber parâmetro 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 interzonal é suportada apenas em cenários onde:

  • A VM de origem é fixada por zona e NÃO está criptografada.
  • O ponto de recuperação está presente apenas na camada do vault. Não há suporte apenas para snapshots ou para snapshots e camadas de vault.
  • 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 de zona de disponibilidade não é aplicável.
  • Criação de VM/discos na mesma região quando a redundância de armazenamento do vault é ZRS. Observe que ele não funciona se a redundância de armazenamento do vault for GRS, mesmo que a VM de origem esteja fixada na zona.
  • Criação de VM/discos na região emparelhada quando a redundância de armazenamento do vault está habilitada para Restauração entre regiões e se a região emparelhada oferece suporte a zonas.

Restauração de discos não gerenciados

Se a VM de backup tiver discos não gerenciados e se a intenção for restaurar discos do ponto de recuperação, primeiro forneça 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 a partir dos discos restaurados. Por padrão, os discos não gerenciados serão restaurados para suas contas de armazenamento originais. Se você deseja restaurar todos os discos não gerenciados para um único lugar, a conta de armazenamento fornecida também pode ser usada como um local de preparo para esses discos também.

Nos passos adicionais, o disco restaurado é utilizado para criar uma VM.

  1. Para criar uma conta de armazenamento, utilize az storage account create. O nome da conta de armazenamento tem de estar todo em minúsculas e ser globalmente exclusivo. 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 ponto de recuperação com az backup restore restore-disks. Substitua mystorageaccount pelo nome da conta de armazenamento que criou no comando anterior. Substitua myRecoveryPointName pelo nome do ponto de recuperação que obteve na saída a partir do comando anterior az backup recoverypoint list:

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

Como mencionado acima, os discos não gerenciados serão restaurados para sua conta de armazenamento original. Isso fornece o melhor desempenho de restauração. Mas se todos os discos não gerenciados precisarem ser restaurados para uma determinada conta de armazenamento, 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

A saída é semelhante ao exemplo seguinte, o qual mostra que a tarefa de restauro está InProgress (Em curso):

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 relata Concluído, as informações necessárias (configuração da VM e o modelo de implantação) são restauradas para a conta de armazenamento.

Usando a identidade gerenciada para restaurar discos

O Backup do Azure também permite que você use a identidade gerenciada (MSI) durante a operação de restauração para acessar contas de armazenamento nas quais os discos precisam ser restaurados. Atualmente, essa opção é suportada apenas para restauração de disco gerenciado.

Se desejar usar a identidade gerenciada atribuída ao sistema do vault para restaurar discos, passe um sinalizador adicional --mi-system-assigned para o comando az backup restore restore-disks. Se desejar usar uma identidade gerenciada atribuída pelo usuário, passe 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 ativar a identidade gerenciada para seus cofres.

Criar uma VM a partir do disco restaurado

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

Buscar os detalhes da vaga

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

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

A saída desta consulta fornecerá todos os detalhes, mas estamos interessados apenas no conteúdo da conta de armazenamento. Podemos usar o recurso 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 é diretamente acessível, pois está sob a conta de armazenamento de um cliente e o contêiner fornecido. Precisamos do URL completo (juntamente com um token SAS temporário) para aceder a este 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á deste formato e extrairá o nome do modelo

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

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

Agora obtenha o token SAS para este 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 a partir do disco recuperado, liste as VMs no seu grupo de recursos com az vm list da seguinte forma:

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

Restaurar dados para a máquina virtual usando a CLI

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

Restaurar dados para a 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 de restauração de local alternativo para criar uma nova VM em Target_RG grupo de recursos de acordo com as entradas especificadas pelos parâmetros TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Isso garante que os dados sejam restaurados na VM, rede virtual e sub-rede necessárias.

Próximos passos

Neste tutorial, restaurou um disco a partir de um ponto de recuperação e, em seguida, criou uma VM a partir do disco. Aprendeu a:

  • Listar e selecionar pontos de recuperação
  • Restaurar um disco a partir de um ponto de recuperação
  • Criar uma VM a partir do disco restaurado

Avance para o próximo tutorial para saber mais sobre o restauro de ficheiros individuais a partir de um ponto de recuperação.