Conseils pour bien utiliser Azure CLI

Azure CLI est un outil en ligne de commande qui vous permet de configurer et de gérer des ressources Azure depuis nombreux environnements shell. Après avoir choisi votre environnement d’interpréteur de commandes préféré et installé Azure CLI, utilisez cet article pour découvrir des conseils utiles sur la façon d’éviter les pièges courants et d’utiliser Azure CLI avec succès.

Pour en savoir plus sur des commandes Azure CLI spécifiques, consultez la liste des informations de référence sur Azure CLI.

Choisir un langage de script

Azure CLI est un outil code source ouvert que vous pouvez exécuter dans de nombreux langages de script.

  • Il s’agit du langage de script qui détermine les règles de guillemet, d’échappement et de continuation de ligne pour les commandes Azure CLI.
  • Il peut être difficile de copier la syntaxe de commande Azure CLI contenant des guillemets simples ou doubles, des caractères d’échappement ou des caractères de continuation de ligne entre les langues.
  • La plupart de la documentation Microsoft pour Azure CLI est écrite et testée dans Bash.
  • Si PowerShell est votre langage de script de votre choix, envisagez d’utiliser l’outil, Azure PowerShell, qui dispose de fonctionnalités natives de langage de script PowerShell.

Pour plus d’informations sur les options de langage de script pour Azure CLI, consultez Choisir l’outil en ligne de commande approprié.

Forum aux questions

Voici quelques liens pour vous aider à répondre aux questions les plus fréquemment posées sur Azure CLI :

Zone d’objet avec lien d’article Conseil
Travailler derrière un proxy Informations sur le fonctionnement d’un serveur proxy.
Gestionnaire de comptes web (WAM) Informations sur WAM et comment la désactiver.
Paramètres de configuration Liste des paramètres de configuration Azure CLI disponibles, comment activer/désactiver les fonctionnalités Azure CLI et définir des valeurs par défaut.
Formats de sortie Instructions sur la façon de stocker des ID de ressource Azure dans des variables et de protéger les secrets retournés par les commandes Azure CLI.
Passage de valeurs JSON dans une chaîne Exemples de guillemets pour les valeurs de paramètres JSON.
Cycle de vie de support Informations sur les systèmes d’exploitation pris en charge, les langages de script et la fin du service pour les versions et dépendances d’Azure CLI.
REST API Une autre commande az rest à utiliser lorsqu’une commande Azure CLI spécifique n’est pas disponible pour une ressource Azure.
Groupes de référence Azure CLI Liste À Z des groupes de référence Azure CLI avec exploration vers le bas vers les sous-groupes et toutes les commandes Azure CLI.
Articles Azure CLI Liste À Z des guides de démarrage rapide, des guides pratiques et des didacticiels qui utilisent des commandes de référence Azure CLI. La liste est regroupée par groupe de références et sous-groupe pour faciliter la recherche.
Exemples d’interface de ligne de commande Azure Liste d’exemples à Z, y compris ces exemples dans le référentiel GitHub Azure-samples/azure-cli-samples.
Dépannage Cause d’erreur et conseils de correction.
Nouveautés Résumé court des nouvelles fonctionnalités d’Azure CLI.

Passer des valeurs à une autre commande

Si la valeur est utilisée plusieurs fois, affectez-la à une variable. Les variables vous permettent d’utiliser plusieurs fois des valeurs ou de créer des scripts plus généraux. Cet exemple attribue à une variable un ID trouvé par la commande az vm list.

