Last active
March 30, 2018 15:24
-
-
Save PoisonousJohn/890ffe1bfd17494faacefadc330db943 to your computer and use it in GitHub Desktop.
Copy Azure managed image to a different region. Source: https://michaelcollier.wordpress.com/2017/05/03/copy-managed-images/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
az account set --subscription $SubscriptionID | |
snapshotId=$(az snapshot show -g $ResourceGroupName -n $snapshotName --query "id" -o tsv ) | |
# Get the SAS for the snapshotId | |
snapshotSasUrl=$(az snapshot grant-access -g $ResourceGroupName -n $snapshotName --duration-in-seconds 3600 -o tsv) | |
# Setup the target storage account in another region | |
targetStorageAccountKey=$(az storage account keys list -g $ResourceGroupName --account-name $targetStorageAccountName --query "[:1].value" -o tsv) | |
storageSasToken=$(az storage account generate-sas --expiry 2017-05-02'T'12:00'Z' --permissions aclrpuw --resource-types sco --services b --https-only --account-name $targetStorageAccountName --account-key $targetStorageAccountKey -o tsv) | |
az storage container create -n $imageStorageContainerName --account-name $targetStorageAccountName --sas-token $storageSasToken | |
# Copy the snapshot to the target region using the SAS URL | |
imageBlobName = "$imageName-osdisk.vhd" | |
copyId=$(az storage blob copy start --source-uri $snapshotSasUrl --destination-blob $imageBlobName --destination-container $imageStorageContainerName --sas-token $storageSasToken --account-name $targetStorageAccountName) | |
# Figure out when the copy is destination-container | |
# TODO: Put this in a loop until status is 'success' | |
az storage blob show --container-name $imageStorageContainerName -n $imageBlobName --account-name $targetStorageAccountName --sas-token $storageSasToken --query "properties.copy.status" | |
# Get the URI to the blob | |
blobEndpoint=$(az storage account show -g $ResourceGroupName -n $targetStorageAccountName --query "primaryEndpoints.blob" -o tsv) | |
osDiskVhdUri="$blobEndpoint$imageStorageContainerName/$imageBlobName" | |
# Create the snapshot in the target region | |
snapshotName="$imageName-$targetLocation-snap" | |
az snapshot create -g $ResourceGroupName -n $snapshotName -l $targetLocation --source $osDiskVhdUri |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment