Vzor konfigurační sady

Místo toho, abyste definovali velké množství jednotlivých parametrů, vytvořte předdefinované sady hodnot. Během nasazování vyberte sadu hodnot, které se mají použít.

Kontext a problém

Jeden soubor bicep často definuje mnoho prostředků. Každý prostředek může vyžadovat použití jiné konfigurace v závislosti na prostředí, do kterého ho nasazujete. Můžete například vytvořit soubor bicep, který nasadí App Service plán a aplikace a účet úložiště. Každý z těchto prostředků má několik možností, které mají vliv na jeho náklady, dostupnost a odolnost. V produkčních prostředích budete chtít použít jednu sadu konfigurací, která má určit prioritu vysoké dostupnosti a odolnosti. V případě neprodukčních prostředí budete chtít použít jinou sadu konfigurace, která bude upřednostňovat snížení nákladů.

Pro každé nastavení konfigurace můžete vytvořit parametry, ale toto má několik nevýhod:

  • Tento přístup vytvoří pro uživatele šablony režii, protože musí pochopit hodnoty, které mají být použity pro jednotlivé prostředky, a dopad nastavení jednotlivých parametrů.
  • Počet parametrů ve vaší šabloně se zvyšuje s každým novým prostředkem, který definujete.
  • Uživatelé mohou vybrat kombinace hodnot parametrů, které nebyly testovány nebo které nebudou správně fungovat.

Řešení

Vytvořte jeden parametr pro určení typu prostředí. Použijte proměnnou 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 Velikost t-tričko. Když si koupíte tričko, nezískáte spoustu možností pro jeho délku, šířku, rukávy a tak dále. Stačí si vybrat mezi malými, středními a velkými velikostmi a Návrhář t-trička tato měření předdefinovaná 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í Produkční prostředí
Plán App Service
Název SKU S2 P2V3
Kapacita (počet instancí) 1 3
Aplikace App Service
Vždy zapnuto Zakázáno Povoleno
Účet úložiště
Název SKU Standard_LRS Standard_ZRS

Pro tuto šablonu můžete použít vzor sady konfigurací.

Přijměte jeden parametr, který indikuje typ prostředí, jako je například produkční nebo neprodukční. Pomocí @allowed parametru dekoratér zajistěte, aby uživatelé vaší šablony měli jenom hodnoty, které očekáváte:

@allowed([
  'Production'
  'NonProduction'
])
param environmentType string = 'NonProduction'

Pak vytvořte proměnnou mapy, což je objekt definující 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 pro parametr 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@2020-06-01' = {
  name: appServicePlanName
  location: location
  sku: environmentConfigurationMap[environmentType].appServicePlan.sku
}

resource appServiceApp 'Microsoft.Web/sites@2020-06-01' = {
  name: appServiceAppName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
    siteConfig: {
      alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn
    }
  }
}

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  name: storageAccountName
  location: location
  kind: 'StorageV2'
  sku: environmentConfigurationMap[environmentType].storageAccount.sku
}

Požadavky

  • V proměnné mapy zvažte seskupení vlastností podle prostředků, aby se zjednodušila jejich definice.
  • Ve vaší proměnné mapy můžete definovat jednotlivé hodnoty vlastností (například alwaysOn vlastnost v příkladu) nebo proměnné objektu, které nastaví vlastnost objektu (například vlastnosti SKU v příkladu).
  • Zvažte použití konfigurační sady s podmínkami pro prostředky. To umožňuje, aby kód bicep nasadil určité prostředky pro konkrétní prostředí, a ne jiné.

Další kroky

Přečtěte si o vzoru souboru sdílené proměnné.