Menggunakan variabel dan perulangan output

Selesai

Anda telah mempelajari cara menggunakan perulangan salin untuk menyebarkan beberapa instans sumber daya dan cara mengatur properti sumber daya dengan menggunakan perulangan. Di Bicep, Anda juga dapat menggunakan perulangan dengan variabel dan output.

Untuk perusahaan mainan boneka Anda, Anda perlu menyebarkan jaringan virtual dengan konfigurasi subnet yang sama di beberapa kawasan Azure. Anda berharap bahwa Anda harus menambahkan subnet tambahan ke jaringan virtual Anda di masa depan, sehingga Anda ingin memiliki fleksibilitas dalam templat Bicep Anda untuk memodifikasi konfigurasi subnet.

Karena Anda juga akan menyebarkan beberapa akun penyimpanan di lingkungan Azure, Anda harus menyediakan titik akhir untuk setiap akun penyimpanan sebagai output agar alur penyebaran Anda dapat menggunakan informasi ini.

Dalam unit ini, Anda akan mempelajari cara menggunakan perulangan dengan variabel dan output.

Catatan

Perintah dalam unit ini ditampilkan untuk mengilustrasikan konsep. Jangan jalankan perintah terlebih dahulu. Anda akan segera mempraktikkan apa yang Anda pelajari di sini.

Perulangan variabel

Dengan menggunakan perulangan variabel, Anda dapat membuat array, yang kemudian dapat Anda gunakan melalui file Bicep Anda. Seperti yang Anda lakukan dengan perulangan lain, Anda menggunakan kata kunci for untuk membuat perulangan variabel:

var items = [for i in range(1, 5): 'item${i}']

Contoh sebelumnya membuat array yang berisi nilai item1, item2, item3, item4, dan item5.

Anda biasanya akan menggunakan perulangan variabel untuk membuat objek yang lebih kompleks yang kemudian dapat Anda gunakan dalam deklarasi sumber daya. Berikut cara menggunakan perulangan variabel untuk membuat properti subnets:

param addressPrefix string = '10.10.0.0/16'
param subnets array = [
  {
    name: 'frontend'
    ipAddressRange: '10.10.0.0/24'
  }
  {
    name: 'backend'
    ipAddressRange: '10.10.1.0/24'
  }
]

var subnetsProperty = [for subnet in subnets: {
  name: subnet.name
  properties: {
    addressPrefix: subnet.ipAddressRange
  }
}]

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2021-08-01' = {
  name: 'teddybear'
  location: resourceGroup().location
  properties:{
    addressSpace:{
      addressPrefixes:[
        addressPrefix
      ]
    }
    subnets: subnetsProperty
  }
}

Contoh ini menggambarkan penggunaan yang efektif untuk perulangan variabel: mengubah parameter yang memiliki nilai sederhana dan mudah dipahami menjadi objek yang lebih kompleks yang sesuai dengan definisi sumber daya Azure yang diperlukan. Anda dapat menggunakan perulangan variabel untuk mengaktifkan parameter untuk menentukan hanya informasi kunci yang akan berubah untuk setiap item dalam daftar. Anda kemudian dapat menggunakan ekspresi Bisep atau nilai default untuk mengatur properti lain yang diperlukan untuk sumber daya.

Perulangan output

Anda dapat menggunakan output Bicep untuk memberikan informasi dari penyebaran Anda kembali ke pengguna atau alat yang memulai penyebaran. Perulangan output memberi Anda fleksibilitas dan kekuatan perulangan dalam output Anda.

Seperti yang Anda lakukan dengan perulangan lain, gunakan for kata kunci untuk menentukan perulangan output:

var items = [
  'item1'
  'item2'
  'item3'
  'item4'
  'item5'
]

output outputItems array = [for i in range(0, length(items)): items[i]]

Anda biasanya akan menggunakan perulangan output bersama dengan perulangan lain dalam templat Anda. Misalnya, mari kita lihat file Bicep yang menyebarkan sekumpulan akun penyimpanan ke kawasan Azure yang ditentukan oleh parameter locations:

param locations array = [
  'westeurope'
  'eastus2'
  'eastasia'
]

resource storageAccounts 'Microsoft.Storage/storageAccounts@2021-09-01' = [for location in locations: {
  name: 'toy${uniqueString(resourceGroup().id, location)}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}]

Anda mungkin perlu mengembalikan informasi tentang setiap akun penyimpanan yang telah Anda buat, seperti namanya dan titik akhir yang dapat digunakan untuk mengaksesnya. Dengan menggunakan perulangan output, Anda dapat mengambil informasi ini dalam file Bicep Anda.

Catatan

Saat ini, Bicep tidak mendukung sumber daya referensi langsung yang telah dibuat dalam perulangan dari dalam perulangan output. Artinya, Anda perlu menggunakan pengindeks array untuk mengakses sumber daya, seperti yang ditunjukkan pada contoh berikutnya.

output storageEndpoints array = [for i in range(0, length(locations)): {
  name: storageAccounts[i].name
  location: storageAccounts[i].location
  blobEndpoint: storageAccounts[i].properties.primaryEndpoints.blob
  fileEndpoint: storageAccounts[i].properties.primaryEndpoints.file
}]

Perhatian

Jangan gunakan output untuk mengembalikan rahasia, seperti kunci akses atau kata sandi. Output dicatat dan tidak dirancang untuk menangani data yang aman.