Partager via


Extensions et fonctionnalités de machine virtuelle pour Linux

Les extensions de machine virtuelle Azure sont de petites applications permettant d’exécuter des tâches de configuration et d’automatisation post-déploiement sur des machines virtuelles Azure. Par exemple, si une machine virtuelle nécessite une installation logicielle, une protection antivirus ou la possibilité d’exécuter un script à l’intérieur, vous pouvez utiliser une extension de machine virtuelle.

Vous pouvez exécuter des extensions de machine virtuelle Azure à l’aide d’Azure CLI, d’Azure PowerShell, de modèles Azure Resource Manager (modèles ARM) et du portail Azure. Vous pouvez regrouper les extensions avec un nouveau déploiement de machine virtuelle ou les exécuter sur tout système existant.

Cet article offre une vue d’ensemble des extensions de machine virtuelle Azure, des conditions préalables à leur utilisation et des conseils sur la manière de les détecter, de les gérer et de les supprimer. Cet article fournit des informations générales, car de nombreuses extensions de machine virtuelle sont disponibles. Chacun d’eux a une configuration potentiellement unique et sa propre documentation.

Remarque

Essayez l’assistance de machine virtuelle pour accélérer les diagnostics. Nous vous recommandons d’exécuter l’assistance de machine virtuelle pour Windows ou l’assistance de machine virtuelle pour Linux. Ces outils de diagnostic basés sur des scripts vous aident à identifier les problèmes courants qui affectent l’agent invité de machine virtuelle Azure et l’intégrité globale des machines virtuelles.

Si vous rencontrez des problèmes de performances avec des machines virtuelles, avant de contacter le support technique, exécutez ces outils.

Cas d’utilisation et exemples

Chaque extension de machine virtuelle Azure a un cas d’usage spécifique. Voici quelques exemples :

En plus des extensions spécifiques au processus, une extension de script personnalisé est disponible pour les machines virtuelles Windows et Linux. L’extension de script personnalisé pour Linux permet d’exécuter n’importe quel script Bash sur une machine virtuelle. Les scripts personnalisés s’avèrent utile pour concevoir des déploiements Azure qui nécessitent une configuration plus avancée que celle fournie par les outils Azure natifs.

Prérequis

Remarque

Les extensions sont prises en charge uniquement sur les distributions Linux approuvées sur Azure.

Agent Linux Azure

Pour gérer l’extension sur la machine virtuelle, vous devez installer l’agent Linux Azure . Certaines extensions spécifiques présentent des prérequis, tels que l’accès à des ressources ou dépendances.

L’agent Linux Azure gère les interactions entre une machine virtuelle Azure et le contrôleur de structure Microsoft Azure. L’agent est responsable de nombreux aspects fonctionnels liés au déploiement et à la gestion des machines virtuelles Azure, notamment l’exécution des extensions de machine virtuelle.

L’agent Linux Azure est préinstallé sur les images de Place de marché Azure. Vous pouvez également l’installer manuellement sur les systèmes d’exploitation pris en charge.

L’agent fonctionne sur plusieurs systèmes d’exploitation. Cependant, l’infrastructure des extensions a une limite concernant les systèmes d’exploitation que les extensions utilisent. Certaines extensions ne sont pas prises en charge par tous les systèmes d’exploitation et peuvent générer le code d’erreur 51 (« Système d’exploitation non pris en charge »). Pour plus d’informations sur la capacité de prise en charge, consultez la documentation de l’extension concernée.

Accès réseau

Les packages d’extension sont téléchargés depuis le référentiel d’extensions de Stockage Azure. Les chargements d’état des extensions sont publiés dans Stockage Azure.

Si vous utilisez une version prise en charge de l’agent Linux Azure, vous n’avez pas besoin d’autoriser l’accès à Stockage Azure dans la région de la machine virtuelle. Vous pouvez utiliser l’agent pour rediriger la communication vers le contrôleur de structure Azure pour les communications de l’agent. Si vous utilisez une version non prise en charge de l’agent, vous devez autoriser l’accès sortant vers Stockage Azure dans cette région à partir de la machine virtuelle.

Important

