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 NonProduction
adlı 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.