Paraméterek ARM-sablonokban
Ez a cikk azt ismerteti, hogyan definiálhat és használhat paramétereket az Azure Resource Manager-sablonban (ARM-sablonban). Ha különböző értékeket ad meg a paramétereknek, a sablonokat újra felhasználhatja a különböző környezetekhez.
Resource Manager az üzembehelyezési műveletek megkezdése előtt feloldja a paraméterértékeket. Bárhol is használja a paramétert a sablonban, Resource Manager lecseréli a feloldott értékre.
Minden paramétert az egyik adattípusra kell beállítani.
A minValue, a maxValue, a minLength, a maxLength és az allowedValues mellett a languageVersion 2.0 a definíciók, paraméterek és kimenetek definícióiban használandó összesítő típusú érvényesítési korlátozásokat is tartalmaz. Ezek a kényszerek a következők:
Megjegyzé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 ugyanazokat a képességeket kínálja, mint az ARM-sablonok, és a szintaxis használata is egyszerűbb. További információért tekintse meg a paramétereket.
Egy sablonban legfeljebb 256 paraméter szerepelhet. További információ: Sablonkorlátok.
A paraméterekkel kapcsolatos ajánlott eljárásokért lásd: Paraméterek.
Minimális deklaráció
Legalább minden paraméternek nevet és típust kell megadnia.
Amikor sablont helyez üzembe a Azure Portal keresztül, a camel-cased paraméternevek szóközzel elválasztott nevekké lesznek alakítva. Az alábbi példában a demoString például Demo Stringként jelenik meg. További információ: Sablonok üzembe helyezése a GitHub-adattárból üzembe helyezési gombbal és Erőforrások üzembe helyezése ARM-sablonokkal és Azure Portal.
"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 rendszer nem menti a biztonságos paraméter értékét az üzembe helyezési előzményekbe, és nincs naplózva.
"parameters": {
"demoPassword": {
"type": "secureString"
},
"demoSecretObject": {
"type": "secureObject"
}
}
Megengedett értékek
Egy 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 a paraméternek olyan értéket ad át, amely nem az engedélyezett értékek egyike.
"parameters": {
"demoEnum": {
"type": "string",
"allowedValues": [
"one",
"two"
]
}
}
Alapértelmezett érték
Megadhat egy alapértelmezett értéket egy paraméterhez. Az alapértelmezett értéket akkor használja a rendszer, ha az üzembe helyezés során nem ad meg értéket.
"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 használhat kifejezéseket. 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ó 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ék használatával létrehozhat egy alapértelmezett értéket. 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')]"
}
}
Hosszkorlátozások
Megadhatja a sztring- és tömbparaméterek minimális és maximális hosszát. Beállíthat egy vagy mindkét kényszert. 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ámokra vonatkozó korlátozások
Beállíthatja az egész számparaméterek minimális és maximális értékeit. Beállíthat egy vagy mindkét kényszert.
"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éke properties
a tulajdonságnév =>típusdefiníció leképezése.
Az alábbi példa elfogadná {"foo": "string", "bar": 1}
a , de elutasítaná {"foo": "string", "bar": -1}
a , {"foo": "", "bar": 1}
vagy bármely objektumot foo
, amely nem rendelkezik vagy bar
tulajdonságmal.
"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"nullable": true constraint (igaz kényszer). Ha az előző példában mindkét tulajdonságot opcionálissá szeretné tenni, 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
A értéke additionalProperties
típusdefiníció vagy logikai érték. Ha nincs additionalProperties
megkötés definiálva, az alapértelmezett érték a .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}
a következőt: .
"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 , false
a kényszerben properties
meghatározottakon túl nem adható meg tulajdonság. Az alábbi példa elfogadná {"foo": "string", "bar": 1}
a elemet, de elutasítaná a következőt {"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 , true
a properties
kényszerben nem definiált bármely tulajdonság bármilyen értéket elfogad. Az alábbi példa a következőt fogadná el {"foo": "string", "bar": 1, "fizz": "buzz"}
: .
"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á a {"type": "ints", "foo": 1, "bar": 2}
vagy a értéket {"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}
, de elutasítaná a következőt {"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átozások
A tömbkorlátozások csak tömbökön engedélyezettek, és csak a languageVersion 2.0-val használhatók.
prefixItems
Az értéke 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ítaná [1, "string"]
vagy [1]
:
"parameters": {
"tupleParameter": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
}
}
elemek
A értéke items
típusdefiníció vagy logikai érték. Ha nincs items
megkötés definiálva, az alapértelmezett érték a .true
Ha az érték típusdefiníció, az érték a tömb minden olyan elemére alkalmazott sémát írja le, amelynek indexe nagyobb, mint a prefixItems
kényszer legnagyobb indexe. Az alábbi példa elfogadná [1, true, 1]
vagy [1, true, 1, 1]
elutasítaná [1, true, "foo"]
a következőt:
"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
. Az alábbi példa elfogadná [1, 2]
vagy [1]
elutasítaná ["foo"]
a következőt:
"parameters": {
"intArrayParameter": {
"type": "array",
"items": {"type": "int"}
}
}
Ha az false
érték , az ellenőrzött tömbnek pontosan a kényszerével megegyező hosszúságúnak prefixItems
kell lennie. Az alábbi példa elfogadná [1, true]
, de elutasítaná [1, true, 1]
a és [1, true, false, "foo", "bar"]
a elemet.
"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 a és a elemet fogadják el [1, true]
[1, true, 1]
[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
}
nullable constraint
A nullable constraint csak languageVersion 2.0-val használható. Azt jelzi, hogy az érték elhagyható vagy elhagyható null
. Példa: Tulajdonságok .
Description
Leírást adhat hozzá egy paraméterhez, hogy segítsen a sablon felhasználóinak megérteni a megadható értéket. Amikor üzembe helyezi a sablont a portálon keresztül, a leírásban megadott szöveg automatikusan az adott 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 amennyi a paraméter nevéből kikövetkezésre következtethető.
"parameters": {
"virtualMachineSize": {
"type": "string",
"metadata": {
"description": "Must be at least Standard_A3 to support 2 NICs."
},
"defaultValue": "Standard_DS1_v2"
}
}
Paraméter használata
Ha egy paraméter értékére szeretne hivatkozni, 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éterké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 | Description |
---|---|
paraméterek az alapértelmezett értékek függvényeivel | Bemutatja, hogyan használhat sablonfüggvényeket a paraméterek alapértelmezett értékeinek meghatározásakor. A sablon nem helyez üzembe erőforrásokat. Paraméterértékeket állít össze, és visszaadja ezeket az értékeket. |
paraméterobjektum | Bemutatja, hogy egy objektumot használ-e egy paraméterhez. A sablon nem helyez üzembe erőforrásokat. Paraméterértékeket állít össze, é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 további információt a Create Resource Manager parameter file (Resource Manager paraméterfájl létrehozása) című témakörben talál.
- A paraméterek létrehozásával kapcsolatos javaslatokért lásd: Ajánlott eljárások – paraméterek.