Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.