Exécuter des scripts dans votre machine virtuelle Linux à l’aide de commandes d’exécution d’action
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 + |
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.
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.
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.