Uzyskiwanie informacji o maszynie wirtualnej za pomocą zapytań

Teraz, gdy maszyna wirtualna została utworzona, można pobrać szczegółowe informacje o niej. Typowym poleceniem używanym do pobierania informacji z zasobu jest show.

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

Maszyna wirtualna ma wiele właściwości, które mogą być trudne do analizowania wizualnego. Zwrócony kod JSON zawiera informacje dotyczące uwierzytelniania, magazynu interfejsu sieciowego i nie tylko. Przede wszystkim zawierają identyfikatory obiektów platformy Azure dla zasobów, z którymi połączona jest maszyna wirtualna. Identyfikatory obiektów umożliwiają bezpośredni dostęp do tych zasobów, aby uzyskać więcej informacji o konfiguracji i możliwościach maszyny wirtualnej.

Aby wyodrębnić identyfikator obiektu, --query używany jest argument . Zapytania są zapisywane w językuzapytań JMESPath Rozpocznij od pobrania identyfikatora obiektu kontrolera interfejsu sieciowego (NIC).

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

Wiele dzieje się w tym miejscu podczas dodawania zapytania. Każda jego część odwołuje się do klucza w wyjściowych danych JSON lub jest operatorem JMESPath.

  • networkProfile to klucz najwyższego poziomu wartości JSON, która ma networkInterfaces jako podklucz. Jeśli wartość JSON jest słownikiem, jej klucze są przywoływane z klucza nadrzędnego za pomocą operatora ..
  • Wartość networkInterfaces jest tablicą, więc jest spłaszczone z operatorem [] . Ten operator jest uruchamiany w pozostałej części zapytania na każdym elemencie tablicy. W takim przypadku pobiera wartość id każdego elementu tablicy.

Format danych wyjściowych tsv (wartości rozdzielane znakami tabulacji) może zawierać wyłącznie dane wynikowe i odstęp składający się ze znaków tabulacji i nowego wiersza. Ponieważ zwracana wartość jest pojedynczym nagim ciągiem, można bezpiecznie przypisać ją bezpośrednio do zmiennej powłoki.

Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących danych wyjściowych interfejsu wiersza polecenia platformy Azure, zobacz Jak wykonywać zapytania dotyczące danych wyjściowych polecenia interfejsu wiersza polecenia platformy Azure przy użyciu zapytania JMESPath

Przejdź dalej i przypisz identyfikator obiektu karty sieciowej do zmiennej powłoki teraz.

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

W tym przykładzie pokazano również użycie krótkich argumentów. Możesz użyć -g zamiast --resource-group, -n zamiast --name i -o zamiast --output.