Bagikan melalui


Deklarasi sumber daya dalam Bicep

Artikel ini menguraikan sintaks yang Anda gunakan untuk menambahkan sumber daya ke file Bisep Anda. Anda dibatasi hingga 800 sumber daya dalam file Bicep. Untuk informasi selengkapnya, lihat Batas templat.

Menentukan sumber daya

Tambahkan deklarasi sumber daya dengan menggunakan kata kunci resource. Anda mengatur nama simbolis untuk sumber daya. Nama simbolis tidak sama dengan nama sumber daya. Anda menggunakan nama simbolis untuk mereferensikan sumber daya di bagian lain file Bicep Anda.

@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

Jadi, deklarasi untuk akun penyimpanan dapat dimulai dengan:

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  ...
}

Nama simbolis peka huruf besar/kecil. Hanya boleh berisi huruf, angka, dan garis bawah (_). Tidak boleh dimulai dengan angka. Sumber daya tidak dapat memiliki nama yang sama dengan parameter, variabel, atau modul.

Untuk tipe dan versi sumber daya yang tersedia, lihat Referensi sumber daya Bisep. Bicep tidak mendukung apiProfile, yang tersedia di templat Azure Resource Manager (templat ARM) JSON. Anda juga dapat menentukan sumber daya penyedia ekstensibilitas Bicep. Untuk informasi selengkapnya, lihat Penyedia Kubernetes ekstensibilitas Bicep.

Untuk menyebarkan sumber daya secara kondisional, guakan sintaksis if. Untuk mengetahui informasi selengkapnya, lihat Pnyebaran bersyarat dalam Bisep.

resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
  <resource-properties>
}

Untuk menyebarkan lebih dari satu instans sumber daya, gunakan for. Anda dapat menggunakan dekorator batchSize untuk menentukan apakah instans digunakan secara serial atau paralel. Untuk informasi selengkapnya, lihat loop Iterasi di Bisep.

@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
  <properties-to-repeat>
}]

Anda juga dapat menggunakan sintaksis for pada properti sumber daya untuk membuat array.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  properties: {
    <array-property>: [for <item> in <collection>: <value-to-repeat>]
  }
}

Menggunakan dekorator

Dekorator ditulis dalam format @expression dan ditempatkan di atas deklarasi sumber daya. Tabel berikut ini memperlihatkan dekorator yang tersedia untuk sumber daya.

Dekorator Argumen Deskripsi
batchSize tidak ada Siapkan instans untuk disebarkan secara berurutan.
description string Berikan deskripsi untuk sumber daya.

Dekotaror berada dalam namespace layanan sys. Jika Anda perlu membedakan suatu dekorator dari item lainnya dengan nama yang sama, awali dekorator dengan sys. Contohnya, jika file Bicep Anda mencakup parameter bernama description, Anda harus menambahkan namespace layanan sys saat menggunakan dekorator deskripsi.

BatchSize

Anda hanya dapat menerapkan @batchSize() ke definisi sumber daya atau modul yang menggunakan for ekspresi.

Secara default, sumber daya disebarkan secara paralel. Saat Anda menambahkan dekorator batchSize(int), Anda menerapkan instans secara serial.

@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

Untuk informasi selengkapnya, lihat Menyebarkan dalam batch.

Deskripsi

Untuk menambahkan penjelasan, tambahkan deskripsi ke deklarasi sumber daya. Contohnya:

@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

Teks berformat markdown dapat digunakan untuk teks deskripsi.

Nama sumber daya

Setiap sumber daya memiliki nama. Saat mengatur nama sumber daya, perhatikan aturan dan batasan untuk nama sumber daya.

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  ...
}

Biasanya, Anda akan mengatur nama ke parameter sehingga Anda dapat meneruskan nilai yang berbeda selama penyebaran.

@minLength(3)
@maxLength(24)
param storageAccountName string

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageAccountName
  ...
}

Lokasi sumber daya

Banyak sumber daya membutuhkan lokasi. Anda dapat menentukan apakah sumber daya memerlukan lokasi baik melalui intellisense atau referensi template. Contoh berikut menambahkan parameter lokasi yang digunakan untuk akun penyimpanan.

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: 'eastus'
  ...
}

Biasanya, Anda akan mengatur lokasi ke parameter sehingga Anda dapat menyebarkan ke lokasi yang berbeda.

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: location
  ...
}

Jenis sumber daya yang berbeda didukung di lokasi yang berbeda. Untuk mendapatkan lokasi yang didukung untuk layanan Azure, Lihat Produk tersedia menurut wilayah. Untuk mendapatkan lokasi yang didukung untuk jenis sumber daya, gunakan Azure PowerShell atau Azure CLI.

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
  | Where-Object ResourceTypeName -eq batchAccounts).Locations

Tag sumber daya

Gunakan untuk menerapkan tag ke sumber daya selama penyebaran. Tag membantu Anda menata sumber daya secara logis. Untuk contoh berbagai cara Anda dapat menentukan tag, lihat tag templat ARM.

Identitas terkelola untuk sumber daya

Beberapa sumber daya mendukung identitas terkelola untuk sumber daya Azure. Sumber daya tersebut memiliki objek identitas pada tingkat akar deklarasi sumber daya.

Anda dapat menggunakan identitas yang ditetapkan sistem atau pengguna.

Contoh berikut menunjukkan cara mengonfigurasi identitas yang ditetapkan sistem untuk kluster Azure Kubernetes Service.

resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
  name: clusterName
  location: location
  tags: tags
  identity: {
    type: 'SystemAssigned'
  }

Contoh berikutnya menunjukkan cara mengonfigurasi identitas yang ditetapkan pengguna untuk mesin virtual.

param userAssignedIdentity string

resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

Properti spesifik sumber daya

Properti sebelumnya umum untuk sebagian besar jenis sumber daya. Setelah mengatur nilai tersebut, Anda perlu mengatur properti yang spesifik untuk tipe sumber daya yang Anda sebarkan.

Gunakan referensi intellisense atau sumber daya Bicep untuk menentukan properti mana yang tersedia dan mana yang diperlukan. Contoh berikut menetapkan properti yang tersisa untuk akun penyimpanan.

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Langkah berikutnya