Si vous bloquez l’accès à l’adresse IP privée 168.63.129.16 à l’aide du pare-feu invité, les extensions échouent même si vous utilisez une version prise en charge de l’agent ou que vous configurez l’accès sortant. En outre, si la machine virtuelle n’a pas d’accès sortant vers *.blob.windows.net et *.blob.storage.azure.net, l’initialisation de l’agent Linux Azure et l’installation des extensions entraîne plus de retards. Pour éviter ces retards, assurez-vous que l’accès à ces points de terminaison est autorisé.

Vous pouvez uniquement utiliser les agents pour télécharger les paquets d’extensions et signaler l’état. Par exemple, si une installation d’extension doit télécharger un script à partir de GitHub (extension de script personnalisé) ou avoir accès au stockage Azure (Sauvegarde Azure), vous devez ouvrir davantage de ports de pare-feu ou de groupe de sécurité réseau (NSG). Différentes extensions ont des exigences différentes, car elles sont des applications. Dans le cas des extensions qui exigent un accès à Stockage Azure, vous pouvez autoriser cet accès en utilisant des étiquettes de service de groupe de sécurité réseau Azure.

Pour rediriger les demandes de trafic de l’agent, l’agent Linux Azure prend en charge les serveurs proxy. Ce serveur proxy ne prend pas en charge les extensions. Vous devez configurer chaque extension individuelle pour qu’elle fonctionne avec un proxy.

Détecter les extensions de machine virtuelle

De nombreuses extensions de machine virtuelle peuvent être utilisées avec les machines virtuelles Azure. Pour en obtenir la liste complète, utilisez la commande az vm extension image list. L’exemple suivant liste toutes les extensions disponibles à l’emplacement westus :

az vm extension image list --location westus --output table

Exécuter les extensions de machine virtuelle

Les extensions de machine virtuelle Azure s’exécutent sur des machines virtuelles existantes. Cette fonctionnalité est utile lorsque vous devez apporter des modifications de configuration ou récupérer la connectivité sur une machine virtuelle déjà déployée. Les extensions de machine virtuelle peuvent également être regroupées avec des déploiements de modèle ARM. En utilisant des extensions avec des modèles ARM, vous pouvez déployer et configurer des machines virtuelles Azure sans intervention post-déploiement.

Vous pouvez utiliser les méthodes suivantes pour exécuter une extension sur une machine virtuelle existante.

Azure CLI

Vous pouvez exécuter des extensions de machine virtuelle Azure sur une machine virtuelle existante en utilisant la commande az vm extension set. L’exemple suivant exécute l’extension de script personnalisé sur une machine virtuelle nommée myVM dans un groupe de ressources nommé myResourceGroup. Remplacez l’exemple de nom du groupe de ressources, le nom de la machine virtuelle et le script à exécuter https:\//raw.githubusercontent.com/me/project/hello.sh par vos propres informations.

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"fileUris": ["https://raw.githubusercontent.com/me/project/hello.sh"],"commandToExecute": "./hello.sh"}'

Quand l’extension s’exécute correctement, la sortie ressemble à l’exemple suivant :

info:    Executing command vm extension set
+ Looking up the VM "myVM"
+ Installing extension "CustomScript", VM: "mvVM"
info:    vm extension set command OK

Azure PowerShell

Vous pouvez exécuter des extensions de machine virtuelle Azure sur une machine virtuelle existante en utilisant la commande Set-AzVMExtension. L’exemple suivant exécute l’extension de script personnalisé sur une machine virtuelle nommée myVM dans un groupe de ressources nommé myResourceGroup. Remplacez l’exemple de nom du groupe de ressources, le nom de la machine virtuelle et le script à exécuter https:\//raw.githubusercontent.com/me/project/hello.sh par vos propres informations.

$Params = @{
    ResourceGroupName  = 'myResourceGroup'
    VMName             = 'myVM'
    Name               = 'CustomScript'
    Publisher          = 'Microsoft.Azure.Extensions'
    ExtensionType      = 'CustomScript'
    TypeHandlerVersion = '2.1'
    Settings          = @{fileUris = @('https://raw.githubusercontent.com/me/project/hello.sh'); commandToExecute = './hello.sh'}
}
Set-AzVMExtension @Params