# assign the list of running VMs to a variable
running_vm_ids=$(az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM running'].id" --output tsv)

# verify the value of the variable
echo $running_vm_ids

Si la valeur n’est utilisée qu’une seule fois, envisagez d’utiliser un canal. (Piping transmet la sortie d’une commande en tant qu’entrée à une deuxième commande.)

az vm list --query "[?powerState=='VM running'].name" --output tsv | grep my_vm

Pour les listes à valeurs multiples, considérez les options suivantes :

  1. Si vous avez besoin de davantage de contrôle sur le résultat, utilisez une boucle « for » :
#!/usr/bin/env bash
for vmList in $(az vm list --resource-group MyResourceGroup --show-details --query "[?powerState=='VM running'].id"   -output tsv); do
    echo stopping $vmList
    az vm stop --ids $vmList
    if [ $? -ne 0 ]; then
        echo "Failed to stop $vmList"
        exit 1
    fi
    echo $vmList stopped
done
  1. Vous pouvez également utiliser xargs et envisager d’utiliser l’indicateur -P pour exécuter les opérations en parallèle afin d’améliorer les performances :
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | xargs -I {} -P 10 az vm start --ids "{}"
  1. Enfin, Azure CLI propose une prise en charge intégrée pour traiter les commandes avec plusieurs --ids en parallèle afin d’obtenir le même effet que xargs. @- est utilisé pour récupérer des valeurs à partir du canal :
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

Pour plus d’informations sur l’utilisation de constructions Bash avec Azure CLI, notamment des boucles, des instructions case, if..then..else, et la gestion des erreurs, consultez Découvrir comment utiliser Bash avec Azure CLI.

Paramètres de mise à jour courants

Les groupes de commandes Azure CLI sont souvent dotés d’une commande de mise à jour. Par exemple, Machines virtuelles Azure comprend la commande az vm update. La plupart des commandes de mise à jour offrent les trois paramètres courants : --add, --setet --remove.

Les paramètres --set et --add acceptent une liste de paires clé-valeur séparées par des espaces : key1=value1 key2=value2. Pour voir les propriétés que vous pouvez mettre à jour, utilisez une commande show, telle que az vm show.

az vm show --resource-group VMResources --name virtual-machine-01

Pour simplifier la commande, envisagez d’utiliser une chaîne JSON. Par exemple, pour attacher un nouveau disque de données à une machine virtuelle, utilisez la valeur suivante :

az vm update --resource-group VMResources --name virtual-machine-01 \
--add storageProfile.dataDisks "{\"createOption\": \"Attach\", \"managedDisk\":
   {\"id\":
   \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yg/providers/Microsoft.Compute/disks/yg-disk\"},
   \"lun\": 1}"

Commandes de ressources génériques

Un service avec lequel vous souhaitez travailler peut ne pas prendre en charge Azure CLI. Vous pouvez utiliser les commandes az resource ou az rest pour utiliser ces ressources.

Exécution simultanée

Si vous exécutez simultanément des commandes Azure CLI sur la même machine, des conflits d’écriture peuvent se produire si plusieurs commandes Azure CLI écrivent dans le même cache de jetons MSAL (Microsoft Authentication Library).

Pour éviter les défaillances potentielles, isolez le dossier de configuration Azure CLI pour chaque script en définissant une variable AZURE_CONFIG_DIR d’environnement pour chaque script sur un répertoire distinct. Les commandes Azure CLI de ce script enregistrent la configuration et le cache de jetons à l’emplacement configuré au lieu du dossier par défaut ~/.azure.

export AZURE_CONFIG_DIR=/my/config/dir

Opérations asynchrones

Les opérations dans Azure peuvent prendre un certain temps. Par exemple, la configuration d’une machine virtuelle dans un centre de données n’est pas instantanée. Azure CLI attend que la commande se termine pour accepter d’autres commandes. De nombreuses commandes offrent donc un paramètre --no-wait comme indiqué ici :

az group delete --name MyResourceGroup --no-wait

Quand vous supprimez un groupe de ressources, toutes les ressources qui lui appartiennent sont également supprimées. La suppression de ces ressources peut prendre beaucoup de temps. Quand vous exécutez la commande avec le paramètre --no-wait, la console accepte de nouvelles commandes sans interrompre la suppression.

De nombreuses commandes offrent une option wait, qui interrompt la console jusqu’à ce qu’une condition soit remplie. L’exemple suivant utilise la commande az vm wait pour prendre en charge la création de ressources indépendantes en parallèle :

az vm create --resource-group VMResources --name virtual-machine-01 --image centos --no-wait
az vm create --resource-group VMResources --name virtual-machine-02 --image centos --no-wait

subscription=$(az account show --query "id" -o tsv)
vm1_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-01"
vm2_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-02"
az vm wait --created --ids $vm1_id $vm2_id

Une fois les deux ID créés, vous pouvez réutiliser la console.

Exemples de scripts

Voici des exemples d’utilisation de variables et de boucles dans une liste lors de l’utilisation de Machines virtuelles Azure. Pour des exemples plus avancés d’utilisation de constructions Bash avec Azure CLI, notamment des boucles, des instructions case, if..then..else, et la gestion des erreurs, consultez Découvrir comment utiliser Bash avec Azure CLI.

Utilisez ces scripts pour enregistrer des ID dans des variables :

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
   `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    SET "vm_ids=%%F %vm_ids%"  :: construct the id list
)
az vm stop --ids %vm_ids% :: CLI stops all VMs in parallel

Utilisez ces scripts pour boucler dans une liste :

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
    `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    ECHO Stopping %%F
    az vm stop --ids %%F
)

Voir aussi