Partager via


Mise à niveau automatique des extensions pour les machines virtuelles et les groupes identiques dans Azure

La mise à niveau automatique des extensions est disponible pour les machines virtuelles Azure et Azure Virtual Machine Scale Sets. Lorsque la mise à niveau automatique des extensions est activée sur une machine virtuelle ou un groupe identique, l’extension est automatiquement mise à niveau chaque fois que l’éditeur de l’extension publie une nouvelle version pour cette extension.

La mise à niveau automatique des extensions présente les fonctionnalités suivantes :

  • Prise en charge pour les machines virtuelles Azure et les groupes de machines virtuelles identiques Azure.
  • Les mises à niveau sont appliquées dans un modèle de déploiement selon le principe de première disponibilité.
  • Pour un groupe de machines virtuelles identiques, au maximum 20 % des machines virtuelles du groupe identique sont mises à niveau par lot. La taille de lot minimale est d’une machine virtuelle.
  • Fonctionne pour toutes les tailles de machine virtuelle et pour les extensions tant Windows que Linux.
  • Vous pouvez désactiver les mises à jour automatiques à tout moment.
  • La mise à niveau automatique des extensions peut être activée sur un groupe de machines virtuelles identiques de n’importe quelle taille.
  • Chaque extension prise en charge est inscrite individuellement, et vous pouvez choisir les extensions à mettre à niveau automatiquement.
  • Prise en charge dans toutes les régions du cloud public.

Comment fonctionne la mise à niveau automatique des extensions ?

Le processus de mise à niveau d’extension remplace la version existante de l’extension sur une machine virtuelle par une nouvelle version lors de la publication de celle-ci par l’éditeur de l’extension. L’intégrité de la machine virtuelle est analysée après l’installation de la nouvelle extension. Si la machine virtuelle n’est pas dans un état sain dans les 5 minutes suivant la fin de la mise à niveau, la version précédente est restaurée.

Une mise à niveau d’extension qui a échoué fait automatiquement l’objet d’une nouvelle tentative. Une nouvelle tentative est effectuée automatiquement à quelques jours d’intervalle, sans intervention de l’utilisateur.

Mises à jour selon la première disponibilité

Le modèle privilégiant la disponibilité pour les mises à niveau orchestrées de la plateforme garantit que les configurations de disponibilité dans Azure sont respectées sur plusieurs niveaux de disponibilité.

Pour un groupe de machines virtuelles en cours de mise à niveau, la plateforme Azure orchestre les mises à niveau :

Entre les régions :

  • Une mise à niveau est déployée sur Azure dans le monde entier de manière progressive, afin d’éviter les échecs de déploiement à l’échelle d’Azure.
  • Une « phase » peut englober une ou plusieurs régions, et une mise à niveau ne change pas de phase tant que les machines virtuelles éligibles de la phase précédente n’ont pas été correctement mises à niveau.
  • Les régions associées géographiquement ne seront pas mises à niveau simultanément et ne peuvent pas être dans la même phase régionale.
  • La réussite d’une mise à niveau est mesurée en suivant l’intégrité d’une machine virtuelle après sa mise à niveau. L’intégrité de la machine virtuelle est suivie via les indicateurs d’intégrité de la plateforme pour la machine virtuelle. Pour des groupes de machines virtuelles identiques, l’intégrité des machines virtuelles est suivie à l’aide de sondes d’intégrité d’application ou de l’extension Intégrité de l’application si elle est appliquée au groupe identique.

Dans une région :

  • Les machines virtuelles situées dans des zones de disponibilité différentes ne sont pas mises à niveau simultanément par la même mise à niveau.
  • Les machines virtuelles uniques qui ne font pas partie d’un groupe de disponibilité sont traitées par lot dans la mesure du possible afin d’éviter des mises à niveau simultanées de toutes les machines virtuelles d’un abonnement.

Dans un « groupe » :

  • Toutes les machines virtuelles d’un groupe de disponibilité ou d’un groupe identique communs ne sont pas mises à niveau simultanément.
  • Les machines virtuelles d’un groupe de disponibilité commun sont mises à niveau dans les limites du domaine de mise à niveau, et les machines virtuelles de différents domaines de mise à niveau ne sont pas mises à niveau simultanément.
  • Les machines virtuelles d’un groupe de machines virtuelles identiques commun sont regroupées par lots et mises à niveau dans les limites du domaine de mise à niveau. Les Stratégies de mise à niveau définies sur le groupe identique sont respectées pendant la mise à niveau. Si la stratégie de mise à niveau est définie sur Manuelle, les machines virtuelles ne seront pas mises à niveau même si la mise à niveau automatique de l’extension est activée.

