Partager via


Exécuter des scripts dans votre machine virtuelle Linux à l’aide de commandes d’exécution d’action

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils d’aide relatifs à la fin de vie de CentOS.

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles

La fonctionnalité Run Command utilise l’agent de machine virtuelle (VM) pour exécuter des scripts shell au sein d’une machine virtuelle Linux Azure. Vous pouvez utiliser ces scripts pour la gestion générale des ordinateurs ou des applications. Ils peuvent vous aider à diagnostiquer et corriger rapidement les problèmes de réseau et d’accès aux machines virtuelles et à rétablir l’état de la machine virtuelle.

Avantages

Vous pouvez accéder à vos machines virtuelles de plusieurs façons. Run Command peut exécuter à distance des scripts sur vos machines virtuelles à l’aide de l’agent de machine virtuelle. Vous utilisez Run Command via le portail Azure, une API REST ou Azure CLI pour des machines virtuelles Linux.

Cette fonctionnalité est utile dans tous les scénarios où vous souhaitez exécuter un script sur une machine virtuelle. C’est l’une des seules manières de détecter et corriger un problème sur une machine virtuelle qui n’a pas de port RDP ou SSH ouvert en raison de la configuration du réseau ou de l’utilisateur administratif.

Prérequis

Distributions Linux prises en charge

Distribution Linux x64 ARM64
Alma Linux 9.x + 9.x +
CentOS 7.x+, 8.x+ 7.x+
Debian > 10 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Linux Azure 2.x 2.x
OpenSUSE 12.3+ Non pris en charge
Oracle Linux 6.4+, 7.x+, 8.x+ Non pris en charge
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+ 8.6+, 9.0+
Rocky Linux 9.x + 9.x +
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Restrictions

Les restrictions suivantes s’appliquent lorsque vous utilisez Run Command :

  • La sortie est limitée aux derniers 4 096 octets.
  • La durée minimale d’exécution d’un script est d’environ 20 secondes.
  • Les scripts s’exécutent par défaut en tant qu’utilisateur avec élévation de privilèges sur Linux.
  • Vous pouvez exécuter un script à la fois.
  • Les scripts qui demandent des informations (mode interactif) ne sont pas pris en charge.
  • Vous ne pouvez pas annuler un script en cours d’exécution.
  • La durée maximale d’exécution d’un script est de 90 minutes. Après cela, le script expire.
  • Une connectivité sortante à partir de la machine virtuelle est nécessaire pour retourner les résultats du script.

Notes

Pour fonctionner correctement, Run Command a besoin d’une connectivité (port 443) aux adresses IP publiques Azure. Si l’extension n’a pas accès à ces points de terminaison, il se peut que les scripts s’exécutent correctement, mais qu’ils ne retournent pas les résultats. Si vous bloquez le trafic sur la machine virtuelle, vous pouvez utiliser des balises de service pour autoriser le trafic à destination des IP publiques Azure en utilisant la balise AzureCloud.

Commandes disponibles

Ce tableau affiche la liste des commandes disponibles pour les machines virtuelles Linux. Vous pouvez utiliser la commande RunShellScript pour exécuter n’importe quel script personnalisé de votre choix. Quand vous utilisez Azure CLI ou PowerShell pour exécuter une commande, la valeur que vous fournissez pour le paramètre --command-id ou -CommandId doit être l’une des valeurs listées ci-dessous. Quand vous spécifiez une valeur qui n’est pas une commande disponible, vous recevez cette erreur :

The entity was not found in this Azure location
Nom Description
RunShellScript Exécute un script shell Linux.
ifconfig Obtient la configuration de toutes les interfaces réseau.

Azure CLI

L’exemple suivant utilise la commande az vm run-command pour exécuter un script shell sur une machine virtuelle Linux Azure.

az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"

Notes

Si vous souhaitez exécuter des commandes en tant qu’autre utilisateur, entrez sudo -u pour spécifier un compte d’utilisateur.

Portail Azure

Accédez à une machine virtuelle dans le Portail Azure et sélectionnez Run command dans le menu de gauche sous Opérations. Une liste des commandes pouvant s’exécuter sur la machine virtuelle s’affiche.

Liste des commandes

Choisissez une commande à exécuter. Certaines des commandes peuvent avoir des paramètres d’entrée facultatifs ou obligatoires. Pour ces commandes, les paramètres sont présentés en tant que champs de texte vous permettant de fournir les valeurs d’entrée. Pour chaque commande, vous pouvez voir le script en cours d’exécution en développant Afficher le script. La commande RunShellScript est différente des autres commandes, car elle vous permet de fournir votre propre script personnalisé.

Notes

Les commandes intégrées ne sont pas modifiables.

Une fois que vous avez choisi la commande, sélectionnez Exécuter pour exécuter le script. Une fois le script terminé, il renvoie la sortie et toutes les erreurs dans la fenêtre de sortie. La capture d’écran suivante montre un exemple de sortie de l’exécution de la commande ifconfig.

Sortie du script d’une commande Run

PowerShell

L’exemple suivant utilise l’applet de commande Invoke-AzVMRunCommand pour exécuter un script PowerShell sur une machine virtuelle Azure. Pour la cmdlet, le script référencé dans le paramètre -ScriptPath doit se situer au même emplacement qu'elle.

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}

Limitation de l’accès à la commande Run

Le listage des commandes d’exécution ou l’affichage des détails d’une commande nécessite l’autorisation Microsoft.Compute/locations/runCommands/read au niveau de l’abonnement. Le rôle intégré Lecteur et les niveaux supérieurs disposent de cette autorisation.

L’exécution d’une commande nécessite l’autorisation Microsoft.Compute/virtualMachines/runCommands/write. Le rôle Contributeur de machines virtuelles et les niveaux supérieurs disposent de cette autorisation.

Vous pouvez utiliser un des rôles intégrés ou créer un rôle personnalisé afin d’exécuter Run Command.

Résolution des problèmes liés à la fonctionnalité Run Command orientée action sous Linux

Pour résoudre les problèmes rencontrés avec la fonctionnalité Run Command orientée action dans les environnements Linux, examinez le fichier journal handler, qui se trouve généralement dans le répertoire suivant : /var/log/azure/run-command-handler/handler.log

Problèmes connus

Les journaux de la fonctionnalité Run Command orientée action sous Linux présentent quelques différences notables par rapport à ceux de Windows :

  • Le numéro de séquence est indiqué sur chaque ligne du journal sous la forme « seq=n° ».
  • Il n’y aura pas de ligne avec Awaiting completion..., car celle-ci apparaît uniquement pour cette fonctionnalité sous Windows.
  • La ligne Command existed with code: # apparaît aussi uniquement dans les journaux de la fonctionnalité Run Command orientée action sous Windows.

Suppression de l’extension Run Command orientée action

Si vous devez supprimer votre extension Linux Run Command orientée action, reportez-vous aux étapes ci-dessous pour Azure PowerShell et l’interface CLI :

Dans les exemples de suppression suivants, remplacez rgname et vmname par le nom de votre groupe de ressources et celui de votre machine virtuelle, respectivement.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke  --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname

Notes

Lorsque vous appliquez à nouveau Run Command, l’extension est installée automatiquement. Vous pouvez utiliser la commande de suppression d’extension pour résoudre les problèmes liés à l’extension.

Étapes suivantes

Pour en savoir plus sur les autres méthodes d’exécution à distance des commandes et des scripts dans votre machine virtuelle, consultez Exécuter des scripts dans votre machine virtuelle Linux.