Déplacer une machine virtuelle dans une zone de disponibilité à l’aide d’Azure PowerShell et de l’interface CLI

Cet article détaille l’utilisation des cmdlets Azure PowerShell et CLI pour déplacer des machines virtuelles à instance unique Azure d’une zone de disponibilité zonale à une zone de disponibilité locale. Une zone de disponibilité est une zone physiquement séparée dans une région Azure. Utilisez les zones de disponibilité pour protéger vos applications et vos données dans l’éventualité peu probable d’une défaillance ou d’une perte d’un centre de données entier.

Pour utiliser une zone de disponibilité, créez votre machine virtuelle dans une région Azure prise en charge.

Important

La configuration du déplacement d'une zone régionale vers une zone locale d'une machine virtuelle à instance unique est actuellement en Préversion publique.

Prérequis

Vérifiez les exigences suivantes :

Condition requise Description
Autorisations d’abonnement Veillez à disposer d’un accès Propriétaire sur l’abonnement contenant les ressources que vous souhaitez déplacer.

L’identité managée a besoin de ces autorisations :
- Autorisation d’écrire ou de créer des ressources dans un abonnement utilisateur, disponible avec le rôle Contributeur.
- Autorisation de créer des attributions de rôles. Habituellement disponible avec les rôles Propriétaire ou Administrateur de l’accès utilisateur ou un rôle personnalisé auquel les attributions de rôles Microsoft.Authorization ou une autorisation en écriture ont été attribuées. Cette autorisation n’est pas nécessaire si l’identité managée de la ressource de partage de données est déjà autorisée à accéder au magasin de données Azure.
Explorez en détail les rôles Azure.
Prise en charge des machines virtuelles Consultez les régions prises en charge.

Contrôlez les paramètres de calcul, de stockage et de réseau pris en charge.
État d’intégrité des machines virtuelles Les machines virtuelles que vous souhaitez déplacer doivent être dans un état sain avant de tenter le déplacement zonal. Vérifiez que tous les redémarrages en attente et les mises à jour obligatoires sont terminés, que la machine virtuelle fonctionne et qu’elle est dans un état sain, avant de tenter le déplacement zonal de la machine virtuelle.

Examiner les exigences de PowerShell et de CLI

La plupart des opérations de déplacement des ressources sont les mêmes, que vous utilisiez le portail Azure, PowerShell ou CLI, à quelques exceptions près.

Opération Portail PowerShell/CLI
Créer une collection de déplacement Une collection de déplacement (liste de toutes les machines virtuelles régionales que vous déplacez) est créée automatiquement. Les autorisations d’identité requises sont affectées dans le back-end par le portail. Vous pouvez utiliser des cmdlets PowerShell ou des cmdlets CLI pour :
- Affecter une identité managée à la collection
- Ajouter des machines virtuelles régionales à la collection.
Opérations de déplacement de ressources Validez les étapes et validez les changements dans les paramètres utilisateur. Lancer le déplacement démarre le processus de déplacement et crée une copie de la machine virtuelle source dans la zone cible. Il finalise également le déplacement de la machine virtuelle nouvellement créée dans la zone cible. Cmdlets PowerShell ou cmdlets CLI pour :
- Ajouter des machines virtuelles régionales à la collection
- Résoudre les dépendances
- Effectuer le déplacement
- Valider le déplacement

Exemples de valeurs

Nous utilisons ces valeurs dans nos exemples de script :

Paramètre Valeur
Identifiant d’abonnement subscription-id
Région de déplacement USA Est
Groupe de ressources (contenant les métadonnées de la collection de déplacement) RegionToZone-DemoMCRG
Nom de la collection de déplacement RegionToZone-DemoMC
Localisation de la collection de déplacement eastus2euap
Type d’identité SystemAssigned
nom de la machine virtuelle demoVM-MoveResource
Type de déplacement RegionToZone

Connexion à Azure

Connectez-vous à votre abonnement Azure avec la commande Connect-AzAccount et suivez les instructions à l’écran.

Connect-AzAccount –Subscription "<subscription-id>"

Configurer la collection de déplacement

