Penyebaran grup sumber daya dengan file Bicep

Artikel ini menjelaskan cara mengatur cakupan dengan Bicep ketika menyebarkan je grup sumber daya.

Sumber daya yang didukung

Sebagian besar sumber daya dapat disebarkan ke grup sumber daya. Untuk daftar sumber daya yang tersedia, lihat Referensi templat ARM.

Mengatur cakupan

Secara default, file Bicep dicakupkan ke grup sumber daya. Jika Anda ingin secara eksplisit mengatur cakupan, gunakan:

targetScope = 'resourceGroup'

Tetapi, pengaturan cakupan target ke grup sumber daya tidak diperlukan karena cakupan tersebut digunakan secara default.

Perintah penyebaran

Untuk menyebarkan ke grup sumber daya, gunakan perintah penyebaran grup sumber daya.

Untuk Azure CLI, gunakan az deployment group create. Contoh berikut menyebarkan templat untuk membuat grup sumber daya. Grup sumber daya yang Anda tentukan dalam parameter --resource-group adalah grup sumber daya target.

az deployment group create \
  --name demoRGDeployment \
  --resource-group ExampleGroup \
  --template-file main.bicep \
  --parameters storageAccountType=Standard_GRS

Untuk informasi selengkapnya tentang perintah penyebaran dan opsi untuk menyebarkan templat ARM, lihat:

Cakupan penyebaran

Saat menyebarkan ke grup sumber daya, Anda bisa menggunakan sumber daya untuk:

  • grup sumber daya target untuk operasi penyebaran
  • grup sumber daya dalam langganan atau langganan lainnya
  • langganan apa pun di penyewa
  • penyewa untuk grup sumber daya

Sumber daya ekstensi dapat dicakup ke target yang berbeda dari target penyebaran.

Pengguna yang menyebarkan templat harus memiliki akses ke cakupan yang ditentukan.

Bagian ini memperlihatkan cara menentukan cakupan yang berbeda. Anda dapat menggabungkan cakupan yang berbeda ini dalam templat tunggal.

Cakupan untuk menargetkan grup sumber daya

Untuk menyebarkan sumber daya ke grup sumber daya target, tambahkan sumber daya tersebut ke file Bicep.

// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  ...
}

Untuk templat contoh, lihat Menerapkan ke grup sumber daya target.

Mencakupkan ke grup sumber daya yang berbeda

Untuk menyebarkan ke grup sumber daya yang bukan merupakan grup sumber daya target, tambahkan modul. Gunakan fungsi resourceGroup untuk mengatur properti scope untuk modul tersebut.

Jika grup sumber daya berada dalam langganan yang berbeda, sediakan ID langganan dan nama grup sumber daya. Jika grup sumber daya berada dalam langganan yang sama dengan penyebaran saat ini, sediakan hanya nama grup sumber daya. Jika Anda tidak menentukan langganan dalam fungsi resourceGroup, langganan saat ini digunakan.

Contoh berikut menunjukkan modul yang menargetkan grup sumber daya dalam langganan yang berbeda.

param otherResourceGroup string
param otherSubscriptionID string

// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
  name: 'otherSubAndRG'
  scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}

Contoh berikutnya menunjukkan modul yang menargetkan grup sumber daya dalam langganan yang sama.

param otherResourceGroup string

// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
  name: 'otherRG'
  scope: resourceGroup(otherResourceGroup)
}

Untuk templat contoh, lihat Menerapkan ke beberapa grup sumber daya.

Cakupan ke langganan

Untuk menyebarkan sumber daya ke langganan, tambahkan modul. Gunakan fungsi langganan untuk mengatur properti scope.

Untuk menyebarkan langganan saat ini, gunakan fungsi langganan tanpa parameter.


// module deployed at subscription level
module exampleModule 'module.bicep' = {
  name: 'deployToSub'
  scope: subscription()
}

Untuk menyebarkan langganan yang berbeda, tentukan ID langganan tersebut sebagai parameter dalam fungsi langganan.

param otherSubscriptionID string

// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
  name: 'deployToSub'
  scope: subscription(otherSubscriptionID)
}

Untuk contoh templat, lihat Membuat grup sumber daya dengan Bicep.

Cakupan ke penyewa

Untuk membuat sumber daya di penyewa, tambahkan modul. Gunakan fungsi penyewa untuk mengatur properti scope.

Pengguna yang menyebarkan templat harus memiliki akses yang diperlukan untuk disebarkan di penyewa.

Contoh berikut mencakup modul yang disebarkan ke penyewa.

// module deployed at tenant level
module exampleModule 'module.bicep' = {
  name: 'deployToTenant'
  scope: tenant()
}

Alih-alih menggunakan modul, Anda dapat mengatur cakupan ke tenant() untuk beberapa jenis sumber daya. Contoh berikut menyebarkan grup manajemen di penyewa.

param mgName string = 'mg-${uniqueString(newGuid())}'

// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2020-05-01' = {
  scope: tenant()
  name: mgName
  properties: {}
}

output output string = mgName

Untuk informasi selengkapnya, lihat Grup manajemen.

Menyebarkan untuk menargetkan grup sumber daya

Untuk menggunakan sumber daya dalam grup sumber daya target, tentukan sumber daya resources tersebut di bagian templat. Templat berikut membuat akun penyimpanan di grup sumber daya yang ditentukan dalam operasi penyebaran.

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Menyebarkan ke beberapa grup sumber daya

Anda dapat menyebarkan ke lebih dari satu grup sumber daya dalam satu file Bicep.

Catatan

Anda dapat menyebarkan ke 800 grup sumber daya dalam satu penyebaran. Biasanya, batasan ini berarti Anda dapat menyebarkan ke satu grup sumber daya yang ditentukan untuk templat induk, dan hingga 799 grup sumber daya dalam penyebaran yang berlapis atau ditautkan. Namun, jika templat induk Anda hanya berisi templat yang ditumpuk atau ditautkan dan tidak menyebarkan sumber daya apa pun, maka Anda dapat menyertakan hingga 800 grup sumber daya dalam penyebaran yang berlapis atau ditautkan.

Contoh berikut menggunakan dua akun penyimpanan. Akun penyimpanan pertama disebarkan ke grup sumber daya yang ditentukan dalam operasi penyebaran. Akun penyimpanan kedua disebarkan ke grup sumber daya yang ditentukan dalam parameter secondResourceGroup dan secondSubscriptionID.

@maxLength(11)
param storagePrefix string

param firstStorageLocation string = resourceGroup().location

param secondResourceGroup string
param secondSubscriptionID string = ''
param secondStorageLocation string

var firstStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
var secondStorageName = '${storagePrefix}${uniqueString(secondSubscriptionID, secondResourceGroup)}'

module firstStorageAcct 'storage.bicep' = {
  name: 'storageModule1'
  params: {
    storageLocation: firstStorageLocation
    storageName: firstStorageName
  }
}

module secondStorageAcct 'storage.bicep' = {
  name: 'storageModule2'
  scope: resourceGroup(secondSubscriptionID, secondResourceGroup)
  params: {
    storageLocation: secondStorageLocation
    storageName: secondStorageName
  }
}

Kedua modul menggunakan file Bicep yang sama bernama storage.bicep.

param storageLocation string
param storageName string

resource storageAcct 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: storageName
  location: storageLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  properties: {}
}

Buat grup sumber daya

Untuk informasi tentang membuat grup sumber daya, lihat Membuat grup sumber daya dengan Bicep.

Langkah berikutnya

Untuk mempelajari tentang cakupan lain, lihat: