Övning – Ställa frågor om systemet och körningsmiljön för den virtuella datorn
Anmärkning
Den här övningen är valfri. Om du vill slutföra den här övningen måste du skapa en Azure-prenumeration innan du börjar. Om du inte har något Azure-konto eller om du inte vill skapa ett för tillfället kan du läsa igenom anvisningarna så att du förstår den information som visas.
Anmärkning
I den här lektionen använder du Azure Cloud Shell som terminal. Du kan komma åt Cloud Shell via Azure-portalen eller Cloud Shell-inloggningen. Du behöver inte installera något på din dator eller bärbara dator för att använda den.
Anmärkning
I den här övningen ersätter du myResourceGroupName i exemplen med namnet på en befintlig resursgrupp eller namnet på den resursgrupp som du skapade för den här övningen.
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
Tips
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 "myResourceGroupName" --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, att lägga till kvalificeraren people[?age > '25'] skulle ge:
[
{
"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 kan du kolla in onlinemanualen som finns tillgänglig på JMESPath.org-webbplatsen.
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 "myResourceGroupName" \
--name SampleVM \
--query "osProfile.adminUsername"
Vi kan hämta storleken som tilldelats till vår virtuella dator:
az vm show \
--resource-group "myResourceGroupName" \
--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 "myResourceGroupName" \
--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 "myResourceGroupName" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id" -o tsv
returnerar texten: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Network/networkInterfaces/SampleVMVMNic