Format output untuk perintah Azure CLI

Azure CLI menggunakan JSON sebagai format output default-nya, tetapi menawarkan format lain. Gunakan parameter --output (--out atau -o) untuk memformat output CLI. Nilai argumen dan jenis output-nya adalah:

--output Deskripsi
json String JSON. Ini adalah pengaturan default
jsonc JSON berwarna
table Tabel ASCII dengan kunci sebagai judul kolom
tsv Nilai yang dipisahkan tab, tanpa kunci
yaml YAML, alternatif yang dapat dibaca manusia untuk JSON
yamlc YAML berwarna
none Tidak ada output lain selain kesalahan dan peringatan

Peringatan

Gunakan format none output atau simpan output perintah dalam variabel untuk menghindari mengekspos rahasia seperti kunci API dan kredensial. Catatan: Lingkungan CI/CD tertentu dapat menyimpan output perintah yang dijalankan dalam log. Ini adalah praktik yang baik untuk mengonfirmasi apa yang ditulis dalam file log tersebut dan siapa yang memiliki akses ke log. Untuk informasi selengkapnya, lihat Format output tidak ada.

Format output JSON (default)

Contoh berikut menampilkan daftar mesin virtual dalam langganan Anda dalam format JSON default.

az vm list --output json

Untuk mempersingkat, beberapa bidang pada output berikut dihilangkan, informasi yang diganti diidentifikasi.

