Yapılandırma kümesi düzeni

Çok sayıda bağımsız 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, bir App Service planı ve uygulaması ile depolama hesabı dağıtan bir Bicep dosyası oluşturabilirsiniz. Bu kaynakların her birinin maliyetini, kullanılabilirliğini ve dayanıklılığını etkileyen birden çok seçeneği vardır. Üretim ortamları için, yüksek kullanılabilirlik ve dayanıklılığı öncelik sırasına koyan 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 bunun bazı dezavantajları vardır:

  • Bu yaklaşım, her kaynak için kullanılacak değerleri ve her parametreyi ayarlamanın etkisini anlamaları gerektiğinden ş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ş olan 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, kolları vb. için çok fazla seçenek elde etmezsiniz. Küçük, orta ve büyük boyutlardan birini seçmeniz 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 parametre 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ü 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, yukarıdaki ö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 gerekenler

  • 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 bir 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 belirli ortamlar için belirli kaynakları dağıtıp diğer ortamlara dağıtmasını sağlar.

Sonraki adımlar

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