Ottenere informazioni sulla VM con le query

Ora che è stata creata, è possibile ottenere informazioni dettagliate sulla VM. Il comando comune per ottenere informazioni da una risorsa è show.

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

Una macchina virtuale ha molte proprietà che possono essere difficili da analizzare visivamente. Il codice JSON restituito contiene informazioni sull'autenticazione, sull'archiviazione dell'interfaccia di rete e altro ancora. Contiene soprattutto gli ID oggetto di Azure per le risorse alle quali è connessa la macchina virtuale. Gli ID oggetto consentono l'accesso diretto a queste risorse per ottenere altre informazioni sulla configurazione e le capacità della macchina virtuale.

Per estrarre l'ID oggetto, viene utilizzato l'argomento --query . Le query vengono scritte nel linguaggiodi query JMESPath Iniziare con ottenere l'ID oggetto NIC (Network Interface Controller).

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

Vengono visualizzate molte informazioni, semplicemente aggiungendo la query. Ogni parte della query fa riferimento a una chiave nell'output JSON oppure è un operatore JMESPath.

  • networkProfile è una chiave del valore JSON di primo livello, che ha networkInterfaces come sottochiave. Se un valore JSON è un dizionario, alle sue chiavi fa riferimento la chiave padre con l'operatore ..
  • Il networkInterfaces valore è una matrice, quindi viene appiattito con l'operatore [] . Questo operatore esegue il resto della query in ogni elemento della matrice. In questo caso ottiene il valore id di ogni elemento di matrice.

Il formato di output tsv (valori delimitati da tabulazioni) include solo i dati dei risultati e spazi vuoti costituiti da tabulazioni e caratteri di nuova riga. Poiché il valore restituito è una singola stringa bare, è possibile assegnare direttamente a una variabile della shell.

Per altre informazioni sull'esecuzione di query sull'output dell'interfaccia della riga di comando di Azure, vedere Come eseguire query sull'output dei comandi dell'interfaccia della riga di comando di Azure usando una query JMESPath

Procedere e assegnare l'ID oggetto NIC a una variabile della shell.

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

Questo esempio illustra anche l'uso di argomenti brevi. È possibile usare -g al posto di --resource-group, -n al posto di --name e -o al posto di --output.