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