Övning – Ställa frågor om systemet och körningsmiljön för den virtuella datorn
Nu när vi har skapat en virtuell dator kan vi få information om den via andra kommandon.
Vi börjar med att köra vm list
.
az vm list
Det här kommandot returnerar alla virtuella datorer som definierats i den här prenumerationen. Du kan filtrera utdata till en specifik resursgrupp via parametern --resource-group
.
Utdatatyper
Observera att standardsvarstypen för alla kommandon som vi har gått igenom hittills är JSON. Detta är bra för skript, men de flesta tycker att det är svårare att läsa. Du kan ändra utdataformatet för svar med hjälp av flaggan --output
. Kör till exempel följande kommando i Azure Cloud Shell för att se det olika utdataformatet.
az vm list --output table
Tillsammans med table
kan du ange json
(standardinställning), jsonc
(färglagd JSON) eller tsv
(tabbavgränsade värden). Prova några varianter med föregående kommando för att se skillnaden.
Hämta IP-adressen
Ett annat användbart kommando är vm list-ip-addresses
, som listar offentliga och privata IP-adresser för en virtuell dator. Om de ändras, eller om du inte hämtade dem när de skapades, kan du hämta dem när som helst.
az vm list-ip-addresses -n SampleVM -o table
Detta returnerar utdata som:
VirtualMachine PublicIPAddresses PrivateIPAddresses
---------------- ------------------- --------------------
SampleVM 168.61.54.62 10.0.0.4
Dricks
Observera att vi använder en kortfattad syntax för --output
flaggan som -o
. Du kan förkorta de flesta parametrar till Azure CLI-kommandon till ett enda streck och en bokstav. Du kan till exempel förkorta --name
till -n
och --resource-group
till -g
. Detta är praktiskt för att ange tangentbordstecken, men vi rekommenderar att du använder det fullständiga alternativnamnet i skript för tydlighetens skull. Mer information om varje kommando finns i dokumentationen.
Hämta vm-information
Vi kan få mer detaljerad information om en specifik virtuell dator efter namn eller ID som kör vm show
kommandot.
az vm show --resource-group "<rgn>[sandbox resource group name]</rgn>" --name SampleVM
Detta returnerar ett ganska stort JSON-block med all slags information om den virtuella datorn, inklusive anslutna lagringsenheter, nätverksgränssnitt och alla objekt-ID:n för resurser som den virtuella datorn är ansluten till. Även nu kan vi ändra till ett tabellformat, men om vi gör det utelämnas nästan alla intressanta data. I stället kan vi använda ett inbyggt frågespråk för JSON kallat JMESPath.
Lägga till filter i frågor med JMESPath
JMESPath är ett branschstandardiserat frågespråk som är uppbyggt kring JSON-objekt. Den enklaste frågan är att ange en identifierare som väljer en nyckel i JSON-objektet.
Anta att vi till exempel har objektet:
{
"people": [
{
"name": "Fred",
"age": 28
},
{
"name": "Barney",
"age": 25
},
{
"name": "Wilma",
"age": 27
}
]
}
Vi kan använda frågan people
för att returnera matrisen med värden för people
-matrisen. Om vi bara är intresserade av en av personerna kan vi använda en indexerare.
people[1]
returnerar exempelvis:
{
"name": "Barney",
"age": 25
}
Vi kan även lägga till specifika kvalificerare som returnerar en delmängd av objekten baserat på vissa kriterier. Till exempel returneras följande om kvalificeraren people[?age > '25']
läggs till:
[
{
"name": "Fred",
"age": 28
},
{
"name": "Wilma",
"age": 27
}
]
Slutligen kan vi begränsa resultaten genom att lägga till en ”select”: people[?age > '25'].[name]
som bara returnerar namnen:
[
[
"Fred"
],
[
"Wilma"
]
]
JMESQuery har flera andra intressanta frågefunktioner. När du har tid rekommenderar vi att du går igenom onlinesjälvstudierna som är tillgängliga på webbplatsen JMESPath.org.
Filtrera dina Azure CLI-frågor
Med en grundläggande förståelse för JMES-frågor kan vi lägga till filter till data som returneras av frågor som vm show
kommandot. Vi kan till exempel hämta administratörens användarnamn:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "osProfile.adminUsername"
Vi kan hämta storleken som tilldelats till vår virtuella dator:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query hardwareProfile.vmSize
Eller så kan vi köra frågan för att hämta alla ID:n för dina nätverksgränssnitt:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id"
Den här frågetekniken fungerar med alla Azure CLI-kommandon och du kan använda den för att hämta specifika databitar på kommandoraden. Det är också användbart för skript. Du kan till exempel hämta ett värde från ditt Azure-konto och lagra det i en miljö eller skriptvariabel. Om du bestämmer dig för att använda den på det här sättet är det användbart att lägga till parametern --output tsv
(som du kan förkorta till -o tsv
). Detta returnerar resultat som endast innehåller de faktiska datavärdena med tabbavgränsare.
Till exempel:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id" -o tsv
texten: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Network/networkInterfaces/SampleVMVMNic