Quand l’extension s’exécute correctement, la sortie ressemble à l’exemple suivant :

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK

Portail Azure

Vous pouvez appliquer des extensions de machine virtuelle à une machine virtuelle existante par le biais du portail Azure. Sélectionnez la machine virtuelle dans le portail, sélectionnez Extensions, puis Ajouter. Choisissez l’extension souhaitée dans la liste des extensions disponibles, puis suivez les instructions de l’Assistant.

L’image suivante montre l’installation de l’extension Script personnalisé pour Linux à partir du portail Azure.

Capture d’écran de la boîte de dialogue d’installation de l’extension de script personnalisé pour Linux.

Modèles Microsoft Azure Resource Manager

Vous pouvez ajouter des extensions de machine virtuelle à un modèle ARM et les exécuter avec le déploiement du modèle. Lorsque vous déployez une extension avec un modèle, vous pouvez créer des déploiements Azure entièrement configurés.

Par exemple, le code JSON suivant est extrait d’un modèle ARM complet qui déploie un ensemble de machines virtuelles à charge équilibrée et d’une base de données Azure SQL. Ensuite, il installe une application .NET Core sur chaque machine virtuelle. L’extension de machine virtuelle se charge de l’installation du logiciel.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
    }
}

Pour plus d’informations sur la création de modèles ARM, consultez Machines virtuelles dans un modèle Azure Resource Manager.

Aider à sécuriser les données des extensions de machine virtuelle

Quand vous exécutez une extension de machine virtuelle, vous pouvez avoir besoin d’inclure des informations sensibles telles que des informations d’identification, des noms de compte de stockage et des clés d’accès. De nombreuses extensions de machine virtuelle comprennent une configuration protégée qui chiffre les données et les déchiffre uniquement à l’intérieur de la machine virtuelle cible. Chaque extension a un schéma de configuration protégé spécifique. Chaque extension est détaillée dans la documentation spécifique à l’extension.

L’exemple suivant illustre une instance de l’extension de script personnalisé pour Linux. La commande à exécuter inclut un ensemble d’informations d’identification. La commande à exécuter n’est pas chiffrée dans cet exemple.

{
  "apiVersion": "2015-06-15",
  "type": "extensions",
  "name": "config-app",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ],
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

Pour sécuriser la chaîne d’exécution, déplacez la propriété commandToExecute vers la configuration protected, comme indiqué dans l’exemple suivant :

