Migration de ressources IaaS d’un environnement classique vers Azure Resource Manager à l’aide de PowerShell

S’applique à : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows

Important

Aujourd’hui, environ 90 % des machines virtuelles IaaS utilisent Azure Resource Manager. Depuis le 28 février 2020, les machines virtuelles classiques sont déconseillées. Elles vont être complètement mises hors service le 6 septembre 2023. Apprenez-en davantage sur cette désapprobation et son impact sur vous.

Ces étapes vous montrent comment utiliser les commandes Azure PowerShell pour migrer des ressources d’infrastructure en tant que service (IaaS) à partir du modèle de déploiement Classic vers le modèle de déploiement Azure Resource Manager.

Si vous le souhaitez, vous pouvez également migrer des ressources à l’aide d’Azure CLI.


Voici un organigramme permettant d’identifier l’ordre dans lequel les étapes doivent être exécutées lors d’un processus de migration.

Screenshot that shows the migration steps

Étape 1 : Planifier la migration

Voici quelques-unes des meilleures pratiques recommandées pour déterminer si vous devez migrer des ressources IaaS d’un environnement classique vers Resource Manager :

  • Lisez les Fonctionnalités et configurations prises en charge et non prises en charge. Si vous avez des machines virtuelles qui utilisent des configurations ou fonctionnalités non prises en charge, attendez que leur prise en charge soit annoncée. Vous pouvez également supprimer cette fonctionnalité ou modifier cette configuration pour permettre la migration si cela répond à vos besoins.
  • Si vous avez déjà des scripts automatisés qui déploient votre infrastructure et vos applications, essayez de créer une configuration de test similaire à l’aide de ces scripts pour la migration. Vous pouvez également configurer des environnements de test à l’aide du portail Azure.

Important

Les passerelles d’application ne sont actuellement pas prises en charge pour la migration de déploiement classique vers Resource Manager. Pour migrer un réseau virtuel à l’aide d’une passerelle d’application, supprimez la passerelle avant d’exécuter une opération de préparation pour déplacer le réseau. Après avoir effectué la migration, reconnectez la passerelle dans Azure Resource Manager.

Les passerelles Azure ExpressRoute se connectant à des circuits ExpressRoute dans un autre abonnement ne peuvent pas être migrées automatiquement. Dans ce cas, supprimez la passerelle ExpressRoute, migrez le réseau virtuel et recréez la passerelle. Pour plus d’informations, consultez Migrer des circuits ExpressRoute et les réseaux virtuels associés du modèle de déploiement classique au modèle de déploiement Resource Manager.

Étape 2 : Installer la version la plus récente de PowerShell

Il existe deux options principales pour l’installation d’Azure PowerShell : PowerShell Gallery ou Web Platform Installer (WebPI). WebPI reçoit des mises à jour mensuelles. PowerShell Gallery reçoit des mises à jour en continu. Cet article est basé sur Azure PowerShell version 2.1.0.

Pour connaître la procédure d’installation, consultez l’article Installation et configuration d’Azure PowerShell.

Étape 3 : Vérifier que vous êtes administrateur de l’abonnement

Pour effectuer cette migration, vous devez être ajouté en tant que coadministrateur de l’abonnement dans le Portail Azure.

  1. Connectez-vous au portail Azure.
  2. Dans le menu Hub, sélectionnez Abonnement. Si vous ne le voyez pas, sélectionnez Tous les services.
  3. Recherchez l’entrée d’abonnement appropriée, puis examinez le champ MON RÔLE. Pour un coadministrateur, la valeur doit être Administrateur de compte.

Si vous n'êtes pas en mesure d'ajouter un coadministrateur, contactez un administrateur de service ou un coadministrateur de l'abonnement afin qu'il vous ajoute.

Étape 4 : Définir votre abonnement et s’inscrire pour la migration

Commencez par démarrer une invite de commandes PowerShell. Pour la migration, configurez votre environnement à la fois pour l’environnement classique et pour Resource Manager.

