Übung: Abfragen von System- und Laufzeitinformationen zum virtuellen Computer
Nachdem der virtuelle Computer erstellt wurde, können wir über andere Befehle Informationen über ihn erhalten.
Führen Sie zunächst vm list
aus.
az vm list
Dieser Befehl gibt alle virtuelle Computer zurück, die in diesem Abonnement definiert sind. Die Ausgabe kann über den Parameter --resource-group
nach einer bestimmten Ressourcengruppe gefiltert werden.
Ausgabetypen
Beachten Sie, dass der Standardantworttyp für alle Befehle, die wir bisher ausgeführt haben, JSON ist. Das ist gut für die Skripterstellung, aber häufig nicht zu gut zu lesen. Sie können den Ausgabestil für jede Antwort mit dem Flag --output
ändern. Führen Sie beispielsweise den folgenden Befehl in Azure Cloud Shell aus, um sich den anderen Ausgabestil anzusehen.
az vm list --output table
Neben table
können Sie json
(Standard), jsonc
(farbiger JSON-Code) oder tsv
(durch Tabstopp getrennte Werte) angeben. Probieren Sie einige Varianten mit dem oben genannten Befehl aus, um den Unterschied zu sehen.
Abrufen der IP-Adresse
Ein anderer nützlicher Befehl ist vm list-ip-addresses
, mit dem die öffentlichen und privaten IP-Adressen eines virtuellen Computers aufgelistet werden. Wenn sie sich ändern oder Sie sie während der Erstellung nicht erfasst haben, können Sie sie jederzeit abrufen.
az vm list-ip-addresses -n SampleVM -o table
Die Ausgabe wird wie folgt zurückgegeben:
VirtualMachine PublicIPAddresses PrivateIPAddresses
---------------- ------------------- --------------------
SampleVM 168.61.54.62 10.0.0.4
Tipp
Beachten Sie, dass wir eine Kurzsyntax für das Flag --output
als -o
verwenden. Die meisten Parameter von Azure CLI-Befehlen können auf einen einzigen Bindestrich und Buchstaben verkürzt werden. Sie können z. B. --name
zu -n
und --resource-group
zu -g
verkürzen. Dies ist praktisch für die Eingabe von Zeichen auf der Tastatur. Aus Klarheitsgründen wird jedoch empfohlen, in Skripts den vollständigen Namen der Option zu verwenden. Weitere Informationen zu den einzelnen Befehlen finden Sie in der Dokumentation.
Abrufen von VM-Details
Sie können mit dem Namen oder der ID eines virtuellen Computers detailliertere Informationen zu diesem abrufen, indem Sie den Befehl vm show
ausführen.
az vm show --resource-group "<rgn>[sandbox resource group name]</rgn>" --name SampleVM
Dies gibt einen recht großen JSON-Block mit allen möglichen Informationen zur VM zurück. Dazu gehören angeschlossene Speichergeräte, Netzwerkschnittstellen und alle Objekt-IDs für Ressourcen, mit denen die VM verbunden ist. Auch hier könnten wir zu einem Tabellenformat wechseln, aber dabei entfallen nahezu alle interessanten Daten. Stattdessen können wir auf eine integrierte Abfragesprache für JSON mit dem Namen JMESPath zurückgreifen.
Hinzufügen von Filtern zu Abfragen mit JMESPath
JMESPath ist eine branchenübliche Abfragesprache, die auf JSON-Objekten basiert. Die einfachste Abfrage ist die Angabe eines Bezeichners, der einen Schlüssel im JSON-Objekt auswählt.
Betrachten wir beispielsweise das Objekt:
{
"people": [
{
"name": "Fred",
"age": 28
},
{
"name": "Barney",
"age": 25
},
{
"name": "Wilma",
"age": 27
}
]
}
Wir können die Abfrage people
verwenden, um das Array der Werte für das Array people
zurückzugeben. Wenn wir nur eine der Personen wünschen, können wir einen Indexer verwenden. people[1]
würde z.B. Folgendes zurückgeben:
{
"name": "Barney",
"age": 25
}
Wir können auch bestimmte Qualifizierer hinzufügen, die auf der Grundlage einiger Kriterien eine Teilmenge der Objekte zurückgeben würden. Das Hinzufügen des people[?age > '25']
-Qualifizierers würde beispielsweise Folgendes zurückgeben:
[
{
"name": "Fred",
"age": 28
},
{
"name": "Wilma",
"age": 27
}
]
Zum Schluss können wir die Ergebnisse durch Hinzufügen einer Auswahl (people[?age > '25'].[name]
) einschränken, die nur die Namen zurückgibt:
[
[
"Fred"
],
[
"Wilma"
]
]
JMESQuery bietet mehrere andere interessante Abfragefunktionen. Wenn Sie Zeit haben, sehen Sie sich das Onlinetutorial auf der Website JMESPath.org an.
Filtern Ihrer Azure CLI-Abfragen
Mit einem grundlegenden Verständnis von JMES-Abfragen können wir Filter zu den Daten hinzufügen, die von Abfragen wie dem vm show
-Befehl zurückgegeben werden. Sie können z. B. den Benutzernamen des Administrators abrufen:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "osProfile.adminUsername"
Wir können die Größe bestimmen, die unserer VM zugewiesen wird:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query hardwareProfile.vmSize
Wenn Sie alle IDs für Ihre Netzwerkschnittstellen abrufen möchten, können Sie die folgende Abfrage ausführen:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id"
Diese Abfragetechnik funktioniert mit jedem Azure CLI-Befehl und kann verwendet werden, um bestimmte Daten über die Befehlszeile abzurufen. Sie ist auch für die Skripterstellung nützlich. Sie können z. B. einen Wert aus Ihrem Azure-Konto abrufen und in einer Umgebungs- oder Skriptvariablen speichern. Wenn Sie sich dafür entscheiden, ihn auf diese Weise zu verwenden, ist es hilfreich, den Parameter --output tsv
hinzuzufügen (den Sie zu -o tsv
verkürzen können). Dadurch werden Ergebnisse zurückgegeben, die nur die tatsächlichen Datenwerte mit Tabulatortrennzeichen enthalten.
Beispiel:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id" -o tsv
gibt diesen Text zurück: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Network/networkInterfaces/SampleVMVMNic