Értékek megadása paraméterfájlok használatával

Befejeződött

Az előző egységekben a parancssorban adta meg a paraméterértékeket az üzembe helyezés létrehozásakor. Ez a módszer jól működik a Bicep-fájlok írása és tesztelése során, de nem működik jól, ha sok paramétert használ, vagy ha automatizálnia kell az üzembe helyezéseket. Ebben a leckében a paraméterértékek megadásának különböző módjait ismerheti meg.

Megjegyzés:

Az egység parancsai a fogalmakat szemléltetik. Még ne futtassa a parancsokat. Hamarosan gyakorolja, amit itt tanul.

Paraméterfájlok létrehozása

A paraméterfájlok megkönnyítik a paraméterértékek együttes megadását készletként. A paraméterfájlban megadhatja a Bicep-fájl paramétereinek értékeit. A paraméterfájlok a JavaScript Object Notation (JSON) nyelv használatával jönnek létre. A Bicep-sablon üzembe helyezésekor megadhat egy paraméterfájlt. Így néz ki egy paraméterfájl:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    },
    "cosmosDBAccountLocations": {
      "value": [
        {
          "locationName": "australiaeast"
        },
        {
          "locationName": "southcentralus"
        },
        {
          "locationName": "westeurope"
        }
      ]
    }
  }
}

Tekintsük meg részletesebben a paraméterfájl egyes részeit:

  • $schema segít az Azure Resource Managernek megérteni, hogy ez a fájl paraméterfájl.
  • contentVersion egy tulajdonság, amellyel nyomon követheti a paraméterfájl jelentős változásait, ha szeretné. Általában az alapértelmezett értékre 1.0.0.0van állítva.
  • A parameters szakasz felsorolja az egyes paramétereket és a használni kívánt értéket. A paraméter értékét objektumként kell megadni. Az objektumnak van egy olyan tulajdonsága value , amely meghatározza a használni kívánt tényleges paraméterértéket.

Általában minden környezethez létre kell hoznia egy paraméterfájlt. Célszerű a környezet nevét a paraméterfájl nevében szerepeltetni. Lehet például egy main.parameters.dev.json nevű paraméterfájl a fejlesztési környezethez, és egy main.parameters.production.json nevű az éles környezethez.

Megjegyzés:

Győződjön meg arról, hogy csak a Bicep-sablonban található paraméterek értékeit adja meg. Amikor létrehoz egy üzembe helyezést, az Azure ellenőrzi a paramétereket, és hibaüzenetet ad, ha olyan paraméter értékét próbálta megadni, amely nem szerepel a Bicep-fájlban.

Paraméterfájlok használata az üzembe helyezéskor

Amikor új üzembe helyezést hoz létre a az deployment group create parancs használatával, megadhatja a használni kívánt paraméterfájl nevét az --parameters argumentummal:

az deployment group create \
  --template-file main.bicep \
  --parameters main.parameters.json

Amikor új üzembe helyezést hoz létre a New-AzResourceGroupDeployment parancsmag használatával, megadhatja a használni kívánt paraméterfájl nevét az -TemplateParameterFile argumentummal:

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json

Paraméterértékek felülbírálása

Megismerhette a paraméterértékek megadásának három módját: az alapértelmezett értékeket, a parancssort és a paraméterfájlokat. Gyakori, hogy különböző megközelítéseket használunk ugyanazon paraméter különböző értékeinek megadásához. Ezt a megközelítést már látta, amikor alapértelmezett értékekkel dolgozott. Amikor létrehoz egy alapértelmezett értéket egy paraméterhez, de a parancssor használatával egy másik értéket ad meg, a parancssori érték elsőbbséget élvez. Nézzük meg, hogyan illeszkednek a paraméterfájlok ebbe a sorrendbe.

Diagram that shows the order of precedence for parameter values. Parameter files override default values, and command-line parameter values override parameter files.

Láthatja, hogy a paraméterfájlok felülbírálják az alapértelmezett értékeket, a parancssori paraméterértékek pedig felülbírálják a paraméterfájlokat.

Nézzük meg, hogyan működik ez a megközelítés. Íme egy példa Bicep-fájl, amely három paramétert határoz meg, amelyek mindegyike alapértelmezett értékekkel rendelkezik:

param location string = resourceGroup().location
param appServicePlanInstanceCount int = 1
param appServicePlanSku object = {
  name: 'F1'
  tier: 'Free'
}

Tekintsünk meg egy paraméterfájlt, amely felülbírálja két paraméter értékét, de nem ad meg értéket a location paraméterhez:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    }
  }
}

Az üzembe helyezés létrehozásakor felülbíráljuk a appServicePlanInstanceCount> értékét is. A paraméterfájlokhoz hasonlóan használja az --parameters argumentumot, de a felülbírálni kívánt értéket saját értékként adja hozzá:

az deployment group create \
  --template-file main.bicep \
  --parameters main.parameters.json \
               appServicePlanInstanceCount=5

Az üzembe helyezés létrehozásakor felül kell bírálni az egyik paraméterértéket. A paraméter nevét úgy adja meg, mintha a parancsmag argumentuma lenne:

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json `
  -appServicePlanInstanceCount 5

Nézzük meg, mik lesznek az értékek.

Paraméter Érték Magyarázat
location Az erőforráscsoport helye. A Bicep-fájl alapértelmezett értékként adja meg ezt a paramétert, és nincs felülírva.
appServicePlanSku Olyan objektum, name amelynek tulajdonsága PremiumV3a következőre P1v3 van állítva:tier A Bicep-fájl alapértelmezett értékét felülírja a paraméterfájl.
appServicePlanInstanceCount 5 Az üzembe helyezéskor megadott érték felülírja az alapértelmezett értéket és a paraméterfájl értékét.

A paraméterértékek megadására szolgáló megközelítések keverékével elkerülheti, hogy sok helyen duplikálja a paraméterértékeket, miközben továbbra is rugalmasan felülbírálhatja a szükséges helyeket.