Mengisi variabel untuk digunakan dalam skrip
Dalam langkah tutorial ini, pelajari cara bekerja dengan variabel:
- Jalankan perintah Azure CLI dan simpan output dalam variabel.
- Baca file JSON lokal dan simpan nilai properti dalam variabel.
Beberapa kasus penggunaan umum untuk variabel adalah:
- Dapatkan informasi tentang sumber daya Azure yang sudah ada, seperti ID sumber daya.
- Dapatkan output dari perintah Azure CLI, seperti kata sandi.
- Dapatkan objek JSON untuk informasi lingkungan, seperti ID pengembangan, tahapan, dan produksi.
Variabel kemudian dapat digunakan di Azure CLI untuk melakukan build dan menghancurkan pekerjaan dalam skala besar.
Prasyarat
- Anda memiliki akses ke grup sumber daya dan akun penyimpanan dengan
reader
izin atau lebih tinggi di tingkat akun penyimpanan.
Mendapatkan output perintah menggunakan kueri JMESPath
Dapatkan informasi tentang sumber daya Azure yang sudah ada menggunakan --query
parameter show
perintah . Kueri JMESPath dijalankan dan satu atau beberapa nilai properti sumber daya Azure dikembalikan.
Tip
Sintaks untuk --query
peka huruf besar/kecil dan khusus lingkungan. Jika Anda menerima hasil kosong, periksa kapitalisasi Anda. Hindari mengutip kesalahan dengan menerapkan aturan yang Anda pelajari di Pelajari perbedaan sintaks Azure CLI di Bash, PowerShell, dan Cmd
--output
Kecuali parameter ditentukan, contoh ini mengandalkan json
konfigurasi output default yang ditetapkan di Menyiapkan lingkungan Anda untuk Azure CLI
Mendapatkan properti kamus JSON dari sumber daya Azure
Menggunakan akun penyimpanan yang dibuat di Pelajari perbedaan sintaks Azure CLI di Bash, PowerShell, dan Cmd, dapatkan primaryEndpoints
akun penyimpanan baru Anda.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
Output kamus JSON konsol:
{
"blob": "https://msdocssa00000000.blob.core.windows.net/",
"dfs": "https://msdocssa00000000.dfs.core.windows.net/",
"file": "https://msdocssa00000000.file.core.windows.net/",
"internetEndpoints": null,
"microsoftEndpoints": null,
"queue": "https://msdocssa00000000.queue.core.windows.net/",
"table": "https://msdocssa00000000.table.core.windows.net/",
"web": "https://msdocssa00000000.z13.web.core.windows.net/"
}
Mendapatkan objek JSON individual
Tentukan daftar properti akun penyimpanan yang dibatasi koma untuk mengembalikan properti individual dalam array (daftar).
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
Output array JSON konsol:
[
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/msdocs-tutorial-rg-00000000/providers/Microsoft.Storage/storageAccounts/ msdocssa000000000",
"eastus",
"https://msdocssa000000000.blob.core.windows.net/",
"yyyy-mm-ddT19:11:56.399484+00:00"
]
Mengganti nama properti
Ganti nama properti menggunakan kurung kurawal ({}
) dan daftar yang dibatasi koma. Nama properti baru tidak boleh berisi spasi. Contoh ini mengembalikan output dalam table
format.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
--output table
Output tabel konsol. Huruf pertama dari setiap kolom dikapitalisasi dalam --output table
:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Memfilter hasil kueri
Gabungkan apa yang Anda pelajari tentang mengutip dengan apa yang baru saja Anda pelajari tentang --query
. Contoh-contoh ini menerapkan filter.
Di Bash, Anda tidak dapat memiliki spasi sebelum atau sesudah tanda sama dengan (=
). Anda dapat memilih untuk menggunakan tanda kutip di sekitar nilai variabel, jadi msdocs-tutorial-rg-00000000
dan "msdocs-tutorial-rg-00000000"
keduanya benar.
rgName="<msdocs-tutorial-rg-00000000>"
# Get a list of all Azure storage accounts that allow blob public access.
# Notice the backticks and escape characters needed for boolean values.
az storage account list --resource-group $rgName \
--query "[?allowBlobPublicAccess == \`true\`].name"
# Get a list of Azure storage accounts that were created in the last 30 days. Return the results as a table.
saDate=$(date +%F -d "-30days")
az storage account list --resource-group $rgName \
--query "[?creationTime >='$saDate'].{saName:name, createdTimeStamp:creationTime}" \
--output table
# Get a list of Azure storage accounts created in this tutorial
az storage account list --resource-group $rgName \
--query "[?contains(name, 'msdocs')].{saName:name, saKind:kind, saPrimaryLocation:primaryLocation, createdTimeStamp:creationTime}" \
--output table
Membuat output penyimpanan sumber daya Azure baru dalam variabel
Belajar menyimpan output perintah dalam variabel bermanfaat saat membuat sumber daya Azure yang menghasilkan rahasia yang harus dilindungi. Misalnya, saat Anda membuat perwakilan layanan, mengatur ulang kredensial, atau mendapatkan rahasia brankas kunci Azure, output perintah harus dilindungi.
Buat Azure Key Vault baru dan output perintah pengembalian rahasia ke variabel. Nama Azure Key Vault Anda harus unik secara global, sehingga $RANDOM
pengidentifikasi digunakan dalam contoh ini. Untuk aturan penamaan Azure Key Vault lainnya, lihat Kode kesalahan umum untuk Azure Key Vault.
Contoh-contoh ini digunakan echo
untuk memverifikasi nilai variabel karena ini adalah tutorial pengajaran. Jangan gunakan echo
untuk nilai rahasia dan kata sandi di lingkungan tingkat produksi.
# Set your variables.
let "randomIdentifier=$RANDOM*$RANDOM"
rgName="<msdocs-tutorial-rg-00000000>"
kvName="msdocs-kv-$randomIdentifier"
location="eastus"
# Set your default output to none
az config set core.output=none
# Create a new Azure Key Vault returning the Key Vault ID
myNewKeyVaultID=$(az keyvault create --name $kvName --resource-group $rgName --location $location --query id --output tsv)
echo "My new Azure Kev Vault ID is $myNewKeyVaultID"
# Wait about 1 minute for your Key Vault creation to complete.
# Create a new secret returning the secret ID
kvSecretName="<myKVSecretName>"
kvSecretValue="<myKVSecretValue>"
myNewSecretID=$(az keyvault secret set --vault-name $kvName --name $kvSecretName --value $kvSecretValue --query id --output tsv)
echo "My new secret ID is $myNewSecretID"
# Reset your default output to json
az config set core.output=json
Mendapatkan konten file JSON dan menyimpannya dalam variabel
Bagian berikutnya adalah "tugas stretch" untuk tutorial onboarding. Namun, untuk mengelola sumber daya Azure dalam lingkungan pengembangan, tahap dan produksi, Anda sering kali perlu membaca file konfigurasi.
Apakah Anda siap untuk meregangkan keterampilan Azure CLI Anda? Buat file JSON yang berisi JSON berikut, atau konten file pilihan Anda. Simpan file teks ke drive lokal Anda. Jika Anda bekerja di Azure Cloud Shell, gunakan upload/download files
ikon di bilah menu untuk menyimpan file teks di drive penyimpanan cloud Anda.
{
"environments": {
"dev": [
{
"id": "1",
"kv-secretName": "dev1SecretName",
"status": "inactive",
},
{
"id": "2",
"kv-secretName": "dev2SecretName",
"status": "active"
}
],
"stg": {
"id": "3",
"kv-secretName": "dev3SecretName"
},
"prod": {
"id": "4",
"kv-secretName": "dev4SecretName"
}
}
}
Simpan konten file JSON Anda dalam variabel untuk digunakan lebih lanjut dalam perintah Azure CLI Anda. Dalam contoh ini, ubah msdocs-tutorial.json
ke nama file Anda. Jangan simpan echo
perintah dalam skrip tingkat produksi karena output disimpan dalam file log Anda.
Skrip Bash ini diuji di Azure Cloud Shell dan bergantung pada bash jq yang harus diinstal di lingkungan Anda.
# Show the contents of a file in the console
fileName="msdocs-tutorial.json"
cat $fileName | jq
# Get a JSON dictionary object
stgKV=$(jq -r '.environments.stg."kv-secretName"' $fileName)
echo $stgKV
# Filter a JSON array
devKV=$(jq -r '.environments.dev[] | select(.status=="active") | ."kv-secretName"' $fileName)
echo $devKV
Apakah Anda baru saja menerima kesalahan "perintah jq tidak ditemukan"? Ini karena skrip ini tergantung pada perintah Bash jq . Instal jq di lingkungan Anda, atau jalankan skrip ini di Azure Cloud Shell.
Anda sekarang memiliki nama rahasia Azure Key Vault khusus lingkungan yang disimpan dalam variabel, dan Anda dapat menggunakannya untuk menyambungkan ke sumber daya Azure. Metode yang sama ini baik untuk alamat IP Azure VM dan string koneksi SQL Server saat Anda ingin menggunakan kembali skrip Azure CLI.
Dapatkan detail selengkapnya
Apakah Anda ingin detail lebih lanjut tentang salah satu subjek yang tercakup dalam langkah tutorial ini? Gunakan tautan dalam tabel ini untuk mempelajari selengkapnya.
Subjek | Pelajari lebih lanjut |
---|---|
Variabel | Lihat contoh tingkat lanjut di Menggunakan Azure CLI dengan sukses - Meneruskan nilai ke perintah lain |
Baca gambaran umum variabel yang baik dalam Cara menggunakan variabel dalam perintah Azure CLI. | |
Melakukan Permintaan | Temukan berbagai contoh dalam Cara mengkueri output perintah Azure CLI menggunakan kueri JMESPath. |
Lakukan penyelaman yang lebih dalam di Bash menggunakan --query di Learn untuk menggunakan Bash dengan Azure CLI. |
|
Brankas kunci Azure | Tentang Azure Key Vault |
Berikan akses ke kunci, sertifikat, dan rahasia Key Vault dengan kontrol akses berbasis peran Azure. | |
Kode kesalahan umum untuk Azure Key Vault | |
PowerShell | Tautan referensi: Get-content, Where-Object, Select-Object |
Langkah Selanjutnya
Sekarang setelah Anda memahami cara menggunakan variabel untuk menyimpan output perintah Azure CLI dan nilai properti JSON, lanjutkan ke langkah berikutnya untuk mempelajari cara menggunakan skrip untuk menghapus sumber daya Azure.