Vzor sady konfigurace
Místo definování velkého množství jednotlivých parametrů vytvořte předdefinované sady hodnot. Během nasazování 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 a aplikaci App Service a účet úložiště. Každý z těchto prostředků má několik možností, které ovlivňují jeho náklady, dostupnost a odolnost. V produkčních prostředích chcete použít jednu sadu konfigurací, 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ů.
Můžete vytvořit parametry pro každé nastavení konfigurace, ale to má některé nevýhody:
- Tento přístup představuje zátěž pro uživatele šablony, protože potřebují porozumět hodnotám, které se mají použít pro jednotlivé prostředky, a dopadu 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 určení typu prostředí. Pomocí proměnné můžete automaticky vybrat konfiguraci pro každý prostředek na základě hodnoty parametru.
Poznámka
Tento přístup se někdy označuje jako nastavení velikosti trička. Když si koupíte tričko, nemáte spoustu možností pro jeho délku, šířku, rukávy atd. Jednoduše si vyberete mezi malými, středními a velkými velikostmi a návrhář trička má tyto rozměry předdefinované na základě této velikosti.
Příklad
Předpokládejme, že máte šablonu, kterou je možné nasadit do dvou typů prostředí: neprodukčního prostředí a produkčního prostředí. V závislosti na typu prostředí se konfigurace, kterou potřebujete, liší:
Vlastnost | Neprodukční prostředí | Produkční prostředí |
---|---|---|
App Service plán | ||
Název skladové položky | S2 | P2V3 |
Kapacita (počet instancí) | 1 | 3 |
App Service aplikace | ||
AlwaysOn | Zakázáno | Povoleno |
Úč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í prostředí. Pomocí dekorátoru @allowed
parametrů zajistěte, aby uživatelé šablony poskytovali pouze hodnoty, které očekáváte:
@allowed([
'Production'
'NonProduction'
])
param environmentType string = 'NonProduction'
Pak vytvořte proměnnou mapování, 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 s názvem 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ů použijte mapu konfigurace k definování vlastností 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
}
Požadavky
- V proměnné mapování zvažte seskupení vlastností podle prostředku, abyste zjednodušili jejich definici.
- V proměnné mapování můžete definovat jak hodnoty jednotlivých vlastností (jako
alwaysOn
je vlastnost v příkladu), tak proměnné objektu, 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 kódu Bicep nasadit určité prostředky pro konkrétní prostředí, a ne v jiných prostředích.