Partager via


Tutoriel : Modifier un groupe de machines virtuelles identiques avec Azure CLI

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 Azure CLI.

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 az vmss show :

az vmss show --resource-group myResourceGroup --name myScaleSet

La sortie exacte obtenue varie selon les options que vous ajoutez à la commande. L’exemple suivant représente une sortie condensée de l’interface Azure CLI :

{
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
  "location": "eastus",
  "name": "myScaleSet",
  "orchestrationMode": "Flexible",
  "platformFaultDomainCount": 1,
  "resourceGroup": "myResourceGroup",
  "sku": {
    "capacity": 2,
    "name": "Standard_DS1_v2",
    "tier": "Standard"
  },
  "timeCreated": "2022-11-29T22:16:43.250912+00:00",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
    "networkProfile": {
      "networkApiVersion": "2020-11-01",
      "networkInterfaceConfigurations": [
        {
          "deleteOption": "Delete",
          "disableTcpStateTracking": false,
          "dnsSettings": {
            "dnsServers": []
          },
          "enableIpForwarding": false,
          "ipConfigurations": [
            {
              "applicationGatewayBackendAddressPools": [],
              "applicationSecurityGroups": [],
              "loadBalancerBackendAddressPools": [
                {
                  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSetLB/backendAddressPools/myScaleSetLBBEPool",
                  "resourceGroup": "myResourceGroup"
                }
              ],
              "name": "mysca2215IPConfig",
              "privateIpAddressVersion": "IPv4",
              "subnet": {
                "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myScaleSetVNET/subnets/myScaleSetSubnet",
                "resourceGroup": "myResourceGroup"
              }
            }
          ],
          "name": "mysca2215Nic",
          "networkSecurityGroup": {
            "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myScaleSetNSG",
            "resourceGroup": "myResourceGroup"
          },
          "primary": true
        }
      ]
    },
    "osProfile": {
      "allowExtensionOperations": true,
      "computerNamePrefix": "myScaleS",
      "linuxConfiguration": {
        "disablePasswordAuthentication": true,
        "enableVmAgentPlatformUpdates": false,
        "patchSettings": {
          "assessmentMode": "ImageDefault",
          "patchMode": "ImageDefault"
        },
        "provisionVmAgent": true,
      },
    },
    "storageProfile": {
      "imageReference": {
        "offer": "0001-com-ubuntu-server-jammy",
        "publisher": "Canonical",
        "sku": "22_04-lts",
        "version": "latest"
      },
      "osDisk": {
        "caching": "ReadWrite",
        "createOption": "FromImage",
        "deleteOption": "Delete",
        "diskSizeGb": 30,
        "managedDisk": {
          "storageAccountType": "Premium_LRS"
        },
        "osType": "Linux",
      }
    },
  },
}

Vous pouvez utiliser az vmss update pour mettre à jour diverses propriétés de votre groupe identique. Par exemple, mettre à jour votre type de licence ou une stratégie de protection d’instance VM.

az vmss update --name MyScaleSet --resource-group MyResourceGroup --license-type windows_server
az vmss update --name MyScaleSet --resource-group MyResourceGroup --instance-id 4 --protect-from-scale-set-actions False --protect-from-scale-in

Par ailleurs, si vous avez précédemment déployé le groupe identique avec la commande az vmss create, vous pouvez réexécuter la commande az vmss create pour mettre à jour le groupe identique. Vérifiez que toutes les propriétés définies dans la commande az vmss create sont les mêmes qu’avant, à l’exception de celles que vous souhaitez modifier. Par exemple, nous augmentons ci-dessous le nombre d’instances à cinq.

Important

À compter de novembre 2023, les groupes de machines virtuelles identiques créés à l'aide de PowerShell et d'Azure CLI utilisent par défaut le mode d'orchestration flexible si aucun mode d'orchestration n'est spécifié. Pour plus d’informations sur ce changement et les actions que vous devez entreprendre, consultez l’article Changement cassant pour les clients VMSS PowerShell/CLI – Hub Communauté Microsoft

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image RHELRaw8LVMGen2 \
  --admin-username azureuser \
  --generate-ssh-keys \
  --instance-count 5

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 az vm show.

az vm show --resource-group myResourceGroup --name myScaleSet_Instanace1

La sortie exacte obtenue varie selon les options que vous ajoutez à la commande. L’exemple suivant représente une sortie condensée de l’interface Azure CLI :

{
  "hardwareProfile": {
    "vmSize": "Standard_DS1_v2",
  },
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_Instance1",
  "location": "eastus",
  "name": "myScaleSet_Instance1",
  "networkProfile": {
    "networkInterfaces": [
      {
        "deleteOption": "Delete",
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-5cf164f7",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      }
    ]
  },
  "osProfile": {
    "allowExtensionOperations": true,
    "computerName": "myScaleset_Computer1",
    "linuxConfiguration": {
      "disablePasswordAuthentication": true,
      "enableVmAgentPlatformUpdates": false,
      "patchSettings": {
        "assessmentMode": "ImageDefault",
        "patchMode": "ImageDefault"
      },
      "provisionVmAgent": true,
    },
  },
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "storageProfile": {
    "dataDisks": [],
    "imageReference": {
      "exactVersion": "22.04.202204200",
      "offer": "0001-com-ubuntu-server-jammy",
      "publisher": "Canonical",
      "sku": "22_04-lts",
      "version": "latest"
    },
    "osDisk": {
      "caching": "ReadWrite",
      "createOption": "FromImage",
      "deleteOption": "Delete",
      "diskSizeGb": 30,
      "managedDisk": {
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myScaleSet_Instance1_disk1_e1a6c46a6b5f44d695fc9e38727267c2",
        "resourceGroup": "myResourceGroup",
        "storageAccountType": "Premium_LRS"
      },
      "name": "myScaleSet_Instance1_disk1_e1a6c46a6b5f44d695fc9e38727267c2",
      "osType": "Linux",
    }
  },
  "timeCreated": "2022-11-29T22:16:44.500895+00:00",
  "type": "Microsoft.Compute/virtualMachines",
  "virtualMachineScaleSet": {
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
    "resourceGroup": "myResourceGroup"
  },
}

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 :

az vm disk attach --resource-group myResourceGroup --vm-name myScaleSet_Instance1 --name disk_name1 --new

En réexécutant la commande az vm show, nous voyons maintenant que l’instance VM a le nouveau disque attaché.

  "storageProfile": {
    "dataDisks": [
      {
        "caching": "None",
        "createOption": "Empty",
        "deleteOption": "Detach",
        "diskSizeGb": 1023,
        "lun": 0,
        "managedDisk": {
          "id": "/subscriptions/49d84582-7207-4a4f-824e-044e83c71887/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/disk_name1",
          "resourceGroup": "myResourceGroup",
          "storageAccountType": "Premium_LRS"
        },
        "name": "disk_name1",
        "toBeDetached": false,
      }
    ],

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 az vm create et en spécifiant le nom du groupe identique auquel ajouter l’instance.

az vm create --name myNewInstance --resource-group myResourceGroup --vmss myScaleSet --image RHELRaw8LVMGen2
{
  "fqdns": "",
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myNewInstance",
  "location": "eastus",
  "macAddress": "60-45-BD-D7-13-DD",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.6",
  "publicIpAddress": "20.172.144.96",
  "resourceGroup": "myResourceGroup",
  "zones": ""

Si nous vérifions ensuite notre groupe identique, nous voyons la nouvelle instance ajoutée.

az vm list --resource-group myResourceGroup --output table
Name                 ResourceGroup    Location
-------------------  ---------------  ----------
myNewInstance         myResourceGroup  eastus
myScaleSet_Instance1  myResourceGroup  eastus
myScaleSet_Instance1  myResourceGroup  eastus

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 la commande az vmss update.

az vmss update --resource-group myResourceGroup --name 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 az vmss reimage et spécifiez les noms d’instance.

az vmss reimage --resource-group myResourceGroup --name myScaleSet --instance-id myScaleSet_Instance1

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

Supposons que vous possédez un groupe identique qui exécute une ancienne version d’Ubuntu. Vous souhaitez mettre à jour cette version avec une version plus récente d’Ubuntu, comme la version 22.04.202204200. 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 az vmss update.

az vmss update --resource-group myResourceGroup --name myScaleSet --set virtualMachineProfile.storageProfile.imageReference.version=22.04.202204200

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 az vmss update.

az vmss update \
--resource-group myResourceGroup \
--name myScaleSet \
--set 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).

Mettre à jour l’équilibreur de charge pour un groupe identique

Supposons que vous utilisiez un groupe identique avec Azure Load Balancer, et que vous souhaitiez remplacer Azure Load Balancer par Azure Application Gateway. Comme les propriétés de l’équilibreur de charge et de la passerelle applicative d’un groupe identique font partie d’une liste, vous pouvez utiliser les commandes de suppression et d’ajout d’éléments de liste, au lieu de modifier directement les propriétés.

# Remove the load balancer backend pool from the scale set model
az vmss update --resource-group myResourceGroup --name myScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerBackendAddressPools 0

# Remove the load balancer backend pool from the scale set model; only necessary if you have NAT pools configured on the scale set
az vmss update --resource-group myResourceGroup --name myScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerInboundNatPools 0

# Add the application gateway backend pool to the scale set model
az vmss update --resource-group myResourceGroup --name myScaleSet --add virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].ApplicationGatewayBackendAddressPools '{"id": "/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendPoolName}"}'

Notes

Ces commandes supposent qu’il n’existe qu’une seule configuration IP et qu’un seul équilibreur de charge dans le groupe identique. S’il en existe plusieurs, vous devrez peut-être utiliser un index de liste différent de 0.

Étapes suivantes

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

  • 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
  • Mettre à jour l’équilibreur de charge pour un groupe identique