Aracılığıyla paylaş


Yapılandırma kümesi düzeni

Çok sayıda parametre tanımlamak yerine önceden tanımlanmış değer kümeleri oluşturun. Dağıtım sırasında kullanılacak değer kümesini seçin.

Bağlam ve sorun

Tek bir Bicep dosyası genellikle birçok kaynağı tanımlar. Dağıttığınız ortama bağlı olarak her kaynağın farklı bir yapılandırma kullanması gerekebilir. Örneğin, App Service planı ve uygulaması dağıtan bir Bicep dosyası ve bir depolama hesabı oluşturabilirsiniz. Bu kaynakların her biri maliyetini, kullanılabilirliğini ve dayanıklılığını etkileyen birden çok seçeneğe sahiptir. Üretim ortamları için, yüksek kullanılabilirlik ve dayanıklılık önceliklerini belirleyen bir yapılandırma kümesi kullanmak istiyorsunuz. Üretim dışı ortamlar için maliyet azaltmaya öncelik veren farklı bir yapılandırma kümesi kullanmak istiyorsunuz.

Her yapılandırma ayarı için parametreler oluşturabilirsiniz, ancak bu yaklaşımın bazı dezavantajları vardır:

  • Her kaynak için kullanılacak değerleri ve her parametreyi ayarlamanın etkisini anlamaları gerektiğinden bu yaklaşım şablon kullanıcılarınız için bir yük oluşturur.
  • Tanımladığınız her yeni kaynakta şablonunuzdaki parametre sayısı artar.
  • Kullanıcılar, test edilmiş veya düzgün çalışmayan parametre değerlerinin birleşimlerini seçebilir.

Çözüm

Ortam türünü belirtmek için tek bir parametre oluşturun. Parametrenin değerine göre her kaynağın yapılandırmasını otomatik olarak seçmek için bir değişken kullanın.

Not

Bu yaklaşım bazen tişört boyutlandırma olarak adlandırılır. Bir tişört satın aldığınızda uzunluğu, genişliği, kılıfları vb. için çok fazla seçenek elde edersiniz. Küçük, orta ve büyük boyutlar arasında seçim yapmanız yeterlidir ve tişört tasarımcısı bu ölçüleri bu boyuta göre önceden tanımlamıştır.

Örnek

İki tür ortama dağıtabileceğiniz bir şablonunuz olduğunu varsayalım: üretim dışı ve üretim. Ortam türüne bağlı olarak, ihtiyacınız olan yapılandırma farklıdır:

Özellik Üretim dışı ortamlar Üretim ortamları
App Service planı
SKU adı S2 P2V3
Kapasite (örnek sayısı) 1 3
App Service uygulaması
Her Zaman Açık Devre Dışı Etkin
Depolama hesabı
SKU adı Standard_LRS Standard_ZRS

Bu şablon için yapılandırma kümesi desenini kullanabilirsiniz.

Üretim veya üretim dışı gibi ortam türünü gösteren tek bir parametreyi kabul edin. @allowed Şablonunuzun kullanıcılarının yalnızca beklediğiniz değerleri sağladığından emin olmak için parametre dekoratörünüzü kullanın:

@allowed([
  'Production'
  'NonProduction'
])
param environmentType string = 'NonProduction'

Ardından ortam türüne bağlı olarak belirli bir yapılandırmayı tanımlayan bir nesne olan bir eşleme değişkeni oluşturun. değişkeninin ve NonProductionadlı Production iki nesnesi olduğuna dikkat edin. Bu adlar, önceki örnekteki parametre için izin verilen değerlerle eşleşmektedir:

var environmentConfigurationMap = {
  Production: {
    appServicePlan: {
      sku: {
        name: 'P2V3'
        capacity: 3
      }
    }
    appServiceApp: {
      alwaysOn: false
    }
    storageAccount: {
      sku: {
        name: 'Standard_ZRS'
      }
    }
  }
  NonProduction: {
    appServicePlan: {
      sku: {
        name: 'S2'
        capacity: 1
      }
    }
    appServiceApp: {
      alwaysOn: false
    }
    storageAccount: {
      sku: {
        name: 'Standard_LRS'
      }
    }
  }
}

Kaynakları tanımlarken, kaynak özelliklerini tanımlamak için yapılandırma eşlemesini kullanın:

resource appServicePlan 'Microsoft.Web/serverfarms@2022-09-01' = {
  name: appServicePlanName
  location: location
  sku: environmentConfigurationMap[environmentType].appServicePlan.sku
}

resource appServiceApp 'Microsoft.Web/sites@2022-09-01' = {
  name: appServiceAppName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
    siteConfig: {
      alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn
    }
  }
}

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  kind: 'StorageV2'
  sku: environmentConfigurationMap[environmentType].storageAccount.sku
}

Dikkat edilmesi gereken noktalar

  • Eşleme değişkeninizde, tanımlarını basitleştirmek için özellikleri kaynağa göre gruplandırmayı göz önünde bulundurun.
  • Eşleme değişkeninizde, tek tek özellik değerlerini (örnekteki alwaysOn özellik gibi) veya nesne özelliğini ayarlayan nesne değişkenlerini (örnekteki SKU özellikleri gibi) tanımlayabilirsiniz.
  • Kaynak koşullarıyla bir yapılandırma kümesi kullanmayı göz önünde bulundurun. Bu, Bicep kodunuzun diğer ortamlarda değil belirli ortamlar için belirli kaynakları dağıtmasını sağlar.

Sonraki adımlar

Paylaşılan değişken dosya düzeni hakkında bilgi edinin.