Formats de sortie pour les commandes Azure CLI

Azure CLI utilise JSON comme format de sortie par défaut, mais il propose d’autres formats. Utilisez le paramètre --output (--out ou -o) pour formater la sortie de l’interface CLI. Les valeurs d’argument et les types de sortie sont :

--output Description
json Chaîne JSON. Paramètre par défaut
jsonc JSON coloré
table Table ASCII avec des clés en tant qu’en-têtes de colonne
tsv Valeurs séparées par des tabulations, sans clés
yaml YAML, alternative à JSON pouvant être lue par un humain
yamlc YAML coloré
none Aucune sortie autre que des erreurs et des avertissements

Avertissement

Utilisez un format de sortie de none ou stockez la sortie de commande dans une variable pour éviter d’exposer des secrets tels que des clés API et des informations d’identification. Remarque : certains environnements CI/CD peuvent stocker la sortie des commandes exécutées dans des journaux. Il est recommandé de confirmer ce qui est écrit dans ces fichiers journaux et qui y a accès. Pour plus d’informations, consultez Aucun format de sortie.

Format de sortie JSON (par défaut)

L’exemple suivant affiche la liste des machines virtuelles de vos abonnements au format JSON par défaut.

az vm list --output json

Certains champs de la sortie suivante ont été omis par souci de concision et des informations d’identification ont été remplacées.

