Deklarasi sumber daya dalam Bicep

Artikel ini menguraikan sintaks yang Anda gunakan untuk menambahkan sumber daya ke file Bisep Anda.

Deklarasi

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.

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

Jadi, deklarasi untuk akun penyimpanan dapat dimulai dengan:

resource stg 'Microsoft.Storage/storageAccounts@2021-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.

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>]
  }
}

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@2019-06-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@2019-06-01' = {
  name: storageAccountName
  ...
}

Lokasi

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@2019-06-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@2019-06-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

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 yang dikelola untuk sumber daya Azure

Layanan yang 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@2020-09-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@2020-06-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@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Langkah berikutnya