Övning – Ställa frågor om systemet och körningsmiljön för den virtuella datorn

Slutförd

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