Processus de mise à niveau pour les groupes de machines virtuelles identiques

  1. Avant de commencer le processus de mise à niveau, l’orchestrateur vérifie qu’il n’y a pas plus de 20 % des machines virtuelles dans tout le groupe identique qui présentent un état non sain (pour une raison ou une autre).

  2. L’orchestrateur de mise à niveau identifie le lot d’instances de machine virtuelle à mettre à niveau. Un orchestrateur de mise à niveau peut avoir au maximum 20 % du nombre total de machines virtuelles, sous réserve d’une taille de lot minimale d’une machine virtuelle. La définition de la Stratégie de mise à niveau et des Zones de disponibilité est considérée lors de l’identification du lot.

  3. Après la mise à niveau, l’intégrité de la machine virtuelle est toujours surveillée avant de passer au lot suivant. Pour les groupes identiques avec des sondes d’intégrité d’application configurées ou l’extension Intégrité de l’application, l’intégrité de l’application est également surveillée. La mise à niveau attend jusqu’à cinq minutes (ou la durée définie dans la configuration de la sonde d’intégrité) que la machine virtuelle passe à l’état sain avant de mettre à niveau le lot suivant. Si une machine virtuelle ne récupère pas son intégrité après une mise à niveau, par défaut, la version précédente de l’extension sur la machine virtuelle est réinstallée.

  4. L’orchestrateur de mise à niveau suit également le pourcentage de machines virtuelles qui deviennent non saines après une mise à niveau. La mise à niveau s’arrête si plus de 20 % des instances mises à niveau passent à l’état non sain pendant le processus de mise à niveau.

Le processus ci-dessus se poursuit jusqu’à ce que toutes les instances dans le groupe identique aient été mises à niveau.

L’orchestrateur de mise à niveau du groupe identique vérifie l’intégrité de tout le groupe identique avant de procéder à la mise à niveau de chaque lot. Durant la mise à niveau d’un lot, il peut arriver que d’autres activités de maintenance planifiées ou non planifiées aient lieu en même temps et aient un impact sur l’intégrité des machines virtuelles de votre groupe identique. Si c’est le cas et que plus de 20 % des instances du groupe identique passent à l’état non sain, la mise à niveau du groupe identique s’arrête à la fin du lot en cours.

Extensions prises en charge

La mise à niveau automatique des extensions prend en charge les extensions suivantes (et d’autres sont ajoutées régulièrement) :

Activation de la mise à niveau automatique des extensions

Pour activer la mise à niveau automatique des extensions pour une extension, vous devez vous assurer que la propriété enableAutomaticUpgradeest définie sur true et ajoutée à chaque définition d’extension individuellement.

API REST pour les machines virtuelles

Pour activer la mise à niveau automatique des extensions pour une extension (dans cet exemple, l’extension Dependency Agent) sur une machine virtuelle Azure, utilisez l’appel suivant :

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{    
    "name": "extensionName",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "<location>",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true, 
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5"
        }
}

API REST pour les groupes de machines virtuelles identiques

Utilisez l’appel suivant pour ajouter l’extension au modèle de groupe identique :

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
   "location": "<location>",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [
            	{
                "name": "<extensionName>",
            	  "properties": {
             		    "autoUpgradeMinorVersion": true,
             		    "enableAutomaticUpgrade": true,
              	    "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
              	    "type": "DependencyAgentWindows",
              	    "typeHandlerVersion": "9.5"
            		}
          	    }
        	    ]
    	    }
    	}
    }
}

Azure PowerShell pour les machines virtuelles

Utilisez la cmdlet Set-AzVMExtension :

