Gyakorlat – Paraméterek és változók hozzáadása a Bicep-sablonhoz
Ebben a gyakorlatban frissíteni fogja a korábban létrehozott Bicep-sablont, hogy az a következő legyen:
- Elfogadja az erőforrás helyének és nevének paramétereit.
- Az üzleti szabályok használatával válassza ki a megfelelő termékváltozatokat az üzembe helyezett erőforrásokhoz.
A folyamat során a következőt fogja elvégezni:
- Frissítse a sablont úgy, hogy tartalmazzon egy paramétert
location
. - Frissítse a sablont úgy, hogy az tartalmazza az erőforrásnevek paramétereit és változóit.
- A paraméterek alapértelmezett értékeit kifejezésekkel állíthatja be.
- Frissítse a sablont úgy, hogy az tartalmazza az egyes erőforrások termékváltozatához tartozó változókat.
- Tesztelje az üzembe helyezést annak ellenőrzéséhez, hogy a sablon érvényes-e.
Hely- és erőforrásnév-paraméterek hozzáadása
A Visual Studio Code main.bicep fájljában adja hozzá a következő kódot a fájl elejéhez:
param location string = 'eastus' param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}' var appServicePlanName = 'toy-product-launch-plan'
A Bicep-linter sárga hullámos vonalakat ad hozzá az egyes paraméterek és változónevek alá, hogy jelezze, hogy nincsenek használatban a sablonban. Ezt a problémát hamarosan ki fogja javítani.
Figyelje meg, hogy sztringinterpolációt és függvényt tartalmazó kifejezéseket használ az
uniqueString()
alapértelmezett paraméterértékek meghatározásához. A sablont üzembe helyező felhasználók felülbírálhatják az alapértelmezett paraméterértékeket az üzembe helyezéskor megadott értékekkel, de nem bírálhatják felül a változó értékeket.Azt is megfigyelheti, hogy egy változót használ a Azure-alkalmazás szolgáltatáscsomag nevére, de a többi névhez paramétereket használ. A tárfiókoknak és az App Service-alkalmazásoknak globálisan egyedi nevekre van szükségük, az App Service-csomagneveknek azonban csak az erőforráscsoportjukon belül kell egyedinek lenniük. Ez a különbség azt jelenti, hogy nem kell ugyanazt az App Service-csomagnevet használni a különböző üzemelő példányok esetében, mindaddig, amíg az üzemelő példányok különböző erőforráscsoportokba kerülnek.
Tipp.
Azt adja meg, hogy a paramétert a
location
következőre kell állítaniwestus3
. A tulajdonság használatávalresourceGroup().location
általában az erőforráscsoporttal azonos helyen hozhat létre erőforrásokat. Ha azonban a Microsoft Learn tesztkörnyezettel dolgozik, bizonyos Azure-régiókat kell használnia, amelyek nem felelnek meg az erőforráscsoport helyének.Keresse meg az erőforrás-definíciók azon helyeit, ahol a tulajdonságok és
name
alocation
tulajdonságok meg vannak adva, és frissítse őket a paraméterértékek használatára. Ha végzett, a Bicep-fájlban lévő erőforrás-definícióknak a következőképpen kell kinéznie:resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Mentse a fájl módosításait.
Az SKU-k automatikus beállítása az egyes környezettípusokhoz
A Visual Studio Code main.bicep fájljában adja hozzá a következő Bicep-paramétert az előző feladatban létrehozott paraméterek alá:
@allowed([ 'nonprod' 'prod' ]) param environmentType string
Figyelje meg, hogy egy paramétert engedélyezett értékek készletével definiál, de ehhez a paraméterhez nem ad meg alapértelmezett értéket.
A változót deklaráló
appServicePlanName
sor alatt adja hozzá a következő változódefiníciókat:var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
Figyelje meg, hogy ezeket a változókat úgy állítja be, hogy a ternáris operátorral fejez ki néhány
if/then/else
logikát.Keresse meg azokat a helyeket az erőforrásdefiníciókban, ahol a
sku
tulajdonságok be vannak állítva, és frissítse őket a paraméterértékek használatára. Ha végzett, a Bicep-fájl erőforrásdefinícióinak a következőképpen kell kinéznie:resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: storageAccountName location: location sku: { name: storageAccountSkuName } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Figyelje meg, hogy nem paraméterezett meg mindent. Beállított néhány tulajdonságot közvetlenül az erőforrás-definíciókban, ahol tudja, hogy ezek az értékek nem fognak változni az üzemelő példányok között.
Mentse a fájl módosításait.
A Bicep-fájl ellenőrzése
Miután elvégezte az összes fenti módosítást, a main.bicep fájlnak az alábbi példához hasonlóan kell kinéznie:
param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Ha a fájl nem egyezik, másolja ki a példát, vagy módosítsa a fájlt a példának megfelelően.
A frissített Bicep-sablon üzembe helyezése
Futtassa a következő Azure CLI-parancsot a terminálon.
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
Futtassa a következő Azure PowerShell-parancsot a terminálon.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
Figyelje meg, hogy az üzembe helyezés végrehajtásakor explicit módon adja meg a environmentType
paraméter értékét. Nem kell megadnia a többi paraméterértéket, mert érvényes alapértelmezett értékekkel rendelkeznek.
Az üzemelő példány ellenőrzése
A böngészőben lépjen vissza az Azure Portalra , és nyissa meg az erőforráscsoportot. Továbbra is egy sikeres üzembe helyezést fog látni, mert az üzembe helyezés ugyanazt a nevet használta, mint az első üzembe helyezés.
Válassza az 1 sikeres hivatkozást.
Válassza ki a főként hívott üzembe helyezést, majd az Üzembe helyezés részletei elemre kattintva bontsa ki az üzembe helyezett erőforrások listáját.
Figyelje meg, hogy egy új App Service-alkalmazás és tárfiók lett üzembe helyezve véletlenszerűen létrehozott névvel.