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