Cvičení – systém dotazů a informace runtime o virtuálním počítači
Teď, když jsme vytvořili virtuální počítač, můžeme o něm získat informace prostřednictvím jiných příkazů.
Začněme tím, že spustíme vm list
.
az vm list
Tento příkaz vrátí všechny virtuální počítače definované v tomto předplatném. Výstup můžete filtrovat do konkrétní skupiny prostředků prostřednictvím parametru --resource-group
.
Typy výstupu
Všimněte si, že výchozí typ odpovědi pro všechny příkazy, které jsme dosud provedli, je JSON. To je skvělé pro skriptování, ale většina lidí je obtížně čitelný. Typ výstupu pro kteroukoli odpověď můžete změnit příznakem --output
. Například spuštěním následujícího příkazu v Azure Cloud Shellu zobrazte jiný styl výstupu.
az vm list --output table
S příkazem table
můžete zadat json
(výchozí), jsonc
(obarvený JSON) nebo tsv
(hodnoty oddělené tabulátorem). Vyzkoušejte několik variant s předchozím příkazem, abyste viděli rozdíl.
Získání IP adresy
Dalším užitečným příkazem je vm list-ip-addresses
, který uvádí veřejné a privátní IP adresy pro virtuální počítač. Pokud se adresy změní nebo pokud jste si je nepoznamenali při vytváření, můžete je získat kdykoli.
az vm list-ip-addresses -n SampleVM -o table
Vrátí výstup podobný následujícímu:
VirtualMachine PublicIPAddresses PrivateIPAddresses
---------------- ------------------- --------------------
SampleVM 168.61.54.62 10.0.0.4
Tip
Všimněte si, že používáme zkratkovou syntaxi příznaku --output
jako -o
. Většinu parametrů můžete zkrátit na příkazy Azure CLI na jednu pomlčku a písmeno. Můžete například zkrátit --name
na -n
a --resource-group
na -g
. To je užitečné pro zadávání znaků klávesnice, ale pro přehlednost doporučujeme použít úplný název možnosti ve skriptech. Podrobnosti o jednotlivých příkazech najdete v dokumentaci.
Získání podrobností o virtuálním počítači
Podrobnější informace o konkrétním virtuálním počítači můžeme získat podle názvu nebo ID spuštění vm show
příkazu.
az vm show --resource-group "<rgn>[sandbox resource group name]</rgn>" --name SampleVM
Tím se vrátí poměrně velký blok JSON s nejrůznějšími informacemi o virtuálním počítači, včetně připojených úložných zařízení, síťových rozhraní a všech ID objektů pro prostředky, ke kterým je virtuální počítač připojený. Opět můžeme změnit formát výstupu na tabulku, ale tím ztratíme skoro všechna zajímavá data. Místo toho můžeme přepnout na integrovaný dotazovací jazyk pro JSON nazvaný JMESPath.
Přidání filtrů do dotazů pomocí JMESPathu
JMESPath je standardní dotazovací jazyk postavené na objektech JSON. Nejjednodušším dotazem je zadání identifikátoru, který vybere v objektu JSON určitý klíč.
Mějme například objekt:
{
"people": [
{
"name": "Fred",
"age": 28
},
{
"name": "Barney",
"age": 25
},
{
"name": "Wilma",
"age": 27
}
]
}
Můžeme použít dotaz people
, který vrátí pole hodnot pro pole people
. Pokud budeme chtít jen jednoho člověka, můžeme použít indexer. Například people[1]
vrátí:
{
"name": "Barney",
"age": 25
}
Můžeme také přidat konkrétní kvalifikátory, které vrátí podmnožinu objektů na základě určitých kritérií. Například přidaný kvalifikátor people[?age > '25']
vrátí:
[
{
"name": "Fred",
"age": 28
},
{
"name": "Wilma",
"age": 27
}
]
Nakonec můžeme výsledky omezit přidáním výběru people[?age > '25'].[name]
, který vrátí jenom názvy:
[
[
"Fred"
],
[
"Wilma"
]
]
JMESQuery má několik dalších zajímavých funkcí dotazování. Pokud máte čas, přečtěte si online kurz, který je k dispozici webu JMESPath.org.
Filtrování dotazů Azure CLI
Díky základnímu porozumění dotazům JMES můžeme do dat vrácených dotazy, jako je tento vm show
příkaz, přidat filtry. Můžeme například načíst uživatelské jméno správce:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "osProfile.adminUsername"
Můžeme získat velikost přiřazenou k virtuálnímu počítači:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query hardwareProfile.vmSize
Pokud chcete načíst všechna ID vašich síťových rozhraní, můžeme dotaz spustit:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id"
Tato technika dotazu funguje s libovolným příkazem Azure CLI a můžete ji použít k načtení konkrétních bitů dat z příkazového řádku. Je užitečná i pro skriptování. Můžete například získat hodnotu z účtu Azure a uložit ji do prostředí nebo proměnné skriptu. Pokud se rozhodnete tento způsob použít, je užitečné přidat --output tsv
parametr (na který můžete zkrátit -o tsv
). Tím se vrátí výsledky, které obsahují pouze skutečné hodnoty dat s oddělovači tabulátorů.
Příklad:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id" -o tsv
vrátí tento text: /subscriptions/20f4b944-fc7a-4d38-b02c-900c8223c3a0/resourceGroups/2568d0d0-efe3-4d04-a08f-df7f009f822a/providers/Microsoft.Network/networkInterfaces/SampleVMVMNic