Değişken ve çıkış döngülerini kullanma
Kaynakların birden çok örneğini dağıtmak için kopyalama döngülerini nasıl kullanabileceğinizi ve döngüleri kullanarak bir kaynağın özelliklerini nasıl ayarlayabileceğinizi öğrendiniz. Bicep'te, değişkenler ve çıkışlarla döngüleri de kullanabilirsiniz.
Oyuncak şirketiniz için aynı alt ağ yapılandırmasına sahip sanal ağları birden çok Azure bölgesine dağıtmanız gerekir. Gelecekte sanal ağlarınıza ek alt ağlar eklemeniz gerekeceğinden, alt ağ yapılandırmasını değiştirmek için Bicep şablonlarınızda esneklik elde etmek istiyorsunuz.
Azure ortamınızda birden çok depolama hesabı dağıtacağınızdan, dağıtım işlem hatlarınızın bu bilgileri kullanabilmesi için her depolama hesabının uç noktalarını çıkış olarak sağlamanız gerekir.
Bu ünitede, değişkenler ve çıkışlarla döngüleri kullanmayı öğreneceksiniz.
Dekont
Bu ünitedeki komutlar kavramları göstermek için gösterilir. Komutları henüz çalıştırmayın. Burada öğrendiklerini yakında öğreneceksin.
Değişken döngüleri
Değişken döngülerini kullanarak, bicep dosyanız aracılığıyla kullanabileceğiniz bir dizi oluşturabilirsiniz. Diğer döngülerde olduğu gibi, değişken döngüsü oluşturmak için anahtar sözcüğünü for
kullanırsınız:
var items = [for i in range(1, 5): 'item${i}']
Yukarıdaki örnek , item4
item2
item3
ve item5
değerlerini item1
içeren bir dizi oluşturur.
Daha sonra bir kaynak bildiriminde kullanabileceğiniz daha karmaşık nesneler oluşturmak için normalde değişken döngüleri kullanırsınız. Özellik oluşturmak için değişken döngülerini şu şekilde kullanabilirsiniz subnets
:
param addressPrefix string = '10.10.0.0/16'
param subnets array = [
{
name: 'frontend'
ipAddressRange: '10.10.0.0/24'
}
{
name: 'backend'
ipAddressRange: '10.10.1.0/24'
}
]
var subnetsProperty = [for subnet in subnets: {
name: subnet.name
properties: {
addressPrefix: subnet.ipAddressRange
}
}]
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2024-01-01' = {
name: 'teddybear'
location: resourceGroup().location
properties:{
addressSpace:{
addressPrefixes:[
addressPrefix
]
}
subnets: subnetsProperty
}
}
Bu örnekte, değişken döngüleri için etkili bir kullanım gösterilmektedir: basit, anlaşılması kolay değerlere sahip bir parametreyi Azure kaynağının gerekli tanımına karşılık gelen daha karmaşık bir nesneye dönüştürme. Parametrelerin yalnızca listedeki her öğe için değiştirilecek anahtar bilgilerini belirtmesini sağlamak için değişken döngülerini kullanabilirsiniz. Daha sonra kaynak için diğer gerekli özellikleri ayarlamak için Bicep ifadelerini veya varsayılan değerleri kullanabilirsiniz.
Çıkış döngüleri
Dağıtımlarınızdan dağıtımı başlatan kullanıcıya veya aracına bilgi sağlamak için Bicep çıkışlarını kullanabilirsiniz. Çıkış döngüleri, çıkışlarınız içindeki döngülerin esnekliğini ve gücünü sağlar.
Diğer döngülerde olduğu gibi bir çıkış döngüsü belirtmek için anahtar sözcüğünü for
kullanın:
var items = [
'item1'
'item2'
'item3'
'item4'
'item5'
]
output outputItems array = [for i in range(0, length(items)): items[i]]
Normalde çıkış döngülerini şablonunuzun içindeki diğer döngülerle birlikte kullanırsınız. Örneğin, parametresi tarafından locations
belirtilen Azure bölgelerine bir dizi depolama hesabı dağıtan bicep dosyasına bakalım:
param locations array = [
'westeurope'
'eastus2'
'eastasia'
]
resource storageAccounts 'Microsoft.Storage/storageAccounts@2023-05-01' = [for location in locations: {
name: 'toy${uniqueString(resourceGroup().id, location)}'
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}]
Büyük olasılıkla oluşturduğunuz her depolama hesabı hakkında adı ve erişim için kullanılabilecek uç noktalar gibi bilgileri döndürmeniz gerekir. Bir çıkış döngüsü kullanarak bu bilgileri Bicep dosyanızdan alabilirsiniz.
Dekont
Şu anda Bicep, bir çıkış döngüsünün içinden bir döngü içinde oluşturulmuş kaynaklara doğrudan başvurmayı desteklemez. Bu, sonraki örnekte gösterildiği gibi kaynaklara erişmek için dizi dizin oluşturucuları kullanmanız gerektiği anlamına gelir.
output storageEndpoints array = [for i in range(0, length(locations)): {
name: storageAccounts[i].name
location: storageAccounts[i].location
blobEndpoint: storageAccounts[i].properties.primaryEndpoints.blob
fileEndpoint: storageAccounts[i].properties.primaryEndpoints.file
}]
Dikkat
Erişim anahtarları veya parolalar gibi gizli dizileri döndürmek için çıkışları kullanmayın. Çıkışlar günlüğe kaydedilir ve güvenli verileri işlemek için tasarlanmamıştır.