Share via


Hızlı Başlangıç: Bicep'te birden çok kaynak örneği oluşturma

Bicep'te birden çok kaynak örneği oluşturmak için farklı for söz dizimleri kullanmayı öğrenin. Bu makalede yalnızca birden çok kaynak örneği oluşturma gösterilse de modül, değişken, özellik veya çıkışın kopyalarını tanımlamak için aynı yöntemler kullanılabilir. Daha fazla bilgi edinmek için bkz . Bicep döngüleri.

Bu makalede aşağıdaki konular yer alır:

Önkoşullar

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Ortamınızı Bicep geliştirme için ayarlamak için bkz. Bicep araçlarını yükleme. Bu adımları tamamladıktan sonra Visual Studio Code ve Bicep uzantısına sahip olursunuz. Ayrıca en son Azure CLI veya en son Azure PowerShell modülüne de sahipsiniz.

Tek bir örnek oluşturma

Bu bölümde, depolama hesabı oluşturmak için bir Bicep dosyası tanımlayacak ve ardından Bicep dosyasını dağıtacaksınız. Sonraki bölümlerde farklı for söz dizimleri için Bicep örnekleri sağlanır. Bu örnekleri dağıtmak ve denemek için aynı dağıtım yöntemini kullanabilirsiniz. Dağıtımınız başarısız olursa, bu muhtemelen iki nedenden biridir:

  • Depolama hesabı adı çok uzun. Depolama hesabı adları 3 ile 24 karakter arasında olmalı ve yalnızca sayıyla küçük harf içermelidir.
  • Depolama hesabı adı benzersiz değil. Depolama hesabınızın adının Azure içinde benzersiz olması gerekir.

Aşağıdaki Bicep dosyası bir depolama hesabı tanımlar:

param rgLocation string = resourceGroup().location

resource createStorage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

Bicep dosyasını yerel olarak kaydedin ve ardından Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın:

resourceGroupName = "{provide-a-resource-group-name}"
templateFile="{provide-the-path-to-the-bicep-file}"

az group create --name $resourceGroupName --location eastus

az deployment group create --resource-group $resourceGroupName --template-file $templateFile

Tamsayı dizini kullanma

İki depolama hesabı oluşturmak için aşağıdaki örnekte dizin içeren bir for döngüsü kullanılır:

param rgLocation string = resourceGroup().location
param storageCount int = 2

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for i in range(0, storageCount): {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

output names array = [for i in range(0,storageCount) : {
  name: createStorages[i].name
} ]

Dizin numarası, depolama hesabı adının bir parçası olarak kullanılır. Bicep dosyasını dağıttığınızda şuna benzer iki depolama hesabı alırsınız:

Başlangıç numarası olarak 0 olan tamsayı dizini kullanma

Aralık() içinde ilk sayı başlangıç numarası, ikinci sayı ise döngünün kaç kez çalıştırılacağıdır. Bu nedenle, aralığı (3,2) olarak değiştirirseniz iki depolama hesabı da alırsınız:

Başlangıç numarası olarak 3 olan tamsayı dizini kullanma

Yukarıdaki örneğin çıktısı, döngüde oluşturulan kaynaklara nasıl başvurulduğunu gösterir. Çıktı şuna benzer olacaktır:

"outputs": {
  "names": {
    "type": "Array",
    "value": [
      {
        "name": "0storage52iyjssggmvue"
      },
      {
        "name": "1storage52iyjssggmvue"
      }
    ]
  }
},

Dizi öğelerini kullanma

Bir dizide döngü yapabilirsiniz. Aşağıdaki örnekte bir dizi dize gösterilmektedir.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for name in storageNames: {
  name: '${name}str${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

döngü, dizideki tüm dizeleri depolama hesabı adlarının bir parçası olarak kullanır. Bu durumda iki depolama hesabı oluşturur:

Dize dizisi kullanma

Bir dizi nesne arasında döngü de yapabilirsiniz. Döngü yalnızca depolama hesabı adlarını özelleştirmekle kalmaz, aynı zamanda SKU'ları da yapılandırılır.

param rgLocation string = resourceGroup().location
param storages array = [
  {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for storage in storages: {
  name: '${storage.name}obj${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: storage.skuName
  }
  kind: 'StorageV2'
}]

döngü iki depolama hesabı oluşturur. Fabrikam ile başlayan depolama hesabının SKU'su Premium_LRS.

Dize dizisi kullanma

Dizi ve dizin kullanma

Aynı durumlarda, bir dizi döngüsünü dizin döngüsüyle birleştirmek isteyebilirsiniz. Aşağıdaki örnekte, adlandırma kuralı için dizinin ve dizin numarasının nasıl kullanılacağı gösterilmektedir.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for (name, i) in storageNames: {
  name: '${i}${name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Önceki örneği dağıttığınızda aşağıdakine benzer iki depolama hesabı oluşturursunuz:

Dize dizisi ve dizin numarası kullanma

Sözlük nesnesi kullanma

Sözlük nesnesindeki öğeler üzerinde yineleme yapmak için, nesneyi diziye dönüştüren items işlevini kullanın. value Nesneleri özelliklerini almak için özelliğini kullanın.

param rgLocation string = resourceGroup().location

param storageConfig object = {
  storage1: {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  storage2: {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
}

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for config in items(storageConfig): {
  name: '${config.value.name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: config.value.skuName
  }
  kind: 'StorageV2'
}]

döngü iki depolama hesabı oluşturur. Fabrikam ile başlayan depolama hesabının SKU'su Premium_LRS.

Sözlük nesnesi kullanma

Koşulla döngü

Kaynaklar ve modüller için, koleksiyonu koşullu olarak dağıtmak için döngü söz dizimine sahip bir if ifade ekleyebilirsiniz.

param rgLocation string = resourceGroup().location
param storageCount int = 2
param createNewStorage bool = true

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for i in range(0, storageCount): if(createNewStorage) {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Daha fazla bilgi için bkz. Bicep'te koşullu dağıtım.

Kaynakları temizleme

Azure kaynakları artık gerekli olmadığında, hızlı başlangıç kaynak grubunu silmek için Azure CLI veya Azure PowerShell modülünü kullanın.

resourceGroupName = "{provide-the-resource-group-name}"

az group delete --name $resourceGroupName

Sonraki adımlar