Változó iterációja ARM-sablonokban
Ez a cikk bemutatja, hogyan hozhat létre egynél 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 egy változó elemeinek számát az üzembe helyezés során. A sablonszintaxis megismé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 ugyanazokat a képességeket kínálja, mint az ARM-sablonok, és a szintaxis használata is egyszerűbb. További információ: hurkok.
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 bármely érték, amely azonosítja a hurkot. A count
tulajdonság határozza meg a változóhoz használni kívánt iterációk számát.
A input
tulajdonság határozza meg az megismételni kívánt tulajdonságokat. A tulajdonság értékéből létrehozott elemek tömbje input
. 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-t.
A szám nem lehet negatív szám. Ez nulla lehet, ha a sablont az Azure CLI, a PowerShell vagy a REST API legújabb verziójával helyezi üzembe. Konkrétan a következőket kell használnia:
- Azure PowerShell 2.6-os vagy újabb verzió
- Azure CLI 2.0.74 vagy újabb
- A REST API 2019-05-10-es vagy újabb verziója
- A csatolt üzemelő példányoknakaz 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
}
]
Megjegyzés
A változó iteráció támogatja az eltolás argumentumot. Az eltolásnak az iteráció neve után kell lennie, 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.
A változón copy
belüli elemet is használhatja. 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ó több értékének létrehozására.
Sablon | Description |
---|---|
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. A biztonsági szabályokat egy paraméterből hozza létre. A paraméterhez tekintse meg a több NSG-paraméterfájlt. |
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óanyagok megtekintéséhez lásd : Oktatóanyag: 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, tekintse meg az ARM-sablonok szerkezetének és szintaxisának megismerését ismertető cikket.
- A sablon üzembe helyezéséről az Erőforrások üzembe helyezése ARM-sablonokkal és Azure PowerShell című témakörben olvashat.