Aracılığıyla paylaş


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

Bu makalede, bir kaynak grubuna dağıtılırken Bicep ile kapsamın nasıl ayarlanacağı açıklanı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ı ayarla

Varsayılan olarak, bir Bicep dosyasının kapsamı kaynak grubu olarak belirlenmiştir. Kapsamı açıkça ayarlamak istiyorsanız şunu kullanın:

targetScope = 'resourceGroup'

Ancak bu kapsam varsayılan olarak kullanıldığından hedef kapsamı kaynak grubuna ayarlamak gereksizdir.

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 komutunu kullanın. Aşağıdaki örnek, kaynak grubu oluşturmak için bir şablon dağıtır. parametresinde --resource-group belirttiğiniz kaynak grubu hedef kaynak grubudur.

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

ARM şablonlarını dağıtmaya yönelik 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 yaparken, kaynakları şu kaynaklara dağıtabilirsiniz:

  • dağıtım işlemi için hedef kaynak grubu
  • aynı abonelikteki veya diğer aboneliklerdeki diğer kaynak grupları
  • kiracıdaki herhangi bir abonelik
  • kaynak grubunun kiracısı

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

Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olmalıdır.

Bu bölümde farklı kapsamların nasıl belirtileceğini gösterilmektedir. Bu farklı kapsamları tek bir şablonda birleştirebilirsiniz.

Hedef kaynak grubuna 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.

Farklı kaynak grubunun kapsamı

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

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

Aşağıdaki örnekte farklı bir abonelikteki kaynak grubunu hedefleyen bir modül gösterilmektedir.

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ı abonelikteki bir kaynak grubunu hedefleyen bir modül gösterilmektedir.

param otherResourceGroup string

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

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

Kapsam-abonelik

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

Geçerli aboneliğe dağıtmak için parametresiz abonelik işlevini 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 bu abonelik kimliğini parametre olarak 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 . Bicep ile kaynak grubu oluşturma.

Kapsamı kiracıya

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

Şablonu dağıtan kullanıcının kiracıda dağıtmak için gerekli erişime 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()
}

Modül kullanmak yerine, bazı kaynak türleri için kapsamı tenant() olarak ayarlayabilirsiniz. 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

Kaynakları hedef kaynak grubuna dağıtmak için bu kaynakları şablonun resources 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 grubuna dağıtma

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

Not

Tek bir dağıtımda 800 kaynak grubuna dağıtabilirsiniz. Bu sınırlama genellikle üst şablon için belirtilen bir kaynak grubuna ve iç içe veya bağlı dağıtımlarda en fazla 799 kaynak grubuna dağıtım yapabileceğiniz anlamına gelir. Ancak, üst şablonunuz yalnızca iç içe veya bağlantılı şablonlar içeriyorsa ve kendisi herhangi bir kaynak dağıtmıyorsa, iç içe veya bağlantılı dağıtımlara en fazla 800 kaynak grubu ekleyebilirsiniz.

Aşağıdaki örnekte iki depolama hesabı dağıtılır. İlk depolama hesabı, dağıtım işleminde belirtilen kaynak grubuna dağıtılır. İkinci depolama hesabı ve secondSubscriptionID parametrelerinde belirtilen kaynak grubuna secondResourceGroup 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ştur

Kaynak grupları oluşturma hakkında bilgi için bkz . Bicep ile kaynak grubu oluşturma.

Sonraki adımlar

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