Sdílet prostřednictvím


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.

Další kroky

Seznamte se se vzorem souboru sdílené proměnné.