Değişken ve çıkış döngülerini kullanma

Tamamlandı

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 , item4item2item3ve item5değerlerini item1iç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@2021-08-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@2021-09-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.