Connectez-vous à votre compte pour le modèle Resource Manager.

    Connect-AzAccount

Obtenez tous les abonnements disponibles à l’aide de la commande suivante :

    Get-AzSubscription | Sort Name | Select Name

Définissez votre abonnement Azure pour la session active. Cet exemple définit le nom d’abonnement par défaut sur My Azure Subscription. Remplacez l’exemple de nom d’abonnement par le vôtre.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Notes

L’inscription constitue une étape unique, mais vous devez la faire une fois avant de tenter la migration. Sans vous inscrire, vous verrez le message d’erreur suivant :

BadRequest : L'abonnement n'est pas inscrit pour la migration.

Inscrivez-vous auprès du fournisseur de ressources de migration à l’aide de la commande suivante :

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Patientez cinq minutes le temps que l’inscription se termine. Vérifiez l’état de l’approbation à l’aide de la commande suivante :

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Assurez-vous que RegistrationState est Registered avant de continuer.

Avant de basculer vers le modèle de déploiement Classic, vérifiez que vous avez un nombre suffisant de processeurs virtuels de machines virtuelles Azure Resource Manager dans la région Azure de votre déploiement ou réseau virtuel actuel. Vous pouvez utiliser la commande PowerShell suivante pour vérifier la quantité de processeurs virtuels dont vous disposez actuellement dans Azure Resource Manager. Pour en savoir plus sur les quotas de processeurs virtuels, consultez Limites et Azure Resource Manager.

Cet exemple vérifie la disponibilité dans la région USA Ouest. Remplacez l’exemple de nom de région par le vôtre.

    Get-AzVMUsage -Location "West US"

À présent, connectez-vous à votre compte pour le modèle de déploiement classique.

    Add-AzureAccount

Obtenez tous les abonnements disponibles à l’aide de la commande suivante :

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Définissez votre abonnement Azure pour la session active. Cet exemple définit l’abonnement par défaut sur My Azure Subscription. Remplacez l’exemple de nom d’abonnement par le vôtre.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

Étape 5 : exécuter des commandes pour effectuer la migration de vos ressources IaaS

Notes

Toutes les opérations décrites ici sont idempotentes. Si vous rencontrez un problème autre qu’une fonctionnalité non prise en charge ou qu’une erreur de configuration, nous vous recommandons de réexécuter la procédure de préparation, d’abandon ou de validation. La plateforme réessaie alors d’exécuter l’action.

Étape 5a : Option 1 : migrer les machines virtuelles vers un service cloud (pas un réseau virtuel)

Récupérez la liste des services cloud à l’aide de la commande suivante. Sélectionnez ensuite le service cloud que vous souhaitez migrer. La commande renvoie un message d’erreur si les machines virtuelles du service cloud sont dans un réseau virtuel ou si elles ont des rôles web/de travail.

    Get-AzureService | ft Servicename

Obtenez le nom du déploiement du service cloud. Dans cet exemple, le nom du service est Mon service. Remplacez l’exemple de nom de service avec votre propre nom de service.

    $serviceName = "My Service"
    $deployment = Get-AzureDeployment -ServiceName $serviceName
    $deploymentName = $deployment.DeploymentName

