Obtenir des informations sur les machines virtuelles avec des requêtes

Maintenant qu’une machine virtuelle a été créée, des informations détaillées la concernant peuvent être récupérées. La commande courante pour obtenir des informations à partir d’une ressource est show.

az vm show --name $vmName --resource-group $resourceGroup

Une machine virtuelle compte plusieurs propriétés qui peuvent être difficiles à analyser visuellement. Le code JSON retourné contient des informations sur l’authentification, les interfaces réseau, le stockage, etc. Plus important encore, il contient les ID d’objet Azure pour les ressources auxquelles la machine virtuelle est connectée. Les ID d’objet permettent d’accéder directement à ces ressources pour obtenir plus d’informations sur la configuration et les capacités de la machine virtuelle.

Afin d’extraire l’ID d’objet, vous devez utiliser l’argument --query. Les requêtes sont écrites dans le langage de requête JMESPath. Commencez par obtenir l’ID de l’objet NIC.

az vm show --name $vmName \
  --resource-group $resourceGroup \
  --query 'networkProfile.networkInterfaces[].id' \
  --output tsv

Beaucoup de choses se produisent ici, simplement en ajoutant la requête. Chaque partie référence une clé dans le JSON de sortie, ou est un opérateur JMESPath.

  • networkProfile est une clé JSON de niveau supérieur, dont networkInterfaces est une sous-clé. Si une valeur JSON est un dictionnaire, ses clés sont référencées à partir de la clé parente avec l’opérateur ..
  • La valeur networkInterfaces est un tableau, elle est donc aplatie avec l’opérateur []. Cet opérateur exécute le reste de la requête sur chaque élément du tableau. Dans ce cas, il obtient la valeur id de chaque élément du tableau.

Le format de sortie tsv (valeurs séparées par des tabulations) est garanti pour n’inclure que les données de résultat et les espaces blancs constitués d’onglets et des sauts de ligne. Étant donné que la valeur retournée est une chaîne unique, il est plus sûr de l’affecter directement à une variable shell.

Pour plus d’informations sur l’interrogation de la sortie Azure CLI, consultez Comment interroger une sortie de commande Azure CLI à l’aide d’une requête JMESPath

À présent, affectez l’ID de l’objet NIC à une variable shell.

nicId=$(az vm show \
  -n $vmName \
  -g $resourceGroup \
  --query 'networkProfile.networkInterfaces[].id' \
  -o tsv)

Cet exemple montre également l’utilisation d’arguments courts. Vous pouvez utiliser -g au lieu de --resource-group, -n au lieu de --name, et -o au lieu de --output.