{
  "apiVersion": "2015-06-15",
  "type": "extensions",
  "name": "config-app",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ]
    },
    "protectedSettings": {
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

Mise à jour des agents et des extensions

Les agents et les extensions partagent le même mécanisme de mise à jour automatique.

Quand une mise à jour est disponible et que les mises à jour automatiques sont activées, la mise à jour est installée sur la machine virtuelle seulement si un changement a été apporté à une extension ou après d’autres modifications du modèle de machine virtuelle, par exemple :

  • Disques de données
  • Extensions
  • Balises d’extension
  • Conteneur de diagnostics de démarrage
  • Secrets du système d’exploitation invité
  • Taille de la machine virtuelle
  • Profil réseau

Les éditeurs mettent à la disposition des régions à différents moments des mises à jour. Vous pouvez donc avoir des machines virtuelles dans différentes régions sur différentes versions.

Remarque

Certaines mises à jour peuvent nécessiter des règles de pare-feu supplémentaires. Pour plus d’informations, consultez Accès réseau.

Mises à jour d’agent

L’agent de machine virtuelle Linux contient dans un seul et même package le code de l’agent d’approvisionnement et le code de gestion des extensions. Ces derniers ne peuvent pas être séparés.

Vous pouvez désactiver l’agent d’approvisionnement quand vous voulez effectuer un approvisionnement sur Azure à l’aide de cloud-init.

Les versions prises en charge des agents peuvent utiliser des mises à jour automatiques. Le seul code pouvant être mis à jour est le code de gestion des extensions, pas le code d’approvisionnement. Le code de l’agent de provisionnement est un code à exécution unique.

Le code de gestion des extensions est chargé des opérations suivantes :

  • Communiquer avec la structure Azure.
  • Gérer les opérations d’extension de machine virtuelle, telles que les installations, les rapports d’état, la mise à jour des extensions individuelles et la suppression des extensions. Les mises à jour comprennent les correctifs de sécurité, les correctifs de bogues et les améliorations du code de gestion des extensions.

Quand l’agent est installé, un démon parent est créé. Le processus parent engendre ensuite un processus enfant qui gère les extensions de l'application. Si une mise à jour est disponible pour l’agent, elle est téléchargée. Le parent arrête le processus enfant, le met à jour, puis le redémarre. Si un problème se produit avec la mise à jour, le processus parent revient à la version enfant précédente.

Le processus parent ne peut pas être mis à jour automatiquement. Seul un package de distribution peut mettre à jour le parent.

Pour vérifier la version que vous exécutez, vérifiez waagent:

waagent --version

Le résultat ressemble à l’exemple suivant :

WALinuxAgent-2.2.45 running on <Linux Distro>
Python: 3.6.9
Goal state agent: 2.7.1.0

Dans la sortie de l’exemple précédent, le parent (ou la version déployée du package) est WALinuxAgent-2.2.45. La valeur de Goal state agent est la version de mise à jour automatique.

Nous vous recommandons vivement de toujours activer la mise à jour automatique pour l’agent : AutoUpdate.Enabled=y. Si vous n’activez pas la mise à jour automatique, vous devez continuer à mettre à jour manuellement l’agent. Vous n’obtenez pas non plus de correctifs de sécurité et de bogues.

Mises à jour des extensions

Quand une mise à jour d’extension est disponible et que les mises à jour automatiques sont activées, une fois qu’une modification du modèle de machine virtuelle se produit, l’agent Linux Azure télécharge l’extension et la met à jour.

Les mises à jour automatiques des extensions sont soit une version mineure, soit un correctif logiciel. Vous pouvez accepter ou refuser les mises à jour d’extension de version mineure quand vous approvisionnez l’extension. L’exemple suivant montre comment mettre automatiquement à niveau les versions mineures dans un modèle ARM en utilisant "autoUpgradeMinorVersion": true, :

    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },

Si vous souhaitez obtenir les dernières correctifs de bogues des versions mineures, nous vous recommandons vivement de toujours sélectionner l’option de mise à jour automatique dans vos déploiements d’extensions. Vous ne pouvez pas refuser les mises à jour de type correctif logiciel qui apportent des correctifs de sécurité ou de bogues importants.

Si vous désactivez les mises à jour automatiques ou si vous devez mettre à niveau une version majeure, utilisez az vm extension set ou Set-AzVMExtension et spécifiez la version cible.

Comment identifier les mises à jour d’extension

Identifier si l’extension est définie avec la propriété autoUpgradeMinorVersion sur une machine virtuelle

Le modèle de machine virtuelle vous permet de déterminer si l’extension a été approvisionnée avec la propriété autoUpgradeMinorVersion. Pour vérifier, utilisez az vm show et indiquez le groupe de ressources et le nom de la machine virtuelle :

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

