Partage via


Tutoriel : Modifier un groupe de machines virtuelles identiques avec PowerShell

Tout au long du cycle de vie de vos applications, vous pourrez avoir besoin de modifier ou de mettre à jour votre groupe de machines virtuelles identiques. Ces mises à jour peuvent être liées à la configuration du groupe de machines ou à la modification de la configuration de l’application. Cet article explique comment modifier un groupe identique existant en utilisant PowerShell.

Mettre à jour le modèle de groupe identique

Un groupe identique est associé à un modèle qui capture l’état souhaité du groupe identique dans son ensemble. Pour interroger le modèle d’un groupe identique, vous pouvez utiliser Get-AzVmss.

Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet

La sortie exacte obtenue varie selon les options que vous ajoutez à la commande. L’exemple suivant montre une sortie condensée de PowerShell :

Sku                                         : 
  Name                                      : Standard_DS1_v2
  Tier                                      : Standard
  Capacity                                  : 2
ProvisioningState                           : Succeeded
SinglePlacementGroup                        : False
Id                                          : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet
Name                                        : myScaleSet
Type                                        : Microsoft.Compute/virtualMachineScaleSets
Location                                    : eastus
VirtualMachineProfile                       : 
    ComputerNamePrefix                      : myScaleSe
      ProvisionVMAgent                      : True
      EnableAutomaticUpdates                : True
        PatchMode                           : AutomaticByOS
        AssessmentMode                      : ImageDefault
      EnableVMAgentPlatformUpdates          : False
    AllowExtensionOperations                : True
  StorageProfile                            : 
      Publisher                             : MicrosoftWindowsServer
      Offer                                 : WindowsServer
      Sku                                   : 2016-Datacenter
      Version                               : latest
    OsDisk                                  : 
      Caching                               : None
      CreateOption                          : FromImage
      DiskSizeGB                            : 127
      OsType                                : Windows
        StorageAccountType                  : Premium_LRS
      DeleteOption                          : Delete
  NetworkProfile                            : 
    NetworkInterfaceConfigurations[0]       : 
      Name                                  : myScaleSet
      Primary                               : True
      DisableTcpStateTracking               : False
        Name                                : myScaleSet
        Subnet                              : 
          Id                                : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myScaleSet/subnets/myScaleSet
        PrivateIPAddressVersion             : IPv4
        LoadBalancerBackendAddressPools[0]  : 
/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSet/backendAddressPools/myScaleSet
      EnableIPForwarding                    : False
      DeleteOption                          : Delete
    NetworkApiVersion                       : 2020-11-01
OrchestrationMode                           : Flexible
TimeCreated                                 : 12/2/2022 5:41:21 PM

Vous pouvez également utiliser Update-AzVmss pour mettre à jour diverses propriétés de votre groupe identique. Par exemple, la mise à jour de votre type de licence.

$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -LicenseType Windows_Server

Mise à jour d’instances VM individuelles dans un groupe identique

Comme le groupe identique, chaque instance de machine virtuelle a sa propre vue de modèle. Pour interroger la vue de modèle d’une instance VM spécifique dans un groupe identique, vous pouvez utiliser Get-AzVM.

Get-AzVM -ResourceGroupName myResourceGroup -name MyScaleSet_Instance1
ResourceGroupName      : myResourceGroup
Id                     : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_Instance1
Name                   : myScaleSet_Instance1
Type                   : Microsoft.Compute/virtualMachines
Location               : eastus
Extensions             : {MicrosoftMonitoringAgent}
HardwareProfile        : {VmSize}
NetworkProfile         : {NetworkInterfaces}
OSProfile              : {ComputerName, AdminUsername, WindowsConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState      : Succeeded
StorageProfile         : {ImageReference, OsDisk, DataDisks}
VirtualMachineScaleSet : {Id}
TimeCreated            : 12/2/2022 5:41:23 PM

Vous pouvez également ajouter l’indicateur -Status pour obtenir la vue d’instance, qui fournit plus de détails sur la machine virtuelle.

Get-AzVM -ResourceGroupName myResourceGroup -name MyScaleSet_Instance1 -Status                                    
ResourceGroupName       : myResourceGroup
Name                    : MyScaleSet_Instance1
OsName                  : Windows Server 2016 Datacenter
OsVersion               : 10.0.14393.5501
HyperVGeneration        : V1
Disks[0]                : 
  Name                  : myScaleSet_Instance1_disk1_cab60acccff7414b81d60572eeecb9e3
  Statuses[0]           : 
    Code                : ProvisioningState/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Time                : 12/2/2022 5:41:25 PM
Disks[1]                : 
  Name                  : disk1
  Statuses[0]           : 
    Code                : ProvisioningState/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Time                : 12/2/2022 6:33:36 PM
Extensions[0]           : 
  Name                  : MicrosoftMonitoringAgent
  Type                  : Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent
  TypeHandlerVersion    : 1.0.18067.0
  Statuses[0]           : 
    Code                : ProvisioningState/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : Latest configuration has been applied to the Microsoft Monitoring Agent.
VMAgent                 : 
  VmAgentVersion        : 2.7.41491.1071
  ExtensionHandlers[0]  : 
    Type                : Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent
    TypeHandlerVersion  : 1.0.18067.0
    Status              : 
      Code              : ProvisioningState/succeeded
      Level             : Info
      DisplayStatus     : Ready
      Message           : This virtual machine has successfully connected to Azure Log Analytics.
  Statuses[0]           : 
    Code                : ProvisioningState/succeeded
    Level               : Info
    DisplayStatus       : Ready
    Message             : GuestAgent is running and processing the extensions.
    Time                : 12/2/2022 6:34:55 PM
Statuses[0]             : 
  Code                  : ProvisioningState/succeeded
  Level                 : Info
  DisplayStatus         : Provisioning succeeded
  Time                  : 12/2/2022 6:33:42 PM
Statuses[1]             : 
  Code                  : PowerState/running
  Level                 : Info
  DisplayStatus         : VM running

Ces propriétés décrivent la configuration d’une instance de machine virtuelle au sein d’un groupe identique, et non celle du groupe identique dans son ensemble.

Vous pouvez effectuer des mises à jour d’instances VM individuelles dans un groupe identique comme pour une machine virtuelle autonome. Par exemple, l’attachement d’un nouveau disque de données à l’instance 1 :

$VirtualMachine = Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myScaleSet_Instance1".
Add-AzVMDataDisk -VM $VirtualMachine -Name "disk1" -LUN 0 -Caching ReadOnly -DiskSizeinGB 128 -CreateOption Empty
Update-AzVM -ResourceGroupName "myResourceGroup" -VM $VirtualMachine

Ajouter une instance à votre groupe identique

Parfois, vous voulez ajouter une nouvelle machine virtuelle à votre groupe identique, mais avec des options de configuration différentes de celles listées dans le modèle de groupe identique. Vous pouvez ajouter des machines virtuelles à un groupe identique au moment de la création en utilisant la commande Get-AzVmss et en spécifiant le nom du groupe identique auquel ajouter l’instance.

New-AzVM -Name myNewInstance -ResourceGroupName myResourceGroup -image Ubuntu2204 -VmssId /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet
ResourceGroupName        : myResourceGroup                                                                              
Id                       : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myNewInstance
Name                     : myNewInstance                                                                                
Type                     : Microsoft.Compute/virtualMachines                                                            
Location                 : eastus                                                                                       
Tags                     : {}                                                                                           
HardwareProfile          : {VmSize}                                                                                     
NetworkProfile           : {NetworkInterfaces}                                                                          
OSProfile                : {ComputerName, AdminUsername, LinuxConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState        : Succeeded                                                                                    
StorageProfile           : {ImageReference, OsDisk, DataDisks}                                                          
FullyQualifiedDomainName : mynewinstance-21bc01.eastus.cloudapp.azure.com                                               
VirtualMachineScaleSet   : {Id}                                                                                         
TimeCreated              : 12/2/2022 6:40:20 PM   

En réexécutant Get-AzVM, nous pouvons voir que la nouvelle instance a été créée et ajoutée au groupe identique existant.

Get-AzVm -ResourceGroupName myResourceGroup 
ResourceGroupName   Name                   Location   VmSize            OsType     NIC                  ProvisioningState 
-----------------   ----                   --------   ------            ------     ---                  ----------------- 
myResourceGroup     myNewInstance          eastus     Standard_D2s_v3   Linux      myNewInstance         Succeeded     
myResourceGroup     myScaleSet_Instance1   eastus     Standard_DS1_v2   Windows    myScaleSet-a9f1d54c   Succeeded     
myResourceGroup     myScaleSet_Instance2   eastus     Standard_DS1_v2   Windows    myScaleSet-4dc708e5   Succeeded   

Mettre à jour des machines virtuelles avec le dernier modèle de groupe identique

Notes

Les modes de mise à niveau ne sont actuellement pas pris en charge sur Virtual Machine Scale Sets avec le mode d’orchestration flexible.

Les groupes identiques ont une « stratégie de mise à niveau » qui détermine la façon dont les machines virtuelles sont mises à jour à l’aide du dernier modèle du groupe identique. Les trois modes de la stratégie de mise à niveau sont les suivants :

  • Automatique : avec ce mode, le groupe identique ne garantit pas l’ordre dans lequel les machines virtuelles sont arrêtées. Le groupe identique peut arrêter toutes les machines virtuelles en même temps.
  • Continue : avec ce mode, le groupe identique déploie la mise à jour par lots, en marquant éventuellement une pause entre chaque lot.
  • Manuel : avec ce mode, quand vous mettez à jour le modèle de groupe identique, rien ne se passe sur les machines virtuelles existantes tant qu’une mise à jour manuelle n’est pas déclenchée.

Si votre groupe identique est défini sur des mises à niveau manuelles, vous pouvez déclencher une mise à niveau manuelle avec Update-AzVmss.

$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet

Notes

Les clusters Service Fabric peuvent uniquement utiliser le mode Automatique, mais la mise à jour est gérée différemment. Pour plus d’informations, consultez Mise à niveau des applications Service Fabric.

Réinitialiser un groupe identique

Virtual Machine Scale Sets génère un nom unique pour chaque machine virtuelle du groupe identique. La convention d’affectation de noms diffère selon le mode d’orchestration :

  • Mode d’orchestration flexible : {scale-set-name}_{8-char-guid}
  • Mode d’orchestration uniforme : {scale-set-name}_{instance-id}

Quand vous avez besoin de réinitialiser une instance spécifique, utilisez Set-AzVmss et spécifiez le nom d’instance.

Set-AzVmssVM -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet -InstanceId myScaleSet_Instance1 -Reimage

Pour réinitialiser toutes les instances d’un groupe identique, spécifiez simplement le nom du groupe identique et omettez les ID d’instance.

Set-AzVmssVM -Reimage -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet

Mettre à jour l’image du système d’exploitation pour un groupe identique

Supposons que vous avez un groupe identique qui exécute une ancienne version d’Ubuntu LTS 18.04. Vous voulez passer à une version plus récente d’Ubuntu LTS 16.04, par exemple, la version 18.04.202210180. Comme la propriété de version de la référence d’image ne fait pas partie d’une liste, vous pouvez la modifier directement avec Update-AzVmss.

$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet      
  
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -ImageReferenceVersion virtualMachineProfile.storageProfile.imageReference.version=18.04.202210180

Vous pouvez également modifier l'image utilisée par votre groupe identique. Par exemple, vous pouvez mettre à jour ou modifier une image personnalisée utilisée par votre groupe identique. Vous pouvez modifier l'image utilisée par votre groupe identique en mettant à jour la propriété ID de référence de l'image. Comme la propriété d’ID de la référence d’image ne fait pas partie d’une liste, vous pouvez la modifier directement avec Update-AzVmss.

$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet     
   
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -ImageReferenceVersion virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage

Si vous utilisez des images de plateforme Azure, vous pouvez les mettre à jour en modifiant imageReference (pour plus d’informations, consultez la documentation de l’API REST).

Notes

Avec les images de plateforme, il est courant de spécifier « latest » (dernière) pour la version de référence d’image. Cela signifie que lors de la création, de l’augmentation de la taille des instances et de la réinitialisation du groupe identique, les machines virtuelles sont créées avec la dernière version disponible. Toutefois, cela ne signifie pas que l’image du système d’exploitation sera automatiquement mise à jour à chaque nouvelle version d’image. Une fonctionnalité séparée fournit des mises à niveau de système d’exploitation automatiques. Pour plus d’informations, consultez la documentation relative aux mises à niveau automatiques du système d’exploitation.

Si vous utilisez des images personnalisées, vous pouvez les mettre à jour en modifiant l’ID imageReference (pour plus d’informations, consultez la documentation de l’API REST).

Étapes suivantes

Dans ce tutoriel, vous avez appris à modifier différents aspects de votre groupe identique et des instances individuelles en utilisant PowerShell.

  • Mettre à jour le modèle de groupe identique
  • Mettre à jour une instance VM individuelle dans un groupe identique
  • Ajouter une instance à votre groupe identique
  • Mettre à jour des machines virtuelles avec le dernier modèle de groupe identique
  • Réinitialiser un groupe identique
  • Mettre à jour l’image du système d’exploitation pour un groupe identique