L’objet MoveCollection stocke les métadonnées et les informations de configuration relatives aux ressources à déplacer. Pour configurer une collection de déplacement, procédez comme suit :

  • Créez un groupe de ressources pour la collection de déplacement.
  • Inscrivez le fournisseur de services auprès de l’abonnement de façon à pouvoir créer la ressource MoveCollection.
  • Créez l’objet MoveCollection avec une identité managée. Pour que l’objet MoveCollection accède à l’abonnement dans lequel se trouve le service Resource Mover, il a besoin d’une identité managée affectée par le système (anciennement Managed Service Identity (MSI)) et approuvée par l’abonnement.
  • Accordez l’accès à l’abonnement Resource Mover pour l’identité managée.

Créer le groupe de ressources

Utilisez la cmdlet suivante afin de créer un groupe de ressources pour les métadonnées de la collection de déplacement et les informations de configuration avec New-AzResourceGroup. Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.

New-AzResourceGroup -Name "RegionToZone-DemoMCRG" -Location "EastUS"

Sortie :

Le résultat montre que le disque géré se trouve dans la même zone de disponibilité que la machine virtuelle :

ResourceGroupName : RegionToZone-DemoMCRG
Location          : eastus
ProvisioningState : Succeeded
Tags              :
                    Name     Value
                    =======  ========
                    Created  20230908

ResourceId        : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG

Inscrire le fournisseur de ressources

  1. Inscrivez le fournisseur de ressources Microsoft.Migrate de façon à pouvoir créer la ressource MoveCollection, comme suit :

    Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
    
  2. Attendez que l’inscription s’effectue :

    While(((Get-AzResourceProvider -ProviderNamespace Microsoft.Migrate)| where {$_.RegistrationState -eq "Registered" -and $_.ResourceTypes.ResourceTypeName -eq "moveCollections"}|measure).Count -eq 0)
    {
        Start-Sleep -Seconds 5
        Write-Output "Waiting for registration to complete."
    }
    

Créer un objet MoveCollection

Créez un objet MoveCollection et assignez-lui une identité managée, comme suit :

New-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC"  -ResourceGroupName "RegionToZone-DemoMCRG" -MoveRegion "eastus" -Location "eastus2euap" -IdentityType "SystemAssigned" -MoveType "RegionToZone"

Sortie :

Etag                                   Location    Name
----                                   --------    ----
"3a00c441-0000-3400-0000-64fac1b30000" eastus2euap RegionToZone-DemoMC

Remarque

Pour le déplacement régional à zonal, le paramètre MoveType doit être défini comme RegionToZone et le paramètre MoveRegion doit être défini comme emplacement où résident les ressources faisant l’objet d’un déplacement zonal. Vérifiez que les paramètres SourceRegion et TargetRegion ne sont pas obligatoires et qu’ils sont définis sur null.

Accorder à l’identité managée un accès

Accordez à l’identité managée un accès à l’abonnement Resource Mover, comme suit : Vous devez être le propriétaire de l’abonnement.

  1. Récupérez les détails de l’identité de l’objet MoveCollection.

    $moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG"
    $identityPrincipalId = $moveCollection.IdentityPrincipalId
    
  2. Affectez les rôles requis à l’identité afin qu’Azure Resource Mover puisse accéder à votre abonnement pour faciliter le déplacement des ressources. Passez en revue la liste des autorisations requises pour le déplacement.

    New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName Contributor -Scope "/subscriptions/<subscription-id>""
    New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName "User Access Administrator" -Scope "/subscriptions/<subscription-id>"
    

Ajouter des machines virtuelles régionales à la collection de déplacement

Récupérez les ID des ressources sources existantes que vous souhaitez déplacer. Créez l’objet de paramètres de ressource de destination, puis ajoutez les ressources à la collection de déplacement.

Remarque

