Déplacer une machine virtuelle Azure de Place de marché dans un autre abonnement
S’applique à : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows ✔️ Groupes identiques flexibles
Pour déplacer une machine virtuelle de Place de marché dans un autre abonnement, vous devez déplacer le disque du système d’exploitation vers cet abonnement, puis recréer la machine virtuelle.
Cette procédure est inutile pour déplacer un disque de données vers un nouvel abonnement. Créez plutôt une machine virtuelle dans le nouvel abonnement à partir de la Place de marché, puis déplacez et attachez le disque de données.
Ce script illustre trois opérations :
- Créer un instantané de disque de système d’exploitation.
- Déplacer l’instantané dans un abonnement différent.
- Créer une machine virtuelle basée sur cet instantané.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
Exemple de script
Pour déplacer une machine virtuelle de Place de marché dans un autre abonnement, vous devez créer une machine virtuelle pour la même offre de Place de marché à partir du disque de système d’exploitation déplacé.
Notes
Si le plan de machine virtuelle n’est plus disponible dans la Place de marché, vous ne pouvez pas utiliser cette procédure.
#!/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
Nettoyer les ressources
Une fois l’exemple exécuté, utilisez les commandes suivantes pour supprimer les groupes de ressources et toutes les ressources associées :
az group delete --name $sourceResourceGroup --subscription $sourceSubscription
az group delete --name $destinationResourceGroup --subscription $destinationSubscription
Références Azure CLI utilisées dans cet article
- az account set
- az disk create
- az group delete
- 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