Megosztás a következőn keresztül:


Konfigurációkészlet-minta

Ahelyett, hogy sok egyedi paramétert definiál, hozzon létre előre definiált értékkészleteket. Az üzembe helyezés során válassza ki a használni kívánt értékeket.

Kontextus és probléma

Egyetlen Bicep-fájl gyakran sok erőforrást határoz meg. Előfordulhat, hogy minden erőforrásnak más konfigurációt kell használnia attól függően, hogy milyen környezetben helyezi üzembe. Létrehozhat például egy Bicep-fájlt, amely egy App Service-csomagot és alkalmazást, valamint egy tárfiókot helyez üzembe. Ezeknek az erőforrásoknak több lehetősége van, amelyek befolyásolják a költségeket, a rendelkezésre állást és a rugalmasságot. Éles környezetekben egy konfigurációkészletet szeretne használni, amely a magas rendelkezésre állást és a rugalmasságot helyezi előtérbe. Nem éles környezetek esetén egy másik konfigurációkészletet szeretne használni, amely a költségcsökkentést részesíti előnyben.

Minden konfigurációs beállításhoz létrehozhat paramétereket, de ennek a megközelítésnek vannak hátrányai:

  • Ez a megközelítés nagy terhet ró a sablonfelhasználókra, mivel ismerniük kell az egyes erőforrásokhoz használandó értékeket, valamint az egyes paraméterek beállításának hatását.
  • A sablonban lévő paraméterek száma minden definiált új erőforrással nő.
  • A felhasználók olyan paraméterérték-kombinációkat választhatnak, amelyeket nem teszteltek, vagy amelyek nem működnek megfelelően.

Megoldás

Hozzon létre egyetlen paramétert a környezet típusának megadásához. Változó használatával automatikusan kiválaszthatja az egyes erőforrások konfigurációját a paraméter értéke alapján.

Feljegyzés

Ezt a megközelítést néha pólóméretezésnek is nevezik. Amikor vesz egy pólót, akkor nem kap sok lehetőséget annak hosszára, szélességére, ujjára és így tovább. Egyszerűen válasszon a kis, közepes és nagy méretek közül, és a pólótervező előre meghatározta ezeket a méréseket ennek a méretnek megfelelően.

Példa

Tegyük fel, hogy rendelkezik egy sablonnal, amely kétféle környezetben helyezhető üzembe: nem éles és éles környezetben. A környezet típusától függően a szükséges konfiguráció eltérő:

Tulajdonság Nem éles környezetek Éles környezetek
App Service-csomag
Termékváltozat neve S2 P2V3
Kapacitás (példányok száma) 0 3
App Service-alkalmazás
Folyamatos üzem Disabled (Letiltva) Engedélyezve
Storage-fiók
Termékváltozat neve Standard_LRS Standard_ZRS

Ehhez a sablonhoz használhatja a konfigurációkészlet-mintát.

Fogadjon el egyetlen paramétert, amely a környezet típusát jelzi, például éles vagy nem éles. @allowed A paraméter-dekoratőr használatával győződjön meg arról, hogy a sablon felhasználói csak a várt értékeket adják meg:

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

Ezután hozzon létre egy térképváltozót, amely egy objektum, amely a környezet típusától függően határozza meg az adott konfigurációt. Figyelje meg, hogy a változónak két objektuma van elnevezve Production és NonProduction. Ezek a nevek megegyeznek az előző példában szereplő paraméter megengedett értékeivel:

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'
      }
    }
  }
}

Az erőforrások meghatározásakor használja a konfigurációs térképet az erőforrás tulajdonságainak meghatározásához:

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
}

Megfontolások

  • A térképváltozóban fontolja meg a tulajdonságok erőforrás szerinti csoportosítását a definíció egyszerűsítése érdekében.
  • A térképváltozóban megadhatja az egyes tulajdonságértékeket (például a alwaysOn példában szereplő tulajdonságot), vagy az objektumtulajdonságot beállítva objektumváltozókat (például a példában szereplő termékváltozat tulajdonságait).
  • Fontolja meg az erőforrás-feltételekkel rendelkező konfigurációs csoport használatát. Ez lehetővé teszi, hogy a Bicep-kód bizonyos erőforrásokat helyezzen üzembe adott környezetekben, nem pedig más környezetekben.

Következő lépések

Ismerje meg a megosztott változó fájlmintáját.