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 Production
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
}
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.