Memindahkan Marketplace Azure Virtual Machine ke langganan lain
Berlaku untuk: ✔️ mesin virtual Linux ✔️ mesin virtual Windows ✔️ Set skala fleksibel
Untuk memindahkan komputer virtual Marketplace ke langganan lain, Anda harus memindahkan disk OS ke langganan tersebut lalu membuat komputer virtual ulang.
Anda tidak memerlukan prosedur ini untuk memindahkan disk data ke langganan baru. Sebagai gantinya, buat mesin virtual baru di langganan baru dari Marketplace, lalu pindahkan dan lampirkan disk data.
Skrip ini menunjukkan tiga operasi:
- Membuat snapshot disk OS.
- Memindahkan snapshot ke langganan lain.
- Membuat komputer virtual berdasarkan snapshot tersebut.
Prasyarat
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
Sampel skrip
Untuk memindahkan komputer virtual Marketplace ke langganan yang berbeda, Anda harus membuat komputer virtual baru untuk penawaran Marketplace yang sama dari disk OS yang dipindahkan.
Catatan
Jika paket komputer virtual tidak lagi tersedia di Marketplace, Anda tidak dapat menggunakan prosedur ini.
#!/bin/bash
# Set variable values before proceeding.
# Variables
sourceResourceGroup= Resource group for the current virtual machine
sourceSubscription= Subscription for the current virtual machine
vmName= Name of the current virtual machine
destinationResourceGroup= Resource group for the new virtual machine, create if necessary
destinationSubscription= Subscription for the new virtual machine
# Set your current subscription for the source virtual machine
az account set --subscription $sourceSubscription
# Load variables about your virtual machine
# osType = windows or linux
osType=$(az vm get-instance-view --resource-group $sourceResourceGroup \
--name $vmName --subscription $sourceSubscription \
--query 'storageProfile.osDisk.osType' --output tsv)
# offer = Your offer in Marketplace
offer=$(az vm get-instance-view --resource-group $sourceResourceGroup \
--name $vmName --query 'storageProfile.imageReference.offer' --output tsv)
# plan = Your plan in Marketplace
plan=$(az vm get-instance-view --resource-group $sourceResourceGroup \
--name $vmName --query 'plan' --output tsv)
# publisher = Your publisher in Marketplace
publisher=$(az vm get-instance-view --resource-group $sourceResourceGroup \
--name $vmName --query 'storageProfile.imageReference.publisher' --output tsv)
# Get information to create new virtual machine
planName=$(az vm get-instance-view --resource-group $sourceResourceGroup \
--subscription $sourceSubscription --query 'plan.name' --name $vmName)
planProduct=$(az vm get-instance-view --resource-group $sourceResourceGroup \
--subscription $sourceSubscription --query 'plan.product' --name $vmName)
planPublisher=$(az vm get-instance-view --resource-group $sourceResourceGroup \
--subscription $sourceSubscription --query 'plan.publisher' --name $vmName)
# Get the name of the OS disk
osDiskName=$(az vm show --resource-group $sourceResourceGroup --name $vmName \
--query 'storageProfile.osDisk.name' --output tsv)
# Verify the terms for your market virtual machine
az vm image terms show --offer $offer --plan '$plan' --publisher $publisher \
--subscription $sourceSubscription
# Deallocate the virtual machine
az vm deallocate --resource-group $sourceResourceGroup --name $vmName
# Create a snapshot of the OS disk
az snapshot create --resource-group $sourceResourceGroup --name MigrationSnapshot \
--source "/subscriptions/$sourceSubscription/resourceGroups/$sourceResourceGroup/providers/Microsoft.Compute/disks/$osDiskName"
# Move the snapshot to your destination resource group
az resource move --destination-group $destinationResourceGroup \
--destination-subscription-id $destinationSubscription \
--ids "/subscriptions/$sourceSubscription/resourceGroups/$sourceResourceGroup/providers/Microsoft.Compute/snapshots/MigrationSnapshot"
# Set your subscription to the destination value
az account set --subscription $destinationSubscription
# Accept the terms from the Marketplace
az vm image terms accept --offer $offer --plan '$plan' --publisher $publisher \
--subscription $destinationSubscription
# Create disk from the snapshot
az disk create --resource-group $destinationResourceGroup --name DestinationDisk \
--source "/subscriptions/$destinationSubscription/resourceGroups/$destinationResourceGroup/providers/Microsoft.Compute/snapshots/MigrationSnapshot" \
--os-type $osType
# Create virtual machine from disk
az vm create --resource-group $destinationResourceGroup --name $vmName \
--plan-name $planName --plan-product $planProduct --plan-publisher $planPublisher \
--attach-os-disk "/subscriptions/$destinationSubscription/resourceGroups/$destinationResourceGroup/providers/Microsoft.Compute/disks/DestinationDisk" \
--os-type $osType
Membersihkan sumber daya
Setelah sampel dijalankan, gunakan perintah berikut untuk menghapus grup sumber daya dan semua sumber daya terkait:
az group delete --name $sourceResourceGroup --subscription $sourceSubscription
az group delete --name $destinationResourceGroup --subscription $destinationSubscription
Referensi Azure CLI yang digunakan dalam artikel ini
- az account set
- az disk create
- hapus grup az
- az resource move
- az snapshot create
- az vm create
- az vm deallocate
- az vm delete
- az vm get-instance-view
- az vm image terms accept
- az vm image terms show
- az vm show