Model konfigurační sady
Místo definování velkého množství jednotlivých parametrů vytvořte předdefinované sady hodnot. Během nasazení vyberte sadu hodnot, které chcete použít.
Kontext a problém
Jeden soubor Bicep často definuje mnoho prostředků. Každý prostředek může potřebovat použít jinou konfiguraci v závislosti na prostředí, do které ho nasazujete. Můžete například vytvořit soubor Bicep, který nasadí plán služby App Service a aplikaci a účet úložiště. Každý z těchto prostředků má několik možností, které ovlivňují náklady, dostupnost a odolnost. V produkčních prostředích chcete použít jednu sadu konfigurace, která upřednostňuje vysokou dostupnost a odolnost. Pro neprodukční prostředí chcete použít jinou sadu konfigurace, která upřednostňuje snížení nákladů.
Pro každé nastavení konfigurace můžete vytvořit parametry, ale tento přístup má určité nevýhody:
- Tento přístup uživatelům šablony zatěžuje, protože potřebují porozumět hodnotám, které se mají použít pro každý prostředek, a dopad nastavení jednotlivých parametrů.
- Počet parametrů v šabloně se zvyšuje s každým novým prostředkem, který definujete.
- Uživatelé můžou vybrat kombinace hodnot parametrů, které nebyly testovány nebo které nebudou fungovat správně.
Řešení
Vytvořte jeden parametr pro zadání typu prostředí. Proměnnou můžete použít k automatickému výběru konfigurace pro každý prostředek na základě hodnoty parametru.
Poznámka:
Tento přístup se někdy označuje jako změna velikosti trička. Když si koupíte tričko, nedostanete spoustu možností pro jeho délku, šířku, rukávy a tak dále. Jednoduše si zvolíte mezi malými, středními a velkými velikostmi a návrhář trička předdefinoval tato měření na základě této velikosti.
Příklad
Předpokládejme, že máte šablonu, která se dá nasadit do dvou typů prostředí: neprodukční a produkční. V závislosti na typu prostředí se konfigurace, kterou potřebujete, liší:
Vlastnost | Neprodukční prostředí | Provozní prostředí |
---|---|---|
Plán služby App Service | ||
Název skladové položky | S2 | P2V3 |
Kapacita (počet instancí) | 1 | 3 |
Aplikace App Service | ||
Stálé připojení | Disabled | Povolený |
Účet úložiště | ||
Název skladové položky | Standard_LRS | Standard_ZRS |
Pro tuto šablonu můžete použít vzor konfigurační sady.
Přijměte jeden parametr, který označuje typ prostředí, například produkční nebo neprodukční. Pomocí dekorátoru @allowed
parametrů zajistěte, aby uživatelé šablony zadali jenom hodnoty, které očekáváte:
@allowed([
'Production'
'NonProduction'
])
param environmentType string = 'NonProduction'
Pak vytvořte proměnnou mapy, což je objekt, který definuje konkrétní konfiguraci v závislosti na typu prostředí. Všimněte si, že proměnná má dva objekty pojmenované Production
a NonProduction
. Tyto názvy odpovídají povoleným hodnotám parametru v předchozím příkladu:
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'
}
}
}
}
Při definování prostředků pomocí mapy konfigurace definujte vlastnosti prostředku:
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
}
Důležité informace
- V mapové proměnné zvažte seskupení vlastností podle prostředku, aby se zjednodušila jejich definice.
- V mapové proměnné můžete definovat jak jednotlivé hodnoty vlastností (například
alwaysOn
vlastnost v příkladu), nebo proměnné objektů, které nastavují vlastnost objektu (například vlastnosti skladové položky v příkladu). - Zvažte použití konfigurační sady s podmínkami prostředků. To umožňuje vašemu kódu Bicep nasadit určité prostředky pro konkrétní prostředí, a ne v jiných prostředích.