Paraméterek ARM-sablonokban
Ez a cikk azt ismerteti, hogyan definiálhat és használhat paramétereket az Azure Resource Manager-sablonban (ARM-sablonban). A paraméterek különböző értékeinek megadásával újra felhasználhatja a sablonokat a különböző környezetekhez.
A Resource Manager az üzembe helyezési műveletek megkezdése előtt feloldja a paraméterértékeket. Bárhol is használja a paramétert a sablonban, a Resource Manager lecseréli a feloldott értékre.
Minden paramétert az egyik adattípusra kell állítani.
A minValue, a maxValue, a minLength, a maxLength és az allowedValues mellett a languageVersion 2.0 a definíciókban, paraméterekben és kimeneti definíciókban használandó összesítési típusérvényesítési korlátozásokat is bevezet. Ezek a korlátozások a következők:
Feljegyzés
A Visual Studio Code-hoz készült Azure Resource Manager Tools bővítmény jelenlegi kiadása nem ismeri fel a languageVersion 2.0-ban végrehajtott fejlesztéseket.
Tipp.
A Bicep használatát javasoljuk, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információkért tekintse meg a paramétereket.
Egy sablonban legfeljebb 256 paramétert használhat. További információ: Sablonkorlátok.
A paraméterekkel kapcsolatos ajánlott eljárásokért tekintse meg a Paraméterek című témakört.
Minimális deklaráció
Legalább minden paraméternek szüksége van egy névre és típusra.
Amikor sablont helyez üzembe az Azure Portalon keresztül, a teve-kisbetűs paraméternevek térelválasztó nevekké alakulnak. Az alábbi példában a demoString például demo sztringként jelenik meg. További információ: A GitHub-adattár sablonjainak üzembe helyezési gombja, valamint erőforrások üzembe helyezése ARM-sablonokkal és Azure Portallal.
"parameters": {
"demoString": {
"type": "string"
},
"demoInt": {
"type": "int"
},
"demoBool": {
"type": "bool"
},
"demoObject": {
"type": "object"
},
"demoArray": {
"type": "array"
}
}
Biztonságos paraméterek
A sztring- vagy objektumparamétereket biztonságosként jelölheti meg. A biztonságos paraméter értékét a rendszer nem menti az üzembe helyezési előzményekbe, és nincs naplózva.
"parameters": {
"demoPassword": {
"type": "secureString"
},
"demoSecretObject": {
"type": "secureObject"
}
}
Megengedett értékek
Paraméterhez megadhat engedélyezett értékeket. Megadhatja az engedélyezett értékeket egy tömbben. Az üzembe helyezés sikertelen az ellenőrzés során, ha egy olyan értéket ad át a paraméternek, amely nem az engedélyezett értékek egyike.
"parameters": {
"demoEnum": {
"type": "string",
"allowedValues": [
"one",
"two"
]
}
}
Alapértelmezett érték
Megadhatja egy paraméter alapértelmezett értékét. Az alapértelmezett érték akkor használatos, ha az üzembe helyezés során nincs megadva érték.
"parameters": {
"demoParam": {
"type": "string",
"defaultValue": "Contoso"
}
}
Ha alapértelmezett értéket szeretne megadni a paraméter egyéb tulajdonságaival együtt, használja az alábbi szintaxist.
"parameters": {
"demoParam": {
"type": "string",
"defaultValue": "Contoso",
"allowedValues": [
"Contoso",
"Fabrikam"
]
}
}
Az alapértelmezett értékkel rendelkező kifejezéseket használhatja. Nem használhatja a referenciafüggvényt vagy a paraméterek szakaszban található listafüggvényeket . Ezek a függvények lekérik egy erőforrás futtatókörnyezeti állapotát, és nem hajthatók végre az üzembe helyezés előtt a paraméterek feloldásakor.
A kifejezések más paramétertulajdonságokkal nem használhatók.
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
}
Egy másik paraméterértéket is használhat egy alapértelmezett érték létrehozásához. Az alábbi sablon egy gazdagépterv-nevet hoz létre a webhely nevéből.
"parameters": {
"siteName": {
"type": "string",
"defaultValue": "[concat('site', uniqueString(resourceGroup().id))]"
},
"hostingPlanName": {
"type": "string",
"defaultValue": "[concat(parameters('siteName'),'-plan')]"
}
}
A változókra azonban nem hivatkozhat alapértelmezett értékként.
Hosszkorlátozások
Megadhatja a sztring- és tömbparaméterek minimális és maximális hosszát. Beállíthat egy vagy mindkét korlátozást. Sztringek esetén a hossz a karakterek számát jelzi. Tömbök esetén a hossz a tömb elemeinek számát jelzi.
Az alábbi példa két paramétert deklarál. Az egyik paraméter egy 3–24 karakter hosszúságú tárfióknév. A másik paraméter egy tömb, amely 1–5 elemből állhat.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"appNames": {
"type": "array",
"minLength": 1,
"maxLength": 5
}
}
Egész számra vonatkozó korlátozások
Az egész számparaméterek minimális és maximális értékeit megadhatja. Beállíthat egy vagy mindkét korlátozást.
"parameters": {
"month": {
"type": "int",
"minValue": 1,
"maxValue": 12
}
}
Objektumkorlátozások
Az objektumkorlátozások csak objektumokon engedélyezettek, és csak a languageVersion 2.0-val használhatók.
Tulajdonságok
Az érték properties
a tulajdonságnév =>típusdefiníció leképezése.
Az alábbi példa elfogadná{"foo": "string", "bar": 1}
, de elutasítaná{"foo": "string", "bar": -1}
, {"foo": "", "bar": 1}
vagy bármilyen objektumot, amely nem rendelkezik tulajdonságmalfoo
.bar
"parameters": {
"objectParameter": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
}
}
}
Minden tulajdonságra szükség van, kivéve, ha a tulajdonság típusdefiníciója "null értékű": igaz korlátozással rendelkezik. Ha az előző példában mindkét tulajdonságot kötelezővé szeretné tenni, az a következőképpen nézne ki:
"parameters": {
"objectParameter": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
}
}
}
additionalProperties
Az érték additionalProperties
egy típusdefiníció vagy logikai érték. Ha nincs additionalProperties
megkötés meghatározva, az alapértelmezett érték az true
.
Ha az érték típusdefiníció, az érték a kényszerben nem említett összes tulajdonságra alkalmazott sémát properties
írja le. Az alábbi példa elfogadná {"fizz": "buzz", "foo": "bar"}
, de elutasítaná {"property": 1}
.
"parameters": {
"dictionaryParameter": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
},
"additionalProperties": {
"type": "string"
}
}
}
Ha az érték az false
, a kényszerben properties
meghatározottakon túl nem adható meg tulajdonság. Az alábbi példa elfogadná {"foo": "string", "bar": 1}
, de elutasítaná {"foo": "string", "bar": 1, "fizz": "buzz"}
.
"parameters": {
"dictionaryParameter": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": false
}
}
Ha az érték az true
, a kényszerben properties
nem definiált tulajdonságok bármilyen értéket elfogadnak. Az alábbi példa elfogadná {"foo": "string", "bar": 1, "fizz": "buzz"}
a következőt.
"parameters": {
"dictionaryParameter": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": true
}
}
diszkriminatív
Az érték discriminator
határozza meg, hogy milyen sémát kell alkalmazni egy diszkriminatív tulajdonság alapján. Az alábbi példa elfogadná vagy {"type": "ints", "foo": 1, "bar": 2}
{"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}
elutasítaná {"type": "ints", "fizz": "buzz"}
.
"parameters": {
"taggedUnionParameter": {
"type": "object",
"discriminator": {
"propertyName": "type",
"mapping": {
"ints": {
"type": "object",
"additionalProperties": {"type": "int"}
},
"strings": {
"type": "object",
"additionalProperties": {"type": "string"}
}
}
}
}
}
Tömbkorlátok
A tömbkényszerítések csak tömbökön engedélyezettek, és csak a languageVersion 2.0-val használhatók.
prefixItems
Az érték prefixItems
típusdefiníciók tömbje. Az érték minden típusdefiníciója az a séma, amely egy tömb elemének ellenőrzésére szolgál ugyanazon az indexen. Az alábbi példa elfogadná [1, true]
, de elutasítja [1, "string"]
vagy [1]
:
"parameters": {
"tupleParameter": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
}
}
elemek
Az érték items
egy típusdefiníció vagy logikai érték. Ha nincs items
megkötés meghatározva, az alapértelmezett érték az true
.
Ha az érték típusdefiníció, az érték a tömb összes elemére alkalmazott sémát írja le, amelynek indexe nagyobb, mint a prefixItems
kényszer legnagyobb indexe. A következő példa elfogadná [1, true, 1]
vagy [1, true, 1, 1]
elutasítaná [1, true, "foo"]
:
"parameters": {
"tupleParameter": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
],
"items": { "type": "int" },
"defaultValue": [1, true, "foo"]
}
}
A használata prefixItems
nélkül is használhatóitems
. A következő példa elfogadná [1, 2]
vagy [1]
elutasítaná ["foo"]
:
"parameters": {
"intArrayParameter": {
"type": "array",
"items": {"type": "int"}
}
}
Ha az érték az false
, az érvényesített tömbnek pontosan ugyanolyan hosszúságúnak kell lennie, mint a prefixItems
kényszernek. Az alábbi példa elfogadná[1, true]
, de elutasítaná és elutasítaná[1, true, 1]
.[1, true, false, "foo", "bar"]
"parameters": {
"tupleParameter": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
],
"items": false
}
}
Ha az érték igaz, a tömb azon elemei, amelyek indexe nagyobb, mint a prefixItems
kényszer legnagyobb indexe, bármilyen értéket elfogadnak. Az alábbi példák elfogadnák és [1, true, 1]
elfogadnák [1, true]
azokat[1, true, false, "foo", "bar"]
.
"parameters": {
"tupleParameter": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
}
}
"parameters": {
"tupleParameter": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
},
"items": true
}
null értékű kényszer
A null értékű kényszer csak a languageVersion 2.0-val használható. Azt jelzi, hogy az érték kihagyható vagy elhagyható null
. Példa: Tulajdonságok .
Leírás
Egy paraméterhez leírást is hozzáadhat, amely segít a sablon felhasználóinak megérteni a megadható értéket. Amikor a sablont a portálon keresztül telepíti, a leírásban megadott szöveg automatikusan a paraméter tippjeként lesz használva. Csak akkor adjon hozzá leírást, ha a szöveg több információt tartalmaz, mint amennyit a paraméter nevéből lehet következtetni.
"parameters": {
"virtualMachineSize": {
"type": "string",
"metadata": {
"description": "Must be at least Standard_A3 to support 2 NICs."
},
"defaultValue": "Standard_DS1_v2"
}
}
Paraméter használata
Egy paraméter értékére való hivatkozáshoz használja a paraméterfüggvényt . Az alábbi példa egy paraméterértéket használ egy kulcstartónévhez.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vaultName": {
"type": "string",
"defaultValue": "[format('keyVault{0}', uniqueString(resourceGroup().id))]"
}
},
"resources": [
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-06-01-preview",
"name": "[parameters('vaultName')]",
...
}
]
}
Objektumok paraméterekként
A kapcsolódó értékeket úgy rendszerezheti, hogy objektumként adja át őket. Ez a módszer a sablonban lévő paraméterek számát is csökkenti.
Az alábbi példa egy objektumnak számító paramétert mutat be. Az alapértelmezett érték az objektum várt tulajdonságait jeleníti meg. Ezeket a tulajdonságokat a rendszer az üzembe helyezendő erőforrás meghatározásakor használja.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vNetSettings": {
"type": "object",
"defaultValue": {
"name": "VNet1",
"location": "eastus",
"addressPrefixes": [
{
"name": "firstPrefix",
"addressPrefix": "10.0.0.0/22"
}
],
"subnets": [
{
"name": "firstSubnet",
"addressPrefix": "10.0.0.0/24"
},
{
"name": "secondSubnet",
"addressPrefix": "10.0.1.0/24"
}
]
}
}
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-02-01",
"name": "[parameters('vNetSettings').name]",
"location": "[parameters('vNetSettings').location]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('vNetSettings').addressPrefixes[0].addressPrefix]"
]
},
"subnets": [
{
"name": "[parameters('vNetSettings').subnets[0].name]",
"properties": {
"addressPrefix": "[parameters('vNetSettings').subnets[0].addressPrefix]"
}
},
{
"name": "[parameters('vNetSettings').subnets[1].name]",
"properties": {
"addressPrefix": "[parameters('vNetSettings').subnets[1].addressPrefix]"
}
}
]
}
}
]
}
Példasablonok
Az alábbi példák a paraméterek használatára vonatkozó forgatókönyveket mutatják be.
Sablon | Leírás |
---|---|
paraméterek az alapértelmezett értékek függvényeivel | Bemutatja, hogyan használhatók sablonfüggvények a paraméterek alapértelmezett értékeinek definiálásakor. A sablon nem helyez üzembe erőforrásokat. Paraméterértékeket hoz létre, és visszaadja ezeket az értékeket. |
paraméterobjektum | Egy objektum paraméterhez való használatát mutatja be. A sablon nem helyez üzembe erőforrásokat. Paraméterértékeket hoz létre, és visszaadja ezeket az értékeket. |
Következő lépések
- A paraméterek elérhető tulajdonságairól az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakörben olvashat.
- A paraméterértékek fájlként való átadásáról a Resource Manager paraméterfájl létrehozása című témakörben olvashat.
- A paraméterek létrehozásával kapcsolatos javaslatokért tekintse meg az ajánlott eljárásokat – paramétereket.