Préparez les machines virtuelles dans le service cloud pour la migration. Vous disposez de deux options.

  • Option n°1 : Migrer les machines virtuelles vers un réseau virtuel créé à partir d’une plateforme.

    La première étape consiste à vérifier si vous pouvez migrer le service cloud à l’aide des commandes suivantes :

    $validate = Move-AzureService -Validate -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    $validate.ValidationMessages
    

    La commande suivante affiche les avertissements et erreurs qui bloquent la migration. Si les messages de validation ne contiennent pas d'erreur de type, vous pouvez passer à l'étape de préparation.

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • Option n°2 : Migrer vers un réseau virtuel existant dans le modèle de déploiement Resource Manager.

    Cet exemple définit le nom de groupe de ressources sur myResourceGroup, le nom de réseau virtuel sur myVirtualNetwork et le nom du sous-réseau sur mySubNet. Remplacez les noms dans l’exemple par les noms de vos propres ressources.

    $existingVnetRGName = "myResourceGroup"
    $vnetName = "myVirtualNetwork"
    $subnetName = "mySubNet"
    

    La première étape consiste à vérifier si vous pouvez migrer le réseau virtuel à l’aide de la commande suivante :

    $validate = Move-AzureService -Validate -ServiceName $serviceName `
        -DeploymentName $deploymentName -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName -VirtualNetworkName $vnetName -SubnetName $subnetName
    $validate.ValidationMessages
    

    La commande suivante affiche les avertissements et erreurs qui bloquent la migration. Si les messages de validation ne contiennent pas d'erreurs, vous pouvez passer à l'étape de préparation suivante :

        Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName `
        -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName `
        -VirtualNetworkName $vnetName -SubnetName $subnetName
    

Une fois l’opération de préparation effectuée avec une des options précédentes, interrogez l’état de la migration des machines virtuelles. Assurez-vous qu’elles ont l’état Prepared.

Cet exemple définit le nom de la machine virtuelle sur myVM. Remplacez l’exemple de nom avec votre propre nom de machine virtuelle.

    $vmName = "myVM"
    $vm = Get-AzureVM -ServiceName $serviceName -Name $vmName
    $vm.VM.MigrationState

Vérifiez la configuration pour les ressources préparées à l’aide de PowerShell ou du portail Azure. Si vous n’êtes pas prêt pour la migration et que vous souhaitez revenir à l’ancien état, utilisez la commande suivante :

    Move-AzureService -Abort -ServiceName $serviceName -DeploymentName $deploymentName

Si la configuration préparée semble correcte, vous pouvez continuer et valider les ressources à l’aide de la commande suivante :

    Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName

Étape 5a : Option 2 : migrer les machines virtuelles vers un réseau virtuel

Pour migrer des machines virtuelles dans un service cloud, vous migrez le réseau virtuel. Les machines virtuelles migrent automatiquement avec le réseau virtuel. Sélectionnez le réseau virtuel dont vous souhaitez effectuer la migration.

Notes

Migrez une machine virtuelle unique créée à l’aide du modèle de déploiement classique en créant une nouvelle machine virtuelle Resource Manager avec la fonctionnalité Disques managés en utilisant les fichiers de disque dur virtuel (système d’exploitation et données) de la machine virtuelle.

Notes

Le nom du réseau virtuel peut différer de ce qui est affiché dans le nouveau portail. Le nouveau Portail Azure affiche le nom sous la forme [vnet-name], mais le nom réel du réseau virtuel est du type Group [resource-group-name] [vnet-name]. Avant de migrer, recherchez le nom réel du réseau virtuel à l’aide de la commande Get-AzureVnetSite | Select -Property Name, ou affichez-le dans l’ancien Portail Azure.

L’exemple suivant définit le nom du réseau virtuel sur Groupe [resource-group-name][vnet-name]. Remplacez l’exemple de nom de réseau virtuel par un nom retourné par l’exécution de la commande dans la section Remarque ci-dessus.

    $vnetName = "Group [resource-group-name] [vnet-name]"

Notes

Vous obtenez un message d’erreur pour la validation si le réseau virtuel contient des rôles web/de travail ou des machines virtuelles avec des configurations non prises en charge.

La première étape consiste à vérifier si vous pouvez migrer le réseau virtuel à l’aide de la commande suivante :

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

La commande suivante affiche les avertissements et erreurs qui bloquent la migration. Si la validation se déroule correctement, vous pouvez passer à l’étape de la préparation suivante :

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Vérifiez la configuration pour les machines virtuelles préparées à l’aide d’Azure PowerShell ou du portail Azure. Si vous n’êtes pas prêt pour la migration et que vous souhaitez revenir à l’ancien état, utilisez la commande suivante :

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

Si la configuration préparée semble correcte, vous pouvez continuer et valider les ressources à l’aide de la commande suivante :

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Étape 5b : migrer un compte de stockage

Après avoir terminé la migration des machines virtuelles, effectuez les vérifications prérequises suivantes avant de migrer les comptes de stockage.

Notes

Si votre compte de stockage ne dispose d’aucun disque ou de données de machine virtuelle associés, vous pouvez passer directement à la section « Valider un compte de stockage et démarrer la migration ». Notez également que la suppression des disques classiques, des images de machine virtuelle ou des images de système d’exploitation ne supprime pas les fichiers VHD sources du compte de stockage. Toutefois, cela rompt le bail de ces fichiers VHD afin qu’ils puissent être réutilisés pour créer des disques ou des images ARM après la migration.

  • Vérifications prérequises en cas de migration de machines virtuelles ou si votre compte de stockage dispose de ressources de disque :

    • Migrez des machines virtuelles dont les disques sont stockés dans le compte de stockage.

      La commande suivante renvoie les propriétés RoleName et DiskName de tous les disques de machine virtuelle dans le compte de stockage. RoleName est le nom de la machine virtuelle à laquelle un disque est joint. Si cette commande renvoie des disques, assurez-vous que les machines virtuelles sur lesquelles ces disques sont attachés sont migrées avant de migrer le compte de stockage.

       $storageAccountName = 'yourStorageAccountName'
        Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
        DiskName | Format-List -Property RoleName, DiskName
      
      
    • Supprimez les disques de machine virtuelle détachés stockés dans le compte de stockage.

      Recherchez les disques de machine virtuelle détachés dans le compte de stockage à l’aide de la commande suivante :

          $storageAccountName = 'yourStorageAccountName'
          Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Where-Object -Property AttachedTo -EQ $null | Format-List -Property DiskName  
      
      

      Si la commande précédente renvoie des disques, supprimez-les en utilisant la commande suivante :

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • Supprimez les images de machine virtuelle stockées dans le compte de stockage.

      La commande suivante renvoie toutes les images de machine virtuelle avec un disque de système d’exploitation stocké dans le compte de stockage.

         Get-AzureVmImage | Where-Object { $_.OSDiskConfiguration.MediaLink -ne $null -and $_.OSDiskConfiguration.MediaLink.Host.Contains($storageAccountName)`
                                 } | Select-Object -Property ImageName, ImageLabel
      

      La commande suivante renvoie toutes les images de machine virtuelle avec un disque de données stocké dans le compte de stockage.

      
         Get-AzureVmImage | Where-Object {$_.DataDiskConfigurations -ne $null `
                                          -and ($_.DataDiskConfigurations | Where-Object {$_.MediaLink -ne $null -and $_.MediaLink.Host.Contains($storageAccountName)}).Count -gt 0 `
                                         } | Select-Object -Property ImageName, ImageLabel
      

      Supprimez toutes les images de machine virtuelle renvoyées par les commandes précédentes à l’aide de cette commande :

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • Validez les comptes de stockage et démarrez la migration.

    Validez chaque compte de stockage pour la migration à l’aide de la commande suivante. Dans cet exemple, le nom de compte de stockage est myStorageAccount. Remplacez le nom d’exemple par celui de votre propre compte de stockage.

        $storageAccountName = "myStorageAccount"
        Move-AzureStorageAccount -Validate -StorageAccountName $storageAccountName
    

    L’étape suivante consiste à préparer le compte de stockage pour la migration.

        $storageAccountName = "myStorageAccount"
        Move-AzureStorageAccount -Prepare -StorageAccountName $storageAccountName
    

    Vérifiez la configuration pour le compte de stockage préparé à l’aide d’Azure PowerShell ou du portail Azure. Si vous n’êtes pas prêt pour la migration et que vous souhaitez revenir à l’ancien état, utilisez la commande suivante :

        Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
    

    Si la configuration préparée semble correcte, vous pouvez continuer et valider les ressources à l’aide de la commande suivante :

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Étapes suivantes