Alıştırma - VM hakkında sistem ve çalışma zamanı bilgilerini sorgulama

Tamamlandı

Artık bir sanal makine oluşturduğumuza göre, diğer komutlar aracılığıyla bu makine hakkında bilgi edinebiliriz.

komutunu çalıştırarak başlayalım vm list.

az vm list

Bu komut bu abonelikte tanımlanmış tüm sanal makineleri döndürecek. Çıktıyı parametresi aracılığıyla belirli bir kaynak grubuna --resource-group göre filtreleyebilirsiniz.

Çıkış türleri

Şimdiye kadar kullandığımız tüm komutların varsayılan yanıt türünün JSON olduğuna dikkat edin. Bu, betik oluşturma için harikadır, ancak çoğu kişi okumayı zorlaştırır. --output bayrağını kullanarak herhangi bir yanıtın çıkış stilini değiştirebilirsiniz. Örneğin, farklı çıkış stilini görmek için Azure Cloud Shell'de aşağıdaki komutu çalıştırın.

az vm list --output table

table ile birlikte json (varsayılan), jsonc (renklendirilmiş JSON) veya tsv (Sekmeyle Ayrılmış Değerler) belirtebilirsiniz. Farkı görmek için önceki komutla birkaç çeşitleme deneyin.

IP adresini alma

Bir diğer yararlı komut da, bir VM için genel ve özel IP adreslerini listeleyen komutudur vm list-ip-addresses. Bunlar değişirse veya oluşturma sırasında bunları yakalamadıysanız, istediğiniz zaman alabilirsiniz.

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

Bu, aşağıdaki gibi bir çıkış döndürür:

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

Bahşiş

bayrağı için olarak -obir kısaltma söz dizimi kullandığımıza --output dikkat edin. Çoğu parametreyi Azure CLI komutlarına tek bir tire ve harfle kısaltabilirsiniz. Örneğin, ve --resource-group-golarak -n kısaltabilirsiniz--name. Bu, klavye karakterleri girmek için kullanışlıdır, ancak netlik için betiklerde tam seçenek adını kullanmanızı öneririz. Her komutla ilgili ayrıntılar için belgelere bakın.

VM ayrıntılarını alma

Belirli bir sanal makine hakkında komutu çalıştıran ada veya kimliklere vm show göre daha ayrıntılı bilgi alacağız.

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

Bu, bağlı depolama cihazları, ağ arabirimleri ve VM'nin bağlı olduğu kaynaklar için tüm nesne kimlikleri de dahil olmak üzere VM hakkında her türlü bilgiyi içeren oldukça büyük bir JSON bloğu döndürür. Bir kez daha belirtelim, bir tablo biçimine geçebilirdik ama bu, ilginç verilerin neredeyse hepsini atlar. Bunun yerine, JSON için JMESPath adlı yerleşik sorgu diline geçebiliriz.

JMESPath ile sorgulara filtre ekleme

JMESPath, JSON nesneleri çerçevesinde oluşturulmuş endüstri standardı bir sorgu dilidir. En basit sorgu, JSON nesnesinde anahtar seçen bir tanımlayıcı belirtmektir.

Örneğin, şu nesneyi alalım:

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

people dizisine değer dizisi döndürmek için people sorgusunu kullanabiliriz. Kişilerden yalnızca birini istediğimizde, bir dizin oluşturucu kullanabiliriz. Örneğin, people[1] şunu döndürecektir:

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

Ayrıca nesnenin bazı ölçütlere göre bir alt kümesini döndüren belirli niteleyiciler de ekleyebiliriz. Örneğin, people[?age > '25'] niteleyicisini eklemek aşağıdakileri döndürür:

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

Son olarak, bir seçim (people[?age > '25'].[name]) ekleyerek sonuçları kısıtlayabiliriz; bu yalnızca şu adları döndürür:

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

JMESQuery'nin başka bazı ilginç sorgu özellikleri vardır. Zamanınız olduğunda, JMESPath.org sitesinde sağlanan çevrimiçi öğreticiyi gözden geçirebilirsiniz.

Azure CLI sorgularınızı filtreleme

JMES sorgularını temel olarak anlayarak, komutu gibi vm show sorgular tarafından döndürülen verilere filtre ekleyebiliriz. Örneğin, yönetici kullanıcı adını aabiliriz:

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

VM'mize atanan boyutu alabiliriz:

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

Veya ağ arabirimlerinizin tüm kimliklerini almak için sorguyu çalıştırabiliriz:

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

Bu sorgu tekniği herhangi bir Azure CLI komutuyla çalışır ve komut satırında belirli veri bitlerini çekmek için kullanabilirsiniz. Betik oluşturma için de kullanışlıdır. Örneğin, Azure hesabınızdan bir değer çekip bir ortamda veya betik değişkeninde depolayabilirsiniz. Bu şekilde kullanmaya karar verirseniz parametresini --output tsv eklemek yararlı olur (bunu olarak kısaltabilirsiniz -o tsv). Bu, yalnızca sekme ayırıcıları olan gerçek veri değerlerini içeren sonuçlar döndürür.

Örneğin:

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

şu metni döndürür: /subscriptions/20f4b944-fc7a-4d38-b02c-900c8223c3a0/resourceGroups/2568d0d0-efe3-4d04-a08f-df7f009f822a/providers/Microsoft.Network/networkInterfaces/SampleVMVMNic