Gyakorlat – Paraméterek és változók hozzáadása a Bicep-sablonhoz

Befejeződött

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

  1. 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ítani westus3. A tulajdonság használatával resourceGroup().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.

  2. Keresse meg az erőforrás-definíciók azon helyeit, ahol a tulajdonságok és name a location 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
      }
    }
    
  3. Mentse a fájl módosításait.

Az SKU-k automatikus beállítása az egyes környezettípusokhoz

  1. 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.

  2. 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.

  3. 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.

  4. 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

  1. 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.

  2. Válassza az 1 sikeres hivatkozást.

  3. 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.

    Screenshot of the Azure portal interface for the specific deployment, with storage account and App Service resources listed with generated names.

  4. Figyelje meg, hogy egy új App Service-alkalmazás és tárfiók lett üzembe helyezve véletlenszerűen létrehozott névvel.