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, dontnetworkInterfaces
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 valeurid
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
.