Változó iteráció ARM-sablonokban
Ez a cikk bemutatja, hogyan hozhat létre több értéket egy változóhoz az Azure Resource Manager-sablonban (ARM-sablonban). Ha hozzáadja az copy
elemet a sablon változók szakaszához, dinamikusan beállíthatja a változó elemeinek számát az üzembe helyezés során. A sablonszintaxis ismétlését is elkerülheti.
A másolást erőforrásokkal, erőforrástulajdonságokkal és kimenetekkel is használhatja.
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 hurkokat.
Syntax
A másolási elem formátuma a következő:
"copy": [
{
"name": "<name-of-loop>",
"count": <number-of-iterations>,
"input": <values-for-the-variable>
}
]
A name
tulajdonság minden olyan érték, amely azonosítja a hurkot. A count
tulajdonság megadja a változóhoz használni kívánt iterációk számát.
A input
tulajdonság megadja az ismétlődni kívánt tulajdonságokat. A tulajdonság értékéből input
létrehozott elemekből álló tömböt hozhat létre. Ez lehet egyetlen tulajdonság (például egy sztring), vagy egy több tulajdonsággal rendelkező objektum.
Másolási korlátok
A szám nem haladhatja meg a 800-at.
A szám nem lehet negatív szám. Nulla is lehet, ha a sablont az Azure CLI, a PowerShell vagy a REST API legújabb verziójával telepíti. Konkrétan a következőt kell használnia:
- Azure PowerShell 2.6 vagy újabb
- Azure CLI 2.0.74 vagy újabb
- A REST API 2019-05-10-es vagy újabb verziója
- A csatolt üzemelő példányoknak az API 2019-05-10-es vagy újabb verzióját kell használniuk az üzembehelyezési erőforrástípushoz
A PowerShell, a CLI és a REST API korábbi verziói nem támogatják a nullát a számláláshoz.
Változó iterációja
Az alábbi példa bemutatja, hogyan hozhat létre sztringértékeket tartalmazó tömböt:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"itemCount": {
"type": "int",
"defaultValue": 5
}
},
"variables": {
"copy": [
{
"name": "stringArray",
"count": "[parameters('itemCount')]",
"input": "[concat('item', copyIndex('stringArray', 1))]"
}
]
},
"resources": [],
"outputs": {
"arrayResult": {
"type": "array",
"value": "[variables('stringArray')]"
}
}
}
Az előző sablon egy tömböt ad vissza a következő értékekkel:
[
"item1",
"item2",
"item3",
"item4",
"item5"
]
A következő példa bemutatja, hogyan hozhat létre objektumtömböt három tulajdonsággal : name
, diskSizeGB
és diskIndex
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"itemCount": {
"type": "int",
"defaultValue": 5
}
},
"variables": {
"copy": [
{
"name": "objectArray",
"count": "[parameters('itemCount')]",
"input": {
"name": "[concat('myDataDisk', copyIndex('objectArray', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('objectArray')]"
}
}
]
},
"resources": [],
"outputs": {
"arrayResult": {
"type": "array",
"value": "[variables('objectArray')]"
}
}
}
Az előző példa egy tömböt ad vissza a következő értékekkel:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
},
{
"name": "myDataDisk4",
"diskSizeGB": "1",
"diskIndex": 3
},
{
"name": "myDataDisk5",
"diskSizeGB": "1",
"diskIndex": 4
}
]
Feljegyzés
A változó iteráció támogatja az eltolás argumentumát. Az eltolásnak az iteráció neve után kell érkeznie, például copyIndex('diskNames', 1)
. Ha nem ad meg eltolásértéket, az alapértelmezés szerint 0 lesz az első példány esetében.
Az elemet egy változón belül is használhatja copy
. Az alábbi példa egy olyan objektumot hoz létre, amelynek egyik értéke egy tömb.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"itemCount": {
"type": "int",
"defaultValue": 5
}
},
"variables": {
"topLevelObject": {
"sampleProperty": "sampleValue",
"copy": [
{
"name": "disks",
"count": "[parameters('itemCount')]",
"input": {
"name": "[concat('myDataDisk', copyIndex('disks', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('disks')]"
}
}
]
}
},
"resources": [],
"outputs": {
"objectResult": {
"type": "object",
"value": "[variables('topLevelObject')]"
}
}
}
Az előző példa egy objektumot ad vissza a következő értékekkel:
{
"sampleProperty": "sampleValue",
"disks": [
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
},
{
"name": "myDataDisk4",
"diskSizeGB": "1",
"diskIndex": 3
},
{
"name": "myDataDisk5",
"diskSizeGB": "1",
"diskIndex": 4
}
]
}
A következő példa a változókkal használható copy
különböző módszereket mutatja be.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {
"disk-array-on-object": {
"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": "top-level-object-array",
"count": 5,
"input": {
"name": "[concat('myDataDisk', copyIndex('top-level-object-array', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('top-level-object-array')]"
}
},
{
"name": "top-level-string-array",
"count": 5,
"input": "[concat('myDataDisk', copyIndex('top-level-string-array', 1))]"
},
{
"name": "top-level-integer-array",
"count": 5,
"input": "[copyIndex('top-level-integer-array')]"
}
]
},
"resources": [],
"outputs": {
"exampleObject": {
"value": "[variables('disk-array-on-object')]",
"type": "object"
},
"exampleArrayOnObject": {
"value": "[variables('disk-array-on-object').disks]",
"type" : "array"
},
"exampleObjectArray": {
"value": "[variables('top-level-object-array')]",
"type" : "array"
},
"exampleStringArray": {
"value": "[variables('top-level-string-array')]",
"type" : "array"
},
"exampleIntegerArray": {
"value": "[variables('top-level-integer-array')]",
"type" : "array"
}
}
}
Példasablonok
Az alábbi példák gyakori forgatókönyveket mutatnak be egy változó egynél több értékének létrehozására.
Sablon | Leírás |
---|---|
Változók másolása | A változók iterálásának különböző módjait mutatja be. |
Több biztonsági szabály | Több biztonsági szabályt helyez üzembe egy hálózati biztonsági csoportban. Egy paraméterből hozza létre a biztonsági szabályokat. A paramétert több NSG-paraméterfájlban tekinti meg. |
Tárterület másolása változókkal | Példa egy változó iterálására és több tárfiók létrehozására. |
Következő lépések
- Az oktatóanyagot a következő oktatóanyagban tekinti át: Több erőforráspéldány létrehozása ARM-sablonokkal.
- A másolási elem egyéb felhasználási módjai:
- Ha szeretne többet megtudni egy sablon szakaszairól, olvassa el az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakört.
- A sablon üzembe helyezéséről az Erőforrások üzembe helyezése ARM-sablonokkal és az Azure PowerShell-lel című témakörben olvashat.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: