Oefening: Querysysteem- en runtime-informatie over de virtuele machine

Voltooid

Nu we een virtuele machine hebben gemaakt, kunnen we er informatie over krijgen via andere opdrachten.

Laten we beginnen met het uitvoeren vm list.

az vm list

Met deze opdracht worden alle virtuele machines geretourneerd die zijn gedefinieerd in dit abonnement. U kunt de uitvoer filteren op een specifieke resourcegroep via de --resource-group parameter.

Uitvoertypen

U ziet dat het standaardreactietype voor alle opdrachten die we tot nu toe hebben gedaan JSON is. Dit is ideaal voor het uitvoeren van scripts, maar de meeste mensen vinden het moeilijker om te lezen. U kunt de uitvoerstijl van elke reactie wijzigen via de vlag --output. Voer bijvoorbeeld de volgende opdracht uit in Azure Cloud Shell om de verschillende uitvoerstijl weer te geven.

az vm list --output table

Samen met table kunt u json (de standaardinstelling), jsonc (gekleurde JSON) of tsv (door tabs gescheiden waarden) opgeven. Probeer een paar variaties met de voorgaande opdracht om het verschil te zien.

Het IP-adres ophalen

Een andere handige opdracht is vm list-ip-addresses, waarin de openbare en persoonlijke IP-adressen voor een virtuele machine worden vermeld. Als ze wijzigen of u deze niet hebt vastgelegd tijdens het maken, kunt u ze op elk gewenst moment ophalen.

az vm list-ip-addresses -n SampleVM -o table

Dit retourneert uitvoer zoals:

VirtualMachine    PublicIPAddresses    PrivateIPAddresses
----------------  -------------------  --------------------
SampleVM          168.61.54.62         10.0.0.4

Tip

U ziet dat we een verkorte syntaxis voor de --output vlag gebruiken als -o. U kunt de meeste parameters inkorten tot Azure CLI-opdrachten met één streepje en één letter. U kunt bijvoorbeeld verkorten --name tot -n en --resource-group met -g. Dit is handig voor het invoeren van toetsenbordtekens, maar we raden u aan de volledige optienaam in scripts te gebruiken voor duidelijkheid. Raadpleeg de documentatie voor meer informatie over elke opdracht.

VM-details ophalen

We kunnen gedetailleerdere informatie krijgen over een specifieke virtuele machine op naam of id waarop de vm show opdracht wordt uitgevoerd.

az vm show --resource-group <rgn>[sandbox resource group name]</rgn> --name SampleVM

Dit retourneert een vrij groot JSON-blok met allerlei informatie over de virtuele machine, waaronder gekoppelde opslagapparaten, netwerkinterfaces en alle object-id's voor resources waarmee de VIRTUELE machine is verbonden. We kunnen nu weer overstappen op een tabelindeling, maar hiermee worden bijna alle interessante gegevens weggelaten. In plaats daarvan kunnen we een ingebouwde querytaal inschakelen voor JSON met de naam JMESPath.

Filters toevoegen aan query's met JMESPath

JMESPath is een querytaal die voldoet aan de industriestandaard en is gebaseerd op JSON-objecten. De meest eenvoudige query is het opgeven van een id die een sleutel selecteert in het JSON-object.

Voor bijvoorbeeld het volgende object:

{
  "people": [
    {
      "name": "Fred",
      "age": 28
    },
    {
      "name": "Barney",
      "age": 25
    },
    {
      "name": "Wilma",
      "age": 27
    }
  ]
}

Kunnen we de query people gebruiken om de matrix van waarden te retourneren voor de matrix people. Als we maar één van de personen willen, kunnen we een indexeerfunctie gebruiken. Met people[1] wordt bijvoorbeeld het volgende geretourneerd:

{
    "name": "Barney",
    "age": 25
}

We kunnen ook specifieke kwalificaties toevoegen die een subset van de objecten retourneren op basis van een aantal criteria. Als u bijvoorbeeld de kwalificatie people[?age > '25'] toevoegt, wordt dit geretourneerd:

[
  {
    "name": "Fred",
    "age": 28
  },
  {
    "name": "Wilma",
    "age": 27
  }
]

Ten slotte kunnen we de resultaten beperken door een SELECT: people[?age > '25'].[name] toe te voegen waarmee alleen de namen worden geretourneerd:

[
  [
    "Fred"
  ],
  [
    "Wilma"
  ]
]

JMESQuery heeft verschillende andere interessante queryfuncties. Lees wanneer u tijd hebt de online zelfstudie die beschikbaar is op de site JMESPath.org.

Uw Azure CLI-query's filteren

Met basiskennis van JMES-query's kunnen we filters toevoegen aan de gegevens die worden geretourneerd door query's zoals de vm show opdracht. We kunnen bijvoorbeeld de gebruikersnaam van de beheerder ophalen:

az vm show \
    --resource-group <rgn>[sandbox resource group name]</rgn> \
    --name SampleVM \
    --query "osProfile.adminUsername"

We kunnen de grootte ophalen die is toegewezen aan onze virtuele machine:

az vm show \
    --resource-group <rgn>[sandbox resource group name]</rgn> \
    --name SampleVM \
    --query hardwareProfile.vmSize

Als u alle id's voor uw netwerkinterfaces wilt ophalen, kunnen we de query uitvoeren:

az vm show \
    --resource-group <rgn>[sandbox resource group name]</rgn> \
    --name SampleVM \
    --query "networkProfile.networkInterfaces[].id"

Deze querytechniek werkt met elke Azure CLI-opdracht en u kunt deze gebruiken om specifieke gegevens op de opdrachtregel op te halen. Het is ook handig voor het uitvoeren van scripts. U kunt bijvoorbeeld een waarde uit uw Azure-account halen en opslaan in een omgeving of scriptvariabele. Als u besluit deze op deze manier te gebruiken, is het handig om de --output tsv parameter toe te voegen (die u kunt inkorken).-o tsv Hiermee worden resultaten geretourneerd die alleen de werkelijke gegevenswaarden met tabscheidingstekens bevatten.

Bijvoorbeeld:

az vm show \
    --resource-group <rgn>[sandbox resource group name]</rgn> \
    --name SampleVM \
    --query "networkProfile.networkInterfaces[].id" -o tsv

retourneert de tekst: /subscriptions/20f4b944-fc7a-4d38-b02c-900c8223c3a0/resourceGroups/2568d0d0-efe3-4d04-a08f-df7f009f822a/providers/Microsoft.Network/networkInterfaces/SampleVMVMNic