[
  {
    "availabilitySet": null,
    "diagnosticsProfile": null,
    "hardwareProfile": {
      "vmSize": "Standard_DS1"
    },
    "id": "/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010",
    "instanceView": null,
    "licenseType": null,
    "location": "westus",
    "name": "DemoVM010",
    "networkProfile": {
      "networkInterfaces": [
        {
          "id": "/subscriptions/.../resourceGroups/demorg1/providers/Microsoft.Network/networkInterfaces/DemoVM010VMNic",
          "primary": null,
          "resourceGroup": "demorg1"
        }
      ]
    },
          ...
          ...
          ...
]

Format output YAML

Format yaml mencetak output sebagai YAML, format serialisasi data teks biasa. YAML cenderung lebih mudah dibaca daripada JSON, dan dipetakan dengan mudah ke format tersebut. Beberapa aplikasi dan perintah CLI menggunakan YAML sebagai input konfigurasi, bukan JSON.

az vm list --output yaml

Untuk mempersingkat, beberapa bidang pada output berikut dihilangkan, informasi yang diganti diidentifikasi.

- availabilitySet: null
  diagnosticsProfile: null
  hardwareProfile:
    vmSize: Standard_DS1_v2
  id: /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010
  identity: null
  instanceView: null
  licenseType: null
  location: westus
  name: ExampleVM1
  networkProfile:
    networkInterfaces:
    - id: /subscriptions/.../resourceGroups/DemoRG1/providers/Microsoft.Network/networkInterfaces/DemoVM010Nic
      primary: null
      resourceGroup: DemoRG1
  ...
...

Format output tabel

Format table mencetak output sebagai tabel ASCII, sehingga mudah dibaca dan dipindai. Objek bersarang tidak disertakan dalam output tabel, namun masih dapat difilter sebagai bagian dari kueri. Beberapa bidang tidak disertakan dalam tabel, jadi ini adalah format terbaik jika Anda menginginkan ringkasan data yang cepat dan dapat dicari manusia.

az vm list --output table
Name         ResourceGroup    Location
-----------  ---------------  ----------
DemoVM010    DEMORG1          westus
demovm212    DEMORG1          westus
demovm213    DEMORG1          westus
KBDemo001VM  RGDEMO001        westus
KBDemo020    RGDEMO001        westus

Anda dapat menggunakan parameter --query untuk menyesuaikan properti dan kolom yang ingin ditampilkan dalam output daftar. Contoh berikut menunjukkan cara memilih Nama VM dan Nama Grup Sumber Daya saja dalam perintah list.

az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource    Name
----------  -----------
DEMORG1     DemoVM010
DEMORG1     demovm212
DEMORG1     demovm213
RGDEMO001   KBDemo001VM
RGDEMO001   KBDemo020

Catatan

Secara default, beberapa kunci tidak dicetak dalam tampilan tabel. Kunci tersebut adalah id, type, dan etag. Jika ingin melihatnya di output, Anda dapat menggunakan fitur penentuan ulang kunci JMESPath untuk mengubah nama kunci dan menghindari pemfilteran.

az vm list --query "[].{objectID:id}" --output table

Untuk informasi tentang cara menggunakan kueri untuk memfilter data, lihat Menggunakan kueri JMESPath dengan Azure CLI.

Format output TSV

tsv Format output mengembalikan nilai yang dipisahkan tab dan baris baru tanpa pemformatan tambahan, kunci, atau simbol lainnya. Format ini memudahkan penggunaan output ke dalam perintah dan alat lain yang perlu memproses teks dalam beberapa bentuk. Seperti halnya format table, tsv tidak mencetak objek bersarang.

Penggunaan contoh sebelumnya dengan opsi tsv akan menghasilkan hasil yang dipisahkan tab.

az vm list --output tsv
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    None    None    westus    DemoVM010            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    cbd56d9b-9340-44bc-a722-25f15b578444
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    None    None    westus    demovm212            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    4bdac85d-c2f7-410f-9907-ca7921d930b4
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    None    None    westus    demovm213            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    2131c664-221a-4b7f-9653-f6d542fbfa34
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM    None    None    westus    KBDemo001VM            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    14e74761-c17e-4530-a7be-9e4ff06ea74b
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020   None    None    westus    KBDemo020            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    36baa9-9b80-48a8-b4a9-854c7a858ece

Salah satu batasan format output TSV adalah bahwa pengurutan output tidak bisa dijamin. CLI melakukan upaya terbaik untuk menjaga pengurutan dengan menyortir kunci dalam JSON respons menurut abjad, dan kemudian mencetak nilainya secara berurutan untuk output TSV. Tidak ada jaminan bahwa pesanan selalu identik, karena format respons layanan Azure dapat berubah.

Untuk menerapkan pengurutan yang konsisten, Anda harus menggunakan parameter --query dan format daftar multi-pilihan. Jika perintah CLI menampilkan satu kamus JSON, gunakan format umum [key1, key2, ..., keyN] untuk memaksa urutan kunci. Untuk perintah CLI yang mengembalikan array, gunakan format [].[key1, key2, ..., keyN] umum untuk mengurutkan nilai kolom.

Misalnya, untuk mengurutkan informasi yang ditampilkan di atas berdasarkan ID, lokasi, grup sumber daya, dan nama VM:

az vm list --output tsv --query '[].[id, location, resourceGroup, name]'
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    westus    DEMORG1    DemoVM010
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    westus    DEMORG1    demovm212
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    westus    DEMORG1    demovm213
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM     westus  RGDEMO001       KBDemo001VM
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020       westus  RGDEMO001       KBDemo020

Contoh berikutnya menunjukkan bagaimana output tsv dapat dialirkan ke perintah lain dalam bash. Kueri digunakan untuk memfilter output dan memaksa pengurutan, grep memilih item yang memiliki teks "RGD" di dalamnya, lalu perintah cut memilih bidang keempat untuk menampilkan nama VM dalam output.

az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020

tsv Format output sering digunakan saat menetapkan nilai ke variabel. Contoh ini mendapatkan ID langganan aktif dan menyimpannya ke dalam variabel untuk digunakan dalam skrip.

# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"

Untuk contoh parameter lainnya, lihat Cara mengkueri --query output perintah Azure CLI.

Format output tidak ada

Beberapa informasi output perintah Azure CLI yang harus Anda lindungi. Berikut adalah empat contoh:

  • kata sandi
  • string koneksi
  • secrets
  • kunci

Untuk melindungi rahasia dan kunci saat menggunakan perintah Azure CLI, pilih salah satu opsi berikut:

Opsi Keuntungan Gunakan huruf besar
--output none format output Menjaga agar informasi sensitif tidak ditampilkan di konsol Anda. Jika perintah gagal, Anda masih akan menerima pesan kesalahan. 1. Gunakan ketika output perintah dapat diambil di lain waktu.
2. Gunakan ketika Anda tidak perlu output.
3. Pilihan umum ketika identitas terkelola atau perwakilan layanan digunakan untuk mengelola sumber daya Azure.
parameter --query Menyimpan output dalam variabel. 1. Gunakan ketika output perintah tidak dapat diambil di lain waktu.
2. Gunakan saat Anda perlu menggunakan nilai output perintah dalam skrip.

Menggunakan none dan mengambil informasi keamanan di lain waktu

Beberapa rahasia Azure dapat diambil di lain waktu. Contoh yang baik adalah rahasia yang disimpan di Azure Key Vault. Dalam contoh ini, buat rahasia Azure Key Vault menggunakan az keyvault secret set dengan --output none opsi . Anda dapat mengambil rahasia nanti menggunakan perintah az keyvault secret show .

az keyvault secret set --name MySecretName \
                       --vault-name MyKeyVaultName \
                       --value MySecretValue\
                       --output none

Menggunakan --query dan mengembalikan informasi keamanan ke variabel

Penggunaan --query untuk menyimpan output dalam variabel secara teknis bukan format output. Ini adalah solusi untuk melindungi rahasia, dan merupakan alternatif untuk menggunakan --output none. Misalnya, saat Anda mengatur ulang kredensial perwakilan layanan, kata sandi tidak dapat diambil lagi.

Atur ulang kredensial perwakilan layanan yang mengembalikan output dalam format json default:

# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json

Output konsol memperlihatkan kata sandi baru di konsol.

{
  "appId": "myServicePrincipalID",
  "password": "myServicePrincipalNewPassword",
  "tenant": "myTenantID"
}

Solusi yang lebih baik adalah mengembalikan informasi sensitif ke variabel.

# Bash Script
# reset service principal credentials returning results to a variable
myNewPassword=$(az ad sp credential reset --id myServicePrincipalID --query password --output tsv)

# Display the new password (remove this line in production for security)
echo "New password: $myNewPassword"

Untuk contoh selengkapnya tentang menyimpan output ke variabel, lihat Menggunakan Azure CLI dengan sukses - meneruskan nilai ke perintah lain. Untuk mempelajari selengkapnya tentang --query sintaks parameter, lihat Cara mengkueri output perintah Azure CLI.

Menetapkan format output default

Perintah Azure CLI menyediakan output yang dapat dikontrol dengan dua cara:

Kontrol output Keuntungan Bagaimana
Pengaturan global Pilih nilai output default yang paling sering Anda gunakan sehingga Anda tidak perlu terus memberikan --output parameter untuk setiap perintah referensi. Tentukan format output default menggunakan az config set.
Parameter perintah Tentukan output pada tingkat perintah dan berikan fleksibilitas maksimum skrip Anda. Anda mengontrol output konsol dan input variabel untuk setiap perintah referensi. Ambil alih pengaturan default menggunakan parameter perintah --output referensi.

Output default untuk Azure CLI adalah json. Atur output default ke none saat output konsol tidak diperlukan.

az config set core.output=none

Anda dapat menimpa output default dari perintah referensi Azure CLI apa pun dengan menggunakan --output parameter . Berikut adalah skrip perintah yang mengubah dan menguji output perintah:

# set your default output to table
az config set core.output=table

# show your active subscription in table format
# notice how only a subset of properties are returned in the table
az account show

# override your table default and show your active subscription in jsonc format
az account show --output jsonc

# reset your default output to json
az config set core.output=json

Lihat juga