Bicep dosyalarıyla kaynak grubu dağıtımları

Bu makalede, bir kaynak grubuna dağıtım yapmak için Bicep ile kapsamı ayarlama açıklanmıştır.

Desteklenen kaynaklar

Kaynakların çoğu bir kaynak grubuna dağıtılabilir. Kullanılabilir kaynakların listesi için bkz. ARM şablonu başvurusu.

Kapsamı ayarlama

Varsayılan olarak, bicep dosyasının kapsamı kaynak grubuyla birlikte kullanılır. Kapsamı açıkça ayarlamak için şunları kullanın:

targetScope = 'resourceGroup'

Ancak, hedef kapsamı kaynak grubu olarak ayarlama gereksizdir çünkü bu kapsam varsayılan olarak kullanılır.

Dağıtım komutları

Bir kaynak grubuna dağıtmak için kaynak grubu dağıtım komutlarını kullanın.

Azure CLI için az deployment group create kullanın. Aşağıdaki örnek, kaynak grubu oluşturmak için bir şablon dağıtır:

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

ARM şablonlarını dağıtmaya ilişkin dağıtım komutları ve seçenekleri hakkında daha ayrıntılı bilgi için bkz:

Dağıtım kapsamları

Bir kaynak grubuna dağıtım yapmak için kaynakları şu kaynaklara dağıtın:

  • dağıtım işlemi için hedef kaynak grubu
  • aynı abonelikte veya diğer aboneliklerde yer alan diğer kaynak grupları
  • kiracıda herhangi bir abonelik
  • kaynak grubunun kiracısı

Uzantı kaynağının kapsamı, dağıtım hedefinden farklı bir hedef olarak kapsamlandı.

Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olması gerekir.

Bu bölümde, farklı kapsamların nasıl belirt İşlenli olduğu gösterir. Bu farklı kapsamları tek bir şablonda birleştirebilirsiniz.

Hedef kaynak grubunun kapsamı

Kaynakları hedef kaynak grubuna dağıtmak için bu kaynakları Bicep dosyasına ekleyin.

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

Örnek bir şablon için bkz. Hedef kaynak grubuna dağıtma.

Kapsam olarak farklı kaynak grubu

Kaynakları hedef kaynak grubu olmayan bir kaynak grubuna dağıtmak için bir modül ekleyin. Bu modülün özelliğini ayarlamak için resourceGroup scope işlevini kullanın.

Kaynak grubu farklı bir abonelikte ise abonelik kimliğini ve kaynak grubunun adını girin. Kaynak grubu geçerli dağıtımla aynı abonelikte ise, yalnızca kaynak grubunun adını girin. resourceGroup işlevinde bir abonelik belirtmezsenizgeçerli abonelik kullanılır.

Aşağıdaki örnekte, farklı bir abonelikte yer alan bir kaynak grubunu hedef alan bir modül yer almaktadır.

param otherResourceGroup string
param otherSubscriptionID string

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

Sonraki örnekte aynı abonelikte yer alan bir kaynak grubunu hedef alan bir modül yer almaktadır.

param otherResourceGroup string

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

Örnek bir şablon için bkz. Birden çok kaynak grubu dağıtma.

Kapsamdan aboneliğe

Kaynakları aboneliğe dağıtmak için bir modül ekleyin. Özelliğini ayarlamak için subscription işlevini scope kullanın.

Geçerli aboneliğe dağıtmak için subscription işlevini parametresiz kullanın.


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

Farklı bir aboneliğe dağıtmak için abonelik işlevinde parametre olarak abonelik kimliğini belirtin.

param otherSubscriptionID string

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

Örnek bir şablon için bkz. Kaynak grubu oluşturma.

Kiracı kapsamı

Kiracıda kaynak oluşturmak için bir modül ekleyin. Özelliğini ayarlamak için tenant işlevini scope kullanın.

Şablonu dağıtan kullanıcının kiracıda dağıtmak için gerekli erişimine sahip olması gerekir.

Aşağıdaki örnek, kiracıya dağıtılan bir modülü içerir.

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

Bir modül kullanmak yerine, bazı kaynak türleri için tenant() kapsamı olarak ayarlayın. Aşağıdaki örnek, kiracıda bir yönetim grubu dağıtır.

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

Daha fazla bilgi için bkz. Yönetim grubu.

Hedef kaynak grubuna dağıtma

Hedef kaynak grubunda kaynakları dağıtmak için bu kaynakları resources şablonun bölümünde tanımlayın. Aşağıdaki şablon, dağıtım işleminde belirtilen kaynak grubunda bir depolama hesabı oluşturur.

@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

Birden çok kaynak grubu dağıtma

Tek bir Bicep dosyasında birden fazla kaynak grubuna dağıtabilirsiniz.

Not

Tek bir dağıtımda 800 kaynak grubu dağıtabilirsiniz. Bu sınırlama genellikle üst şablon için belirtilen bir kaynak grubuna ve iç içe geçmiş veya bağlı dağıtımlarda en fazla 799 kaynak grubuna dağıtabilirsiniz. Ancak, üst şablonunuz yalnızca iç içe veya bağlı şablonlar içeriyorsa ve kendisi herhangi bir kaynak dağıtmıyorsa, iç içe veya bağlı dağıtımlara en fazla 800 kaynak grubu dahil edersiniz.

Aşağıdaki örnek iki depolama hesabı dağıtır. İlk depolama hesabı, dağıtım işlemi sırasında belirtilen kaynak grubuna dağıtılır. İkinci depolama hesabı, ve parametrelerinde belirtilen kaynak grubuna secondResourceGroup secondSubscriptionID dağıtılır:

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

Her iki modül de storage.bicep adlı aynı Bicep dosyasını kullanır.

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: {}
}

Kaynak grubu oluşturma

Kaynak grubu dağıtımından aboneliğin düzeyine geçiş yapmak ve bir kaynak grubu oluşturmaktır. Aşağıdaki şablon hedef kaynak grubuna bir depolama hesabı dağıtır ve belirtilen abonelikte yeni bir kaynak grubu oluşturur.

@maxLength(11)
param storagePrefix string

param firstStorageLocation string = resourceGroup().location

param secondResourceGroup string
param secondSubscriptionID string = ''
param secondLocation string

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

// resource deployed to target resource group
module firstStorageAcct 'storage2.bicep' = {
  name: 'storageModule1'
  params: {
    storageLocation: firstStorageLocation
    storageName: firstStorageName
  }
}

// module deployed to subscription
module newRG 'resourceGroup.bicep' = {
  name: 'newResourceGroup'
  scope: subscription(secondSubscriptionID)
  params: {
    resourceGroupName: secondResourceGroup
    resourceGroupLocation: secondLocation
  }
}

Yukarıdaki örnek, yeni kaynak grubunu oluşturan modül için aşağıdaki Bicep dosyasını kullanır.

targetScope='subscription'

param resourceGroupName string
param resourceGroupLocation string

resource newRG 'Microsoft.Resources/resourceGroups@2021-01-01' = {
  name: resourceGroupName
  location: resourceGroupLocation
}

Sonraki adımlar

Diğer kapsamlar hakkında bilgi edinmek için bkz: