Konfigurációkészlet-minta

Ahelyett, hogy sok egyedi paramétert határoz meg, 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ékkészletet.

Kontextus és probléma

Egyetlen Bicep-fájl gyakran számos erőforrást definiál. 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 üzembe helyez egy App Service csomagot és alkalmazást, valamint egy tárfiókot. 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 vannak hátrányai:

  • Ez a megközelítés terhet ró a sablonfelhasználókra, mivel tisztában kell lenni az egyes erőforrásokhoz használandó értékekkel, valamint az egyes paraméterek beállításának hatásával.
  • A sablon paramétereinek száma az ön által definiált új erőforrásokkal együtt nő.
  • A felhasználók olyan paraméterérték-kombinációkat választhatnak, amelyek nincsenek tesztelve, 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.

Megjegyzés

Ezt a módszert pólóméretezésnek is nevezik. Amikor veszel egy pólót, akkor nem kap sok lehetőséget annak hosszát, szélességét, ujját, és így tovább. Egyszerűen választhat a kis, közepes és nagy méretek között, és a pólótervező előre meghatározta ezeket a méréseket ezen méret alapján.

Példa

Tegyük fel, hogy van egy sablonja, 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) 1 3
App Service alkalmazás
Always On 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-dekorátor 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 leképezési változót, amely egy objektum, amely a környezet típusától függően meghatározza az adott konfigurációt. Figyelje meg, hogy a változó két nevű objektummal rendelkezik ProductionNonProduction. 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
}

Megfontolandó szempontok

  • A leképezési változóban fontolja meg a tulajdonságok erőforrás szerinti csoportosítását a definíciójuk egyszerűsítése érdekében.
  • A leképezési változóban megadhatja az egyes tulajdonságértékeket (például a alwaysOn példában szereplő tulajdonságot), illetve az objektumtulajdonságot beállítva objektumváltozókat (például a példában szereplő termékváltozat-tulajdonságokat).
  • Fontolja meg egy konfigurációs készlet használatát erőforrás-feltételekkel. 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

Tudnivalók a megosztott változók fájlmintájáról.