Les ressources ajoutées à une collection de déplacement doivent figurer dans le même abonnement, mais peuvent se trouver dans des groupes de ressources différents.

  1. Créez l’objet de paramètre de ressource cible comme suit :

    $targetResourceSettingsObj = New-Object Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings
    $targetResourceSettingsObj.ResourceType = "Microsoft.Compute/virtualMachines"
    $targetResourceSettingsObj.TargetResourceName = "RegionToZone-demoTargetVm"
    $targetResourceSettingsObj.TargetAvailabilityZone = "2"
    

    Sortie

    ResourceType                      TargetResourceGroupName TargetResourceName        TargetAvailabilitySetId TargetAvailabilityZone TargetVMSize UserManagedIdentity
    ------------                      ----------------------- ------------------        ----------------------- ---------------------- ------------ -------------------
    Microsoft.Compute/virtualMachines                         RegionToZone-demoTargetVm                         2
    
  2. Ajout de ressources

    Add-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -SourceId "/subscriptions/<Subscription-id>/resourcegroups/PS-demo-RegionToZone-RG/providers/Microsoft.Compute/virtualMachines/RegionToZone-demoSourceVm" -Name "demoVM-MoveResource" -ResourceSetting $targetResourceSettingsObj
    

    Sortie

    DependsOn                         : {}
    DependsOnOverride                 : {}
    ErrorsPropertiesCode              :
    ErrorsPropertiesDetail            :
    ErrorsPropertiesMessage           :
    ErrorsPropertiesTarget            :
    ExistingTargetId                  :
    Id                                : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/Re
                                        gionToZone-DemoMC/moveResources/demoVM-MoveResource
    IsResolveRequired                 : False
    JobStatusJobName                  :
    JobStatusJobProgress              :
    MoveStatusErrorsPropertiesCode    : DependencyComputationPending
    MoveStatusErrorsPropertiesDetail  : {}
    MoveStatusErrorsPropertiesMessage : The dependency computation is not completed for resource - /subscriptions/<Subscription-id>/resourcegroups/PS-demo-R
                                        egionToZone-RG/providers/Microsoft.Compute/virtualMachines/RegionToZone-demoSourceVm'.
                                            Possible Causes: Dependency computation is pending for resource.
                                            Recommended Action: Validate dependencies to compute the dependencies.
    
    MoveStatusErrorsPropertiesTarget  :
    MoveStatusMoveState               : MovePending
    Name                              : demoVM-MoveResource
    ProvisioningState                 : Succeeded
    ResourceSetting                   : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings
    SourceId                          : /subscriptions/<Subscription-id>/resourcegroups/PS-demo-RegionToZone-RG/providers/Microsoft.Compute/virtualMachines/
                                        RegionToZone-demoSourceVm
    SourceResourceSetting             : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings
    SystemDataCreatedAt               : 9/8/2023 6:48:11 AM
    SystemDataCreatedBy               : xxxxx@microsoft.com
    SystemDataCreatedByType           : User
    SystemDataLastModifiedAt          : 9/8/2023 6:48:11 AM
    SystemDataLastModifiedBy          : xxxxx@microsoft.com
    SystemDataLastModifiedByType      : User
    TargetId                          :
    Type                              :
    

Modifier les paramètres

Vous pouvez modifier les paramètres de destination lorsque vous déplacez des machines virtuelles Azure et les ressources associées. Nous vous recommandons de ne modifier les paramètres de destination qu’après avoir validé la collection de déplacement.

Les paramètres que vous pouvez modifier sont :

  • Paramètres de la machine virtuelle : Groupe de ressources, Nom de la machine virtuelle, Zone de disponibilité de la machine virtuelle, Référence SKU de la machine virtuelle, Coffre de clés de la machine virtuelle et Jeu de chiffrement de disque.
  • Paramètres de la ressource réseau : Pour les interfaces réseau, les réseaux virtuels et les groupes de sécurité réseau/interfaces réseau, vous pouvez :
    • Utiliser une ressource réseau existante dans la région de destination.
    • Créer une ressource avec un autre nom.
  • IP publique/Équilibreur de charge : Référence SKU et Zone

Modifiez les paramètres comme suit :

  1. Récupérez la ressource de déplacement dont vous souhaitez modifier les propriétés. Par exemple, pour récupérer une machine virtuelle, exécutez :

    $moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
    
  2. Copiez le paramètre de ressource sur un objet de paramètre de ressource cible.

    $TargetResourceSettingObj = $moveResourceObj.ResourceSetting
    
  3. Définissez le paramètre dans l’objet de paramètre de ressource cible. Par exemple, pour modifier le nom de la machine virtuelle de destination :

    $TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
    
  4. Mettez à jour les paramètres de destination de la ressource de déplacement. Dans cet exemple, nous changeons le nom de la machine virtuelle PSDemoVM en PSDemoVMTarget.

    Update-AzResourceMoverMoveResource -ResourceGroupName " RegionToZone-DemoMCRG " -MoveCollectionName " RegionToZone-DemoMC -SourceId "/subscriptions/<Subscription-d>/resourceGroups/PSDemoRM/providers/Microsoft.Compute/virtualMachines/PSDemoVM" -Name "PSDemoVM" -ResourceSetting $TargetResourceSettingObj
    

