Restauración de una máquina virtual con la CLI de Azure

Azure Backup crea puntos de recuperación que se almacenan en almacenes de recuperación con redundancia geográfica. Cuando se realiza una restauración desde un punto de recuperación, se puede restaurar toda una máquina virtual o archivos individuales. En este artículo se explica cómo restaurar una máquina virtual completa mediante la CLI. En este tutorial, aprenderá a:

  • Enumerar y seleccionar puntos de recuperación
  • Restaurar un disco desde un punto de recuperación
  • Crear una máquina virtual a partir del disco restaurado

Para información sobre cómo usar PowerShell para restaurar un disco y crear una máquina virtual recuperada, consulte Copia de seguridad y restauración de máquinas virtuales de Azure con PowerShell.

Requisitos previos

  • Este tutorial requiere la versión 2.0.18 de la CLI de Azure o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

  • Para este tutorial se necesita una máquina virtual Linux protegida con Azure Backup. Para simular un proceso de recuperación y eliminación de máquina virtual accidental, cree una máquina virtual desde un disco en un punto de recuperación. Si necesita una máquina virtual Linux que esté protegida con Azure Backup, consulte Copia de seguridad de una máquina virtual en Azure con la CLI.

Introducción a Backup

Cuando Azure inicia una copia de seguridad, la extensión de copia de seguridad en la máquina virtual toma una instantánea de un momento dado. La extensión de copia de seguridad se instala en la máquina virtual cuando se solicita la primera copia de seguridad. Azure Backup también puede tomar una instantánea del almacenamiento subyacente, si la máquina virtual no se está ejecutando cuando se realiza la copia de seguridad.

De forma predeterminada, Azure Backup toma una copia de seguridad coherente del sistema de archivos. Después de que el servicio Azure Backup tome la instantánea, los datos se transfieren al almacén de Recovery Services. Para que el proceso resulte más eficaz, Azure Backup identifica y transfiere únicamente los bloques de datos que han cambiado desde la última copia de seguridad.

Cuando finaliza la transferencia de datos, se elimina la instantánea y se crea un punto de recuperación.

Lista de puntos de recuperación disponibles

Para restaurar un disco, debe seleccionar un punto de recuperación como el origen de los datos de recuperación. Dado que la directiva predeterminada crea un punto de recuperación cada día y lo mantiene durante 30 días, puede mantener un conjunto de puntos de recuperación que le permita seleccionar un punto concreto a tiempo para la recuperación.

Para ver una lista de los puntos de recuperación disponibles, use az backup recoverypoint list. El punto de recuperación name se usa para recuperar discos. En este tutorial, queremos usar el punto de recuperación más reciente disponible. El parámetro --query [0].name selecciona el nombre del punto de recuperación más reciente de la siguiente manera:

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 un disco de máquina virtual

Importante

Se recomienda usar la versión 2.0.74 de Az CLI o una versión posterior para obtener todas las ventajas de una restauración rápida, incluida la restauración de discos administrados. Es mejor usar siempre la versión más reciente.

Restauración de un disco administrado

Si la máquina virtual con copia de seguridad tiene discos administrados y la intención es restaurarlos desde el punto de recuperación, primero debe proporcionar una cuenta de almacenamiento de Azure. Esta cuenta de almacenamiento se usa para almacenar la configuración de la máquina virtual y la plantilla de implementación que se pueden usar posteriormente para implementar la máquina virtual desde los discos restaurados. A continuación, también se proporciona un grupo de recursos de destino para los discos administrados en los que se va a realizar la restauración.

  1. Para crear una cuenta de almacenamiento, use az storage account create. El nombre de la cuenta de almacenamiento debe estar en minúsculas y ser único globalmente. Reemplace mystorageaccount por su propio nombre único:

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. Restaure el disco desde el punto de recuperación con az backup restore restore-disks. Reemplace mystorageaccount por el nombre de la cuenta de almacenamiento que creó en el comando anterior. Reemplace myRecoveryPointName por el nombre del punto de recuperación que obtuvo en la salida del comando az backup recoverypoint list anterior. Proporcione también el grupo de recursos de destino donde se van a restaurar los discos administrados.

    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
    

    Advertencia

    Si no se proporciona el parámetro target-resource-group, los discos administrados se restaurarán como discos no administrados en la cuenta de almacenamiento especificada. Esto tendrá consecuencias significativas en el tiempo de restauración, ya que el tiempo que se tarda en restaurar los discos por completo depende de la cuenta de almacenamiento especificada. Obtendrá la ventaja de la restauración instantánea solo cuando se proporcione el parámetro target-resource-group. Si la intención es restaurar los discos administrados como no administrados, no proporcione el parámetro target-resource-group y, en su lugar, use el parámetro restore-as-unmanaged-disk, como se muestra a continuación. Este parámetro está disponible desde az 3.4.0 en adelante.

    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
    

De esta forma se restaurarán los discos administrados como no administrados en la cuenta de almacenamiento dada y no se aprovechará la funcionalidad de restauración instantánea. En versiones futuras de la CLI, será obligatorio proporcionar el parámetro target-resource-group o el parámetro restore-as-unmanaged-disk.

Restauración de discos en una región secundaria

Los datos de copia de seguridad se replican en la región secundaria cuando habilita la restauración entre regiones en el almacén que ha protegido las máquinas virtuales. Puede usar los datos de copia de seguridad para realizar una operación de restauración.

Para restaurar discos en la región secundaria, use la marca --use-secondary-region en el comando --use-secondary-region. Asegúrese de especificar una cuenta de almacenamiento de destino que se encuentre en la región secundaria.

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

Restauración entre zonas

Puede restaurar las máquinas virtuales ancladas de la zona de Azure en cualquier zona de disponibilidad de la misma región.

Para restaurar una máquina virtual a otra zona, especifique el parámetro TargetZoneNumber en el comando TargetZoneNumber.

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

La restauración entre zonas solo se admite en escenarios en los que:

  • La máquina virtual de origen está anclada a una zona y NO está cifrada.
  • El punto de recuperación solo está presente en el nivel del almacén. No se admiten solo instantáneas o instantáneas y niveles de almacén.
  • La opción de recuperación consiste en crear una máquina virtual o restaurar discos. La opción Reemplazar discos reemplaza los datos de origen; por tanto, la opción de zona de disponibilidad no es aplicable.
  • Creación de máquinas virtuales o discos en la misma región cuando la redundancia de almacenamiento del almacén es ZRS. Tenga en cuenta que no funciona si la redundancia de almacenamiento del almacén es GRS, aunque la máquina virtual de origen está anclada en la zona.
  • La creación de máquinas virtuales o discos en la región emparejada cuando la redundancia de almacenamiento del almacén está habilitada para la restauración entre regiones y si la región emparejada admite zonas.

Restauración de discos no administrados

Si la máquina virtual con copia de seguridad tiene discos no administrados y la intención es restaurarlos desde el punto de recuperación, primero debe proporcionar una cuenta de almacenamiento de Azure. Esta cuenta de almacenamiento se usa para almacenar la configuración de la máquina virtual y la plantilla de implementación que se pueden usar posteriormente para implementar la máquina virtual desde los discos restaurados. De forma predeterminada, los discos no administrados se restaurarán a sus cuentas de almacenamiento originales. Si quiere restaurar todos los discos no administrados en un solo lugar, también puede usar la cuenta de almacenamiento especificada como ubicación provisional para esos discos.

En pasos adicionales, el disco restaurado se usa para crear una máquina virtual.

  1. Para crear una cuenta de almacenamiento, use az storage account create. El nombre de la cuenta de almacenamiento debe estar en minúsculas y ser único globalmente. Reemplace mystorageaccount por su propio nombre único:

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. Restaure el disco desde el punto de recuperación con az backup restore restore-disks. Reemplace mystorageaccount por el nombre de la cuenta de almacenamiento que creó en el comando anterior. Reemplace myRecoveryPointName por el nombre del punto de recuperación que obtuvo en la salida del 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
    

Como se mencionó anteriormente, los discos no administrados se restaurarán a su cuenta de almacenamiento original. Esto proporciona el mejor rendimiento de restauración. Pero si todos los discos no administrados deben restaurarse a una cuenta de almacenamiento determinada, use la marca pertinente como se muestra a continuación.

    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

El resultado es similar al ejemplo siguiente, que muestra que el estado del trabajo de restauración es 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

Cuando el valor de Estado del trabajo de restauración es Completado, la información necesaria (configuración de la máquina virtual y la plantilla de implementación) se ha restaurado en la cuenta de almacenamiento.

Uso de una identidad administrada para restaurar discos

Azure Backup también permite usar una identidad administrada (MSI) durante la operación de restauración para acceder a las cuentas de almacenamiento en las que se deben restaurar los discos. Esta opción solo se admite actualmente para la restauración de discos administrados.

Si desea usar la identidad administrada asignada por el sistema del almacén para restaurar discos, pase la marca adicional --mi-system-assigned al comando az backup restore restore-disks. Si quiere usar una identidad administrada asignada por el usuario, pase un parámetro --mi-user-assigned con el identificador de Azure Resource Manager de la identidad administrada del almacén como valor. Consulte este artículo para obtener información sobre cómo habilitar la identidad administrada de los almacenes.

Crear una máquina virtual a partir del disco restaurado

El último paso es crear una máquina virtual a partir de los discos restaurados. Puede usar la plantilla de implementación descargada en la cuenta de almacenamiento especificada para crear la máquina virtual.

Captura de los detalles del trabajo

Los detalles del trabajo resultante ofrecen la plantilla de URI que se puede consultar e implementar. Use el comando job show para obtener más detalles del trabajo restaurado desencadenado.

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

La salida de esta consulta proporcionará todos los detalles, pero solo nos interesa el contenido de la cuenta de almacenamiento. Se puede usar la funcionalidad de consulta de la CLI de Azure para capturar los detalles pertinentes.

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"
}

Captura de la plantilla de implementación

La plantilla no es accesible directamente, ya que está en la cuenta de almacenamiento de un cliente y un contenedor concreto. Necesitamos la dirección URL completa (junto con un token de SAS temporal) para acceder a ella.

En primer lugar, extraiga el URI del blob de plantilla de los detalles del trabajo

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"

El URI del blob de plantilla tendrá este formato y servirá para extraer el nombre de la plantilla

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

Por lo tanto, el nombre de plantilla del ejemplo anterior será azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json y el del contenedor, myVM-daa1931199fd4a22ae601f46d8812276

Ahora, obtenga el token de SAS para el contenedor y la plantilla como se detalla aquí

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)

Implementación de la plantilla para crear la máquina virtual

Ahora, implemente la plantilla para crear la máquina virtual como se explica aquí.

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

Para comprobar que la máquina virtual se ha creado desde el disco recuperado, enumere las máquinas virtuales del grupo de recursos con az vm list como se indica a continuación:

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

Pasos siguientes

En este tutorial, ha restaurado un disco desde un punto de recuperación y, a continuación, ha creado una máquina virtual desde el disco. Ha aprendido a:

  • Enumerar y seleccionar puntos de recuperación
  • Restaurar un disco desde un punto de recuperación
  • Crear una máquina virtual a partir del disco restaurado

Avance hasta el siguiente tutorial para obtener información acerca de cómo restaurar archivos individuales desde un punto de recuperación.