Bagikan melalui


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.