Bagikan melalui


Mengisi variabel untuk digunakan dalam skrip Azure CLI

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 pengembangan, tahap, dan ID produksi.

Anda dapat menggunakan variabel di Azure CLI untuk melakukan operasi build dan destroy dalam skala besar.

Prasyarat

  • Anda memiliki akses ke grup sumber daya dan akun penyimpanan dengan izin tingkat akun penyimpanan reader atau lebih tinggi.

Mendapatkan output perintah menggunakan kueri JMESPath

Dapatkan informasi tentang sumber daya Azure yang sudah ada menggunakan parameter --query dari perintah show. Kueri JMESPath dijalankan, dan satu atau beberapa nilai properti sumber daya Azure dikembalikan.

Petunjuk / Saran

Sintaks untuk --query peka terhadap huruf besar/kecil dan bergantung pada 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

Kecuali jika parameter --output ditentukan, contoh ini bergantung pada konfigurasi output default json yang diatur dalam 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 di 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

Untuk mengembalikan properti individual dalam array (daftar), tentukan daftar properti akun penyimpanan yang dibatasi koma.

az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
                        --name <msdocssa000000000> \
                        --query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"

Keluaran 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

Keluaran 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 dan rahasia baru, mengembalikan output perintah 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 Key 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 pengembangan" untuk tutorial orientasi. 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 berikut 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 menerima kesalahan "perintah jq tidak ditemukan"? Kesalahan ini terjadi karena skrip 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 VM Azure 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.

Subyek 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.
Mengajukan 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 Berikutnya

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.