[
  {
    "availabilitySet": null,
    "diagnosticsProfile": null,
    "hardwareProfile": {
      "vmSize": "Standard_DS1"
    },
    "id": "/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010",
    "instanceView": null,
    "licenseType": null,
    "location": "westus",
    "name": "DemoVM010",
    "networkProfile": {
      "networkInterfaces": [
        {
          "id": "/subscriptions/.../resourceGroups/demorg1/providers/Microsoft.Network/networkInterfaces/DemoVM010VMNic",
          "primary": null,
          "resourceGroup": "demorg1"
        }
      ]
    },
          ...
          ...
          ...
]

Format de sortie YAML

Le format yaml affiche la sortie en tant que YAML, un format de sérialisation de données en texte brut. YAML est souvent plus simple à lire que JSON et se mappe facilement vers ce format. Certaines applications et commandes CLI utilisent YAML en tant qu’entrée de configuration, plutôt que JSON.

az vm list --output yaml

Certains champs de la sortie suivante ont été omis par souci de concision et des informations d’identification ont été remplacées.

- availabilitySet: null
  diagnosticsProfile: null
  hardwareProfile:
    vmSize: Standard_DS1_v2
  id: /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010
  identity: null
  instanceView: null
  licenseType: null
  location: westus
  name: ExampleVM1
  networkProfile:
    networkInterfaces:
    - id: /subscriptions/.../resourceGroups/DemoRG1/providers/Microsoft.Network/networkInterfaces/DemoVM010Nic
      primary: null
      resourceGroup: DemoRG1
  ...
...

Format de sortie de la table

Le format table imprime la sortie sous forme de tableau ASCII, ce qui la rend facile à lire et à analyser. Les objets imbriqués ne sont pas inclus dans le tableau de sortie, mais peuvent toujours être filtrés dans le cadre d’une requête. Certains champs ne sont pas compris dans le tableau. Ainsi, ce format est le plus approprié si vous souhaitez obtenir un aperçu des données rapide et consultable pour un être humain.

az vm list --output table
Name         ResourceGroup    Location
-----------  ---------------  ----------
DemoVM010    DEMORG1          westus
demovm212    DEMORG1          westus
demovm213    DEMORG1          westus
KBDemo001VM  RGDEMO001        westus
KBDemo020    RGDEMO001        westus

Vous pouvez utiliser le paramètre --query pour personnaliser les propriétés et les colonnes à afficher dans la liste générée. L’exemple suivant montre comment sélectionner uniquement le nom de la machine virtuelle et le nom du groupe de ressources dans la commande list.

az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource    Name
----------  -----------
DEMORG1     DemoVM010
DEMORG1     demovm212
DEMORG1     demovm213
RGDEMO001   KBDemo001VM
RGDEMO001   KBDemo020

Notes

Certaines clés ne sont pas imprimées dans l’affichage du tableau par défaut. Il s’agit de id, type, et etag. Si vous avez besoin de les voir dans votre sortie, vous pouvez utiliser la fonction JMESPath de régénération des clés pour modifier le nom de clé et éviter le filtrage.

az vm list --query "[].{objectID:id}" --output table

Pour plus d’informations concernant l’utilisation des requêtes pour filtrer les données, consultez Utiliser des requêtes JMESPath avec Azure CLI.

Format de sortie TSV

Le format de sortie tsv retourne des valeurs séparées par des tabulations et des sauts de ligne sans mise en forme, clés ou autres symboles supplémentaires. Avec ce format, il est facile de consommer la sortie dans d’autres commandes et outils qui ont besoin de traiter le texte dans une forme donnée. Comme pour le format table, le format tsv n’imprime pas les objets imbriqués.

L’exécution de l’exemple précédent avec l’option tsv retourne le résultat séparé par des tabulations.

az vm list --output tsv
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    None    None    westus    DemoVM010            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    cbd56d9b-9340-44bc-a722-25f15b578444
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    None    None    westus    demovm212            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    4bdac85d-c2f7-410f-9907-ca7921d930b4
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    None    None    westus    demovm213            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    2131c664-221a-4b7f-9653-f6d542fbfa34
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM    None    None    westus    KBDemo001VM            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    14e74761-c17e-4530-a7be-9e4ff06ea74b
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020   None    None    westus    KBDemo020            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    36baa9-9b80-48a8-b4a9-854c7a858ece

L’une des restrictions du format de sortie TSV est qu’il n’existe aucune garantie quant à l’ordre de la sortie. L’interface CLI fait de son mieux pour préserver l’ordre en triant les clés dans le code JSON de la réponse par ordre alphabétique, puis en imprimant leurs valeurs dans l’ordre pour la sortie TSV. Il n’existe aucune garantie que l’ordre soit toujours identique, car le format de réponse du service Azure peut changer.

Pour appliquer un ordre cohérent, vous devez utiliser le paramètre --query et le format de liste à sélection multiple. Quand une commande CLI retourne un dictionnaire JSON unique, utilisez le format général [key1, key2, ..., keyN] pour forcer l’ordre des clés. Pour les commandes CLI qui retournent un tableau, utilisez le format général [].[key1, key2, ..., keyN] pour ordonner les valeurs de colonne.

Par exemple, pour ordonner les informations affichées ci-dessus par ID, emplacement, groupe de ressources et nom de machine virtuelle :

az vm list --output tsv --query '[].[id, location, resourceGroup, name]'
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    westus    DEMORG1    DemoVM010
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    westus    DEMORG1    demovm212
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    westus    DEMORG1    demovm213
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM     westus  RGDEMO001       KBDemo001VM
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020       westus  RGDEMO001       KBDemo020

L’exemple suivant montre comment la sortie tsv peut être transmise à d’autres commandes dans Bash. La requête permet de filtrer la sortie et de forcer l’ordre, grep sélectionne les éléments contenant le texte « RGD », puis la commande cut sélectionne le quatrième champ pour afficher le nom de la machine virtuelle dans la sortie.

az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020

Le format de sortie tsv est souvent utilisé lors de l’affectation de valeurs à des variables. Cet exemple obtient l’ID d’abonnement actif et le stocke dans une variable à utiliser dans un script.

# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"

Pour plus d’exemples de paramètre --query, consultez Comment interroger la sortie de commande Azure CLI.

Aucun format de sortie

Certaines informations de sortie de commandes Azure CLI que vous devez protéger. Voici quatre exemples :

  • mots de passe
  • Chaînes de connexion
  • secrets
  • keys

Pour protéger les secrets et les clés lors de l’utilisation de commandes Azure CLI, choisissez l’une des options suivantes :

Option Avantage Cas d’utilisation
Format de sortie --output none Empêche l’affichage d’informations sensibles dans votre console. Si votre commande échoue, vous recevrez toujours des messages d’erreur. 1. À utiliser quand la sortie de commande peut être récupérée ultérieurement.
2. À utiliser quand vous n’avez pas besoin de sortie.
3. Un choix courant lorsqu’une identité managée ou un principal de service sont utilisés pour gérer les ressources Azure.
Paramètre --query Stocke la sortie dans une variable. 1. À utiliser quand la sortie de commande ne peut pas être récupérée ultérieurement.
2. À utiliser quand vous devez utiliser une valeur de sortie de commande dans un script.

Utiliser none et récupérer les informations de sécurité ultérieurement

Certains secrets Azure peuvent être récupérés ultérieurement. Un bon exemple est le stockage de secrets dans Azure Key Vault. Dans cet exemple, créez un secret Azure Key Vault en utilisant az keyvault secret set avec l’option --output none. Vous pouvez récupérer le secret ultérieurement à l’aide de la commande az keyvault secret show.

az keyvault secret set --name MySecretName \
                       --vault-name MyKeyVaultName \
                       --value MySecretValue\
                       --output none

Utiliser --query et retourner des informations de sécurité à une variable

L’utilisation de --query pour stocker la sortie dans une variable n’est techniquement pas un format de sortie. Il s’agit d’une solution pour protéger les secrets et constitue une alternative à l’utilisation de --output none. Par exemple, lorsque vous réinitialisez les informations d’identification d’un principal de service, le mot de passe ne peut pas être récupéré à nouveau.

Réinitialiser les informations d’identification d’un principal de service qui retournent la sortie au format json par défaut :

# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json

Sortie de la console montrant le nouveau mot de passe dans la console.

{
  "appId": "myServicePrincipalID",
  "password": "myServicePrincipalNewPassword",
  "tenant": "myTenantID"
}

Une meilleure solution consiste à renvoyer les informations sensibles à une variable.

# Bash Script
# reset service principal credentials returning results to a variable
myNewPassword=$(az ad sp credential reset --id myServicePrincipalID --query password --output tsv)

# Display the new password (remove this line in production for security)
echo "New password: $myNewPassword"

Pour plus d’exemples sur le stockage de la sortie dans une variable, consultez Bien utiliser Azure CLI : transmettre des valeurs à une autre commande. Pour en savoir plus sur la syntaxe de paramètre --query, consultez Comment interroger la sortie de commande Azure CLI.

Définir le format de sortie par défaut

Les commandes Azure CLI fournissent une sortie qui peut être contrôlée de deux manières :

Contrôle de sortie Avantage Procédures
Paramètre global Sélectionnez la valeur de sortie par défaut que vous utilisez le plus afin que vous n’ayez pas à fournir continuellement un paramètre --output pour chaque commande de référence. Spécifiez un format de sortie par défaut avec az config set.
paramètre Command Spécifiez la sortie au niveau de la commande et donnez à vos scripts une flexibilité maximale. Vous contrôlez la sortie de la console et l’entrée de variables pour chaque commande des informations de référence. Remplacez le paramètre par défaut par le paramètre --output d’une commande de référence.

La sortie par défaut pour Azure CLI est json. Définissez la sortie par défaut sur none quand la sortie de la console n’est pas nécessaire.

az config set core.output=none

Vous pouvez remplacer la sortie par défaut de n’importe quelle commande de référence Azure CLI en utilisant le paramètre --output. Voici un script de commandes qui modifie et teste la sortie de commande :

# set your default output to table
az config set core.output=table

# show your active subscription in table format
# notice how only a subset of properties are returned in the table
az account show

# override your table default and show your active subscription in jsonc format
az account show --output jsonc

# reset your default output to json
az config set core.output=json

Voir aussi