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:
- tamsayı dizini kullanma
- dizi öğelerini kullanma
- dizi ve dizin kullanma
- sözlük nesnesi kullanma
- koşul ile döngü
Ö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:
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:
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:
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.
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:
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.
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