Copiar o instantâneo de um disco gerido para uma subscrição idêntica ou diferente com a CLI

Este script copia um instantâneo de um disco gerido para uma subscrição idêntica ou diferente. Utilize este script para os seguintes cenários:

  • Migrar um instantâneo em armazenamento Premium (Premium_LRS) para o armazenamento Standard (Standard_LRS ou Standard_ZRS) para reduzir o seu custo.
  • Migrar um instantâneo do armazenamento localmente redundante (Premium_LRS, Standard_LRS) para a zona de armazenamento redundante (Standard_ZRS) para beneficiar da maior fiabilidade do armazenamento ZRS.
  • Mover um instantâneo para diferentes subscrições na mesma região para uma retenção mais longa.

Nota

Ambas as subscrições devem ser localizadas sob o mesmo inquilino

Se não tiver uma subscrição do Azure, crie uma conta Azure gratuita antes de começar.

Pré-requisitos

  • Utilize o ambiente Bash em Azure Cloud Shell. Para mais informações, consulte Azure Cloud Shell Quickstart - Bash.

    Iniciar Cloud Shell numa nova janela

  • Se preferir executar os comandos de referência CLI localmente, instale o Azure CLI. Se estiver a funcionar no Windows ou no macOS, considere executar o Azure CLI num recipiente Docker. Para mais informações, consulte Como executar o CLI Azure num contentor 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 inscrição, consulte iniciar súmis com o CLI Azure.

    • Quando for solicitado, instale a extensão Azure CLI 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.

Script de exemplo

Iniciar o Azure Cloud Shell

O Azure Cloud Shell é um shell interativo gratuito que pode utilizar para executar os passos neste artigo. Tem as ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a sua conta.

Para abrir o Cloud Shell, basta selecionar Experimente no canto superior direito de um bloco de código. Também pode iniciar o Cloud Shell num separador do browser separado ao aceder a https://shell.azure.com.

Quando Cloud Shell abrir, verifique se a Bash está selecionada para o seu ambiente. As sessões subsequentes utilizarão o CLI Azure num ambiente bash, seleciona a Cópia para copiar os blocos de código, colá-lo no Cloud Shell e pressionar Enter para executá-lo.

Iniciar sessão no Azure

Cloud Shell é automaticamente autenticado na conta inicial com a qual se inscreve. Utilize o seguinte script para iniciar sing usando uma subscrição diferente, substituindo <Subscription ID> pelo seu ID de subscrição Azure. Se não tiver uma subscrição do Azure, crie uma conta Azure gratuita antes de começar.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

Para obter mais informações, consulte a subscrição ativa definida ou faça login interativamente

Executar o script

#Provide the subscription Id of the subscription where snapshot exists
sourceSubscriptionId="<subscriptionId>"

#Provide the name of your resource group where snapshot exists
sourceResourceGroupName=mySourceResourceGroupName

#Provide the name of the snapshot
snapshotName=mySnapshotName

#Set the context to the subscription Id where snapshot exists
az account set --subscription $sourceSubscriptionId

#Get the snapshot Id 
snapshotId=$(az snapshot show --name $snapshotName --resource-group $sourceResourceGroupName --query [id] -o tsv)

#If snapshotId is blank then it means that snapshot does not exist.
echo 'source snapshot Id is: ' $snapshotId

#Provide the subscription Id of the subscription where snapshot will be copied to
#If snapshot is copied to the same subscription then you can skip this step
targetSubscriptionId=6492b1f7-f219-446b-b509-314e17e1efb0

#Name of the resource group where snapshot will be copied to
targetResourceGroupName=mytargetResourceGroupName

#Set the context to the subscription Id where snapshot will be copied to
#If snapshot is copied to the same subscription then you can skip this step
az account set --subscription $targetSubscriptionId

#Copy snapshot to different subscription using the snapshot Id
#We recommend you to store your snapshots in Standard storage to reduce cost. Please use Standard_ZRS in regions where zone redundant storage (ZRS) is available, otherwise use Standard_LRS
#Please check out the availability of ZRS here: https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy-zrs#support-coverage-and-regional-availability
az snapshot create --resource-group $targetResourceGroupName --name $snapshotName --source $snapshotId --sku Standard_LRS

Limpar os recursos

Execute o seguinte comando para remover o grupo de recursos, a VM e todos os recursos relacionados.

az group delete --name mySourceResourceGroupName

Referência da amostra

Este script utiliza comandos seguintes para criar uma imagem instantânea na subscrição do alvo utilizando o Id instantâneo da origem. Cada comando na tabela liga à documentação específica do comando.

Comando Notas
az snapshot show Obtém todas as propriedades de um instantâneo através do nome e das propriedades do grupo de recursos do instantâneo. A Id propriedade é usada para copiar o instantâneo para diferentes subscrições.
az snapshot create Copia um instantâneo criando um instantâneo em diferentes subscrições usando o Id e o nome do instantâneo dos pais.

Passos seguintes

Criar uma máquina virtual a partir de um instantâneo

Para obter mais informações sobre a CLI do Azure, veja Documentação da CLI do Azure.

Pode ver exemplos do script da CLI da máquina virtual e discos geridos adicionais na Documentação da VM Linux do Azure.