Változók ARM-sablonokban
Ez a cikk azt ismerteti, hogyan definiálhat és használhat változókat az Azure Resource Manager-sablonban (ARM-sablon). Változókkal egyszerűsítheti a sablont. Ahelyett, hogy bonyolult kifejezéseket ismételnél meg a sablonban, definiálni kell egy változót, amely tartalmazza a bonyolult kifejezést. Ezt követően szükség szerint használhatja a változót a sablonban.
Resource Manager feloldja a változókat az üzembehelyezési műveletek megkezdése előtt. Mindenhol, ahol a sablonban a változót kell használni, a Resource Manager lecseréli a változót a feloldott értékre.
Tipp
Azért javasoljuk a Bicep használatát, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információ: változók.
Egy sablonban legfeljebb 256 változó szerepelhet. További információ: Sablonkorlátok.
Változó definiálása
Változó definiálásakor nem ad meg adattípust a változóhoz. Ehelyett adjon meg egy értéket vagy sablonkifejezést. A változó típusa a feloldott értékből lesz levonva. Az alábbi példa egy változót egy sztringre állít be.
"variables": {
"stringVar": "example value"
},
A változó létrehozásához használhatja egy paraméter vagy egy másik változó értékét.
"parameters": {
"inputValue": {
"defaultValue": "deployment parameter",
"type": "string"
}
},
"variables": {
"stringVar": "myVariable",
"concatToVar": "[concat(variables('stringVar'), '-addtovar') ]",
"concatToParam": "[concat(parameters('inputValue'), '-addtoparam')]"
}
Sablonfüggvényekkel létrehozhatja a változó értékét.
Az alábbi példa sztringértéket hoz létre egy tárfióknévhez. Több sablonfüggvényt használ a paraméterérték lekéréséhez, és összefűzi egy egyedi sztringgel.
"variables": {
"storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},
A referenciafüggvényt vagy a listafüggvényeket nem használhatja a változó deklarációjában. 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 változók feloldásakor.
Változó használata
Az alábbi példa bemutatja, hogyan használhatja a változót egy erőforrástulajdonsághoz.
A változó értékére való hivatkozáshoz használja a változók függvényt .
"variables": {
"storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageName')]",
...
}
]
Példasablon
Az alábbi sablon nem helyez üzembe erőforrásokat. A különböző típusú változók deklarálásának néhány módját mutatja be.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"inputValue": {
"defaultValue": "deployment parameter",
"type": "string"
}
},
"variables": {
"stringVar": "myVariable",
"concatToVar": "[concat(variables('stringVar'), '-addtovar') ]",
"concatToParam": "[concat(parameters('inputValue'), '-addtoparam')]",
"arrayVar": [
1,
2,
3,
4
],
"objectVar": {
"property1": "value1",
"property2": "value2"
},
"copyWithinVar": {
"copy": [
{
"name": "disks",
"count": 5,
"input": {
"name": "[concat('myDataDisk', copyIndex('disks', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('disks')]"
}
},
{
"name": "diskNames",
"count": 5,
"input": "[concat('myDataDisk', copyIndex('diskNames', 1))]"
}
]
},
"copy": [
{
"name": "topLevelCopy1",
"count": 5,
"input": {
"name": "[concat('oneDataDisk', copyIndex('topLevelCopy1', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('topLevelCopy1')]"
}
},
{
"name": "topLevelCopy2",
"count": 3,
"input": {
"name": "[concat('twoDataDisk', copyIndex('topLevelCopy2', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('topLevelCopy2')]"
}
},
{
"name": "topLevelCopy3",
"count": 4,
"input": "[concat('stringValue', copyIndex('topLevelCopy3'))]"
},
{
"name": "topLevelCopy4",
"count": 4,
"input": "[copyIndex('topLevelCopy4')]"
}
]
},
"resources": [],
"outputs": {
"stringOutput": {
"type": "string",
"value": "[variables('stringVar')]"
},
"concatToVariableOutput": {
"type": "string",
"value": "[variables('concatToVar')]"
},
"concatToParameterOutput": {
"type": "string",
"value": "[variables('concatToParam')]"
},
"arrayOutput": {
"type": "array",
"value": "[variables('arrayVar')]"
},
"arrayElementOutput": {
"type": "int",
"value": "[variables('arrayVar')[0]]"
},
"objectOutput": {
"type": "object",
"value": "[variables('objectVar')]"
},
"copyWithinVariableOutput": {
"type": "object",
"value": "[variables('copyWithinVar')]"
},
"topLevelCopyOutput1": {
"type": "array",
"value": "[variables('topLevelCopy1')]"
},
"topLevelCopyOutput2": {
"type": "array",
"value": "[variables('topLevelCopy2')]"
},
"topLevelCopyOutput3": {
"type": "array",
"value": "[variables('topLevelCopy3')]"
},
"topLevelCopyOutput4": {
"type": "array",
"value": "[variables('topLevelCopy4')]"
}
}
}
Konfigurációs változók
Definiálhat olyan változókat, amelyek a környezet konfigurálásához kapcsolódó értékeket tartalmaznak. A változót objektumként definiálja az értékekkel. Az alábbi példa egy olyan objektumot mutat be, amely két környezet értékeit tartalmazza – teszt és prod. Adja meg ezeket az értékeket az üzembe helyezés során.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environmentName": {
"type": "string",
"allowedValues": [
"test",
"prod"
],
"metadata": {
"description": "Specify either test or prod for configuration values."
}
}
},
"variables": {
"environmentSettings": {
"test": {
"instanceSize": "Small",
"instanceCount": 1
},
"prod": {
"instanceSize": "Large",
"instanceCount": 4
}
}
},
"resources": [],
"outputs": {
"instanceSize": {
"value": "[variables('environmentSettings')[parameters('environmentName')].instanceSize]",
"type": "string"
},
"instanceCount": {
"value": "[variables('environmentSettings')[parameters('environmentName')].instanceCount]",
"type": "int"
}
}
}
Következő lépések
- A változók elérhető tulajdonságairól az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakörben olvashat.
- A változók létrehozásával kapcsolatos javaslatokért lásd: Ajánlott eljárások – változók.
- Egy olyan példasablonért, amely biztonsági szabályokat rendel egy hálózati biztonsági csoporthoz, tekintse meg a hálózati biztonsági szabályokat és a paraméterfájlt.