L’exemple de sortie suivant montre que autoUpgradeMinorVersion est définie sur true :

  "resources": [
    {
      "autoUpgradeMinorVersion": true,
      "forceUpdateTag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/customScript",

Identifier quand un événement autoUpgradeMinorVersion s’est produit

Pour déterminer le moment où une extension a fait l’objet d’une mise à jour, consultez les journaux d’activité de l’agent sur la machine virtuelle à l’emplacement /var/log/waagent.log.

Dans l’exemple suivant, Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025 était installé sur la machine virtuelle. Un correctif était disponible pour Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027.

INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Expected handler state: enabled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Decide which version to use
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Use version: 2.3.9027
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Current handler state is: NotInstalled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Download extension package
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Unpack extension package
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Download, message=Download succeeded
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Initialize extension directory
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update settings file: 0.settings
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Disable extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Launch command:diagnostic.py -disable
...
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Disable, message=Launch command succeeded: diagnostic.py -disable
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Launch command:diagnostic.py -update
2017/08/14 20:21:57 LinuxAzureDiagnostic started to handle.

Autorisations d’agent

Pour exécuter ses tâches, l’agent doit s’exécuter comme racine.

Résoudre les problèmes liés aux extensions de machine virtuelle

Chaque extension de machine virtuelle peut présenter une procédure spécifique de résolution des problèmes. Par exemple, lorsque vous utilisez l’extension de script personnalisé, vous pouvez trouver les détails d’exécution du script localement sur la machine virtuelle où l’extension a été exécutée.

Les actions de résolution des problèmes ci-après s’applique à toutes les extensions de machine virtuelle :

  • Vérifiez le journal de l’agent Linux Azure. Examinez l’activité lors de l’approvisionnement de votre extension dans /var/log/waagent.log.
  • Pour plus de détails, consultez les journaux de l’extension à l’emplacement /var/log/azure/<extensionName>.
  • Consultez les sections de résolution des problèmes dans la documentation spécifique aux extensions pour connaître les codes d’erreur, les problèmes connus et d’autres informations spécifiques aux extensions.
  • Examinez les journaux d’activité système. Vérifiez si d’autres opérations interfèrent avec l’extension, par exemple une installation longue d’une autre application qui nécessitait un accès exclusif au gestionnaire de package.

Motifs courants des échecs d’extension

  • Les extensions ont 20 minutes pour s’exécuter. (Les exceptions sont des scripts personnalisés et Chef, qui ont 90 minutes.) Si votre déploiement dépasse cette période, il est marqué comme un délai d’expiration. La cause d’un délai d’expiration peut être :

    • Machines virtuelles à faible ressource.
    • D’autres configurations de machine virtuelle ou tâches de démarrage qui consomment de grandes quantités de ressources pendant que l’extension tente d’approvisionner.
  • La configuration minimale requise n’est pas respectée. Certaines extensions ont des dépendances sur les versions de machine virtuelle, telles que les images de calcul hautes performances. Les extensions peuvent avoir certaines exigences d’accès réseau, comme la communication avec Stockage Azure ou des services publics. D’autres exemples peuvent être l’accès aux référentiels de packages, le manque d’espace disque ou les restrictions de sécurité.

  • L’accès au gestionnaire de package est exclusif. Dans certains cas, la configuration d’une machine virtuelle et l’installation d’une extension de longue durée peuvent entrer en conflit, car ces deux tâches exigent un accès exclusif au gestionnaire de package.

Afficher l’état de l’extension

Une fois qu’une extension de machine virtuelle s’exécute sur une machine virtuelle, utilisez az vm get-instance-view pour retourner l’état de l’extension :

az vm get-instance-view \
    --resource-group myResourceGroup \
    --name myVM \
    --query "instanceView.extensions"

Le résultat ressemble à l’exemple suivant :

  {
    "name": "customScript",
    "statuses": [
      {
        "code": "ProvisioningState/failed/0",
        "displayStatus": "Provisioning failed",
        "level": "Error",
        "message": "Enable failed: failed to execute command: command terminated with exit status=127\n[stdout]\n\n[stderr]\n/bin/sh: 1: ech: not found\n",
        "time": null
      }
    ],
    "substatuses": null,
    "type": "Microsoft.Azure.Extensions.CustomScript",
    "typeHandlerVersion": "2.1.6"
  }

Vous pouvez également trouver l’état d’exécution des extensions dans le portail Azure. Sélectionnez la machine virtuelle, sélectionnez Extensions, puis l’extension souhaitée.

Réexécuter une extension de machine virtuelle

Il peut arriver qu’une extension de machine virtuelle soit réexécutée. Pour réexécuter une extension, supprimez-la, puis réexécutez l’extension avec une méthode d’exécution de votre choix.

Pour supprimer une extension, utilisez az vm extension delete :

az vm extension delete \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name customScript

Vous pouvez également supprimer une extension dans le portail Azure :

  1. Sélectionnez une machine virtuelle.
  2. Sélectionnez Extensions.
  3. Sélectionnez l’extension.
  4. Sélectionner Désinstaller.

Informations de référence sur les extensions de machine virtuelle courantes

Nom de l’extension Description
Extension de script personnalisé pour Linux Exécutez des scripts sur une machine virtuelle Azure.
Extension VMAccess Récupérez l’accès à une machine virtuelle Azure. Vous pouvez également l’utiliser pour gérer les utilisateurs et les informations d’identification.