Résoudre les erreurs de dépendance

Vérifiez si les machines virtuelles régionales que vous avez ajoutées ont des dépendances vis-à-vis d’autres ressources, puis ajoutez-les en fonction des besoins.

  1. Résolvez les dépendances comme suit :

    Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
    

    Sortie (quand des dépendances existent)

    AdditionalInfo :
    Code           :
    Detail         :
    EndTime        : 9/8/2023 6:52:14 AM
    Id             : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/o
                     perations/bc68354b-ec1f-44cb-92ab-fb3b4ad90229
    Message        :
    Name           : bc68354b-ec1f-44cb-92ab-fb3b4ad90229
    Property       : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any
    StartTime      : 9/8/2023 6:51:50 AM
    Status         : Succeeded
    
  2. Pour obtenir la liste des ressources ajoutées à la collection de déplacement :

    $list = Get-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" $list.Name
    

    Sortie :

    demoVM-MoveResource
    mr_regiontozone-demosourcevm661_d6f18900-3b87-4fb5-9bdf-12da2f9fb185
    mr_regiontozone-demosourcevm-vnet_d8536bf5-2d5f-4778-9650-32d0570bc41a
    mr_regiontozone-demosourcevm-ip_6af03f1f-eae8-4541-83f5-97a2506cfc3e
    mr_regiontozone-demosourcevm-nsg_98d68420-d7ff-4e2d-b758-25a6df80fca7
    mr_nrms-timkbo3hy3nnmregiontozone-demosourcevm-vnet_f474c880-4823-4ed3-b761-96df6500f6a3
    
  3. Pour supprimer des ressources de la collection de ressources, suivez ces instructions.

Lancer le déplacement des ressources VM

Invoke-AzResourceMoverInitiateMove -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource") -MoveResourceInputType "MoveResourceId"

Sortie

AdditionalInfo :
Code           :
Detail         :
EndTime        : 9/8/2023 7:07:58 AM
Id             : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/o
                 perations/d3e06ac3-a961-4045-8301-aee7f6911160
Message        :
Name           : d3e06ac3-a961-4045-8301-aee7f6911160
Property       : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any
StartTime      : 9/8/2023 7:01:31 AM
Status         : Succeeded

Validation

Après le déplacement initial, vous devez valider le déplacement ou l’abandonner. La validation termine le déplacement vers la région cible.

Validez le déplacement comme suit :

Invoke-AzResourceMover-VMZonalMoveCommit -ResourceGroupName "RG-MoveCollection-demoRMS" -MoveCollectionName "PS-centralus-westcentralus-demoRMS" -MoveResource $('psdemovm111', 'PSDemoRM-vnet','PSDemoVM-nsg', ‘PSDemoVM’) -MoveResourceInputType "MoveResourceId"

Sortie :

AdditionalInfo : 
Code           : 
Detail         : 
EndTime        : 9/22/2023 5:26:55 AM 
Id             : /subscriptions/e80eb9fa-c996-4435-aa32-5af6f3d3077c/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/operations/35dd1d93-ba70-4dc9-a17f-7d8ba48678d8 
Message        : 
Name           : 35dd1d93-ba70-4dc9-a17f-7d8ba48678d8 
Property       : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any 
StartTime      : 9/22/2023 5:26:54 AM 
Status         : Succeeded 

Supprimer les machines virtuelles régionales sources

Après avoir validé le déplacement et vérifié que les ressources fonctionnent comme prévu dans la région cible, vous pouvez supprimer chaque ressource source avec :

Étapes suivantes

Découvrez comment déplacer des machines virtuelles Azure à instance unique d’une configuration régionale vers une configuration zonale à l’aide du portail.