Set-AzVMExtension -ExtensionName "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ExtensionType "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -Location WestUS `
    -EnableAutomaticUpgrade $true

Azure PowerShell Azure pour les groupes de machines virtuelles identiques

Utilisez la cmdlet Add-AzVmssExtension pour ajouter l’extension au modèle de groupe identique :

Add-AzVmssExtension -VirtualMachineScaleSet $vmss
    -Name "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Type "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -EnableAutomaticUpgrade $true

Mettez à jour le groupe identique à l’aide de Update-AzVmss après avoir ajouté l’extension.

Interface de ligne de commande Azure pour Machines virtuelles

Utilisez la cmdlet az vm extension set :

az vm extension set \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Azure CLI pour les groupes de machines virtuelles identiques

Utilisez la cmdlet az vmss extension set pour ajouter l’extension au modèle de groupe identique :

az vmss extension set \
    --resource-group myResourceGroup \
    --vmss-name myVMSS \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Modèle ARM pour machines virtuelles

L’exemple suivant illustre comment définir des mises à niveau d’extension automatiques pour une extension (Dependency Agent dans cet exemple) sur une machine virtuelle à l’aide d’Azure Resource Manager.

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[resourceGroup().location]",
    "name": "<extensionName>",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
    ],
    "properties": {
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5",
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true,
        "settings": {
            "enableAMA": "true"
        }
    }
}

Modèle ARM pour Virtual Machine Scale Sets

Utilisez l’exemple suivant pour définir la mise à niveau automatique d’extension dans le modèle de groupe identique :

{
   "type": "Microsoft.Compute/virtualMachineScaleSets",
   "apiVersion": "2023-09-01",
   "name": "[variables('vmScaleSetName')]",
   "location": "[resourceGroup().location]",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [{
                     "name": "<extensionName>",
                     "properties": {
                          "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
                          "type": "DependencyAgentWindows",
                          "typeHandlerVersion": "9.5",
                          "autoUpgradeMinorVersion": true,
                          "enableAutomaticUpgrade": true,
                     }
                }]
    	    }
    	}
    }
}

En passant par le portail Azure

Vous pouvez utiliser le panneau Portail Azure – Extension pour activer la mise à niveau automatique des extensions sur des machines virtuelles et des groupes de machines virtuelles identiques existants.

  1. Accédez à Machines virtuelles ou le panneau Groupes de machines virtuelles identiques et sélectionnez la ressource en cliquant sur son nom.
  2. Accédez au panneau « Extenisons + applications » sous Paramètres pour afficher toutes les extensions installées sur la ressource. La colonne « État de mise à niveau automatique » indique si la mise à niveau automatique de l’extension est activée, désactivée ou non prise en charge.
  3. Accédez au panneau Détails de l’extension en cliquant sur le nom de l’extension. Capture d’écran du panneau Portail Azure – Extension.
  4. Cliquez sur « Activer la mise à niveau automatique » pour activer la mise à niveau automatique de l’extension. Ce bouton peut également être utilisé pour désactiver la mise à niveau automatique si nécessaire.
    Capture d’écran du portail Azure montrant l’activation de la mise à niveau automatique de l’extension.

Mises à niveau d’extension avec plusieurs extensions

Une machine virtuelle ou un groupe de machines virtuelles identiques peuvent avoir plusieurs extensions pour lesquelles la mise à niveau d’extension automatique est activée. Les mêmes machine virtuelle ou groupe identique peuvent également avoir d’autres extensions sans que la mise à niveau d’extension automatique soit activée.

Si plusieurs mises à niveau d’extension sont disponibles pour une machine virtuelle, il est possible de les regrouper par lot, mais chaque mise à niveau d’extension est appliquée individuellement sur une machine virtuelle. Un échec sur une extension n’a aucun impact sur les autres extensions qui peuvent être mises à niveau. Par exemple, si deux extensions sont planifiées pour une mise à niveau et que la mise à niveau de la première extension échoue, la deuxième extension sera quand même mise à niveau.

Les mises à niveau automatiques d’extensions peuvent également être appliquées lorsqu’une machine virtuelle ou un groupe de machines virtuelles identiques a plusieurs extensions configurées avec le séquencement d’extensions. Le séquencement d’extensions s’applique au premier déploiement de la machine virtuelle, et toute mise à niveau d’extension future est appliquée de façon indépendante.

Différence entre enableAutomaticUpgrade et autoUpgradeMinorVersion

  1. AutoUpgradeMinorVersion :

    • Cette propriété est utilisée pendant la création d’une machine virtuelle et lors de sa mise à niveau avec une nouvelle configuration.
    • Lorsqu’elle est définie sur « true », elle garantit que la dernière version mineure de l’extension est automatiquement installée sur la machine virtuelle.
    • Elle remplace TypeHandlerVersion par la dernière version mineure stable disponible.
    • Lors de la mise à niveau de la configuration de la machine virtuelle, si une nouvelle version mineure est disponible, alors elle est considérée comme une modification de configuration et l’extension est réinstallée avec la version mineure la plus récente.
    • Cela permet de maintenir les machines virtuelles récemment créées à jour avec la dernière version mineure stable de l’extension.
    • Si vous souhaitez définir manuellement l’extension sur une version spécifique, définissez cette propriété sur « false ».
  2. EnableAutomaticUpgrade :

    • Cette propriété affecte les machines virtuelles existantes.
    • Elle n’impacte pas la version installée pendant la création de la machine virtuelle.
    • Une fois la machine virtuelle créée, si elle n’exécute pas la dernière version mineure de l’extension, l’activation de cette propriété déclenche une mise à niveau automatique.
    • Les mises à niveau ne provoquent pas le redémarrage de la machine virtuelle, sont déployées de manière sécurisée et les mises à niveau ayant échoué sont restaurées immédiatement pour offrir une disponibilité et une fiabilité de service élevées.
    • Elle garantit que les machines virtuelles existantes sont sécurisées et à jour en les mettant automatiquement à jour vers la dernière version mineure.

Il est recommandé d’activer les deux propriétés pour que toutes les machines virtuelles soient sécurisées et à jour.

Les mises à niveau vers les versions majeures de l’extension ne sont jamais effectuées automatiquement par aucune propriété, car elles pourraient entraîner des changements cassants. Vous devez définir manuellement TypeHandlerVersion sur une version majeure et mettre à niveau manuellement chaque machine virtuelle existante vers la version majeure la plus récente.

Étapes suivantes