Kimeneti iteráció ARM-sablonokban
Ez a cikk bemutatja, hogyan hozhat létre egynél több értéket egy kimenethez az Azure Resource Manager-sablonban (ARM-sablonban). Ha másolási hurkot ad hozzá a sablon kimeneti szakaszához, az üzembe helyezés során dinamikusan visszaadhat néhány elemet.
A másolási ciklust erőforrásokkal, erőforrástulajdonságokkal és változókkal 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
Adja hozzá az copy
elemet a sablon kimeneti szakaszához, hogy több elemet adjon vissza. A másolási elem formátuma a következő:
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-output>
}
A count
tulajdonság megadja a kimeneti értékhez 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.
Kimenetek iterációja
Az alábbi példa változó számú tárfiókot hoz létre, és minden tárfiókhoz egy végpontot ad vissza:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageCount": {
"type": "int",
"defaultValue": 2
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"baseName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"copy": {
"name": "storagecopy",
"count": "[parameters('storageCount')]"
},
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', copyIndex(), variables('baseName'))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
],
"outputs": {
"storageEndpoints": {
"type": "array",
"copy": {
"count": "[parameters('storageCount')]",
"input": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
}
}
}
}
Az előző sablon egy tömböt ad vissza a következő értékekkel:
[
"https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"https://1storagecfrbqnnmpeudi.blob.core.windows.net/"
]
A következő példa három tulajdonságot ad vissza az új tárfiókokból.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageCount": {
"type": "int",
"defaultValue": 2
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"baseName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"copy": {
"name": "storagecopy",
"count": "[length(range(0, parameters('storageCount')))]"
},
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', range(0, parameters('storageCount'))[copyIndex()], variables('baseName'))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
],
"outputs": {
"storageInfo": {
"type": "array",
"copy": {
"count": "[length(range(0, parameters('storageCount')))]",
"input": {
"id": "[resourceId('Microsoft.Storage/storageAccounts', format('{0}{1}', copyIndex(), variables('baseName')))]",
"blobEndpoint": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).primaryEndpoints.blob]",
"status": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).statusOfPrimary]"
}
}
}
}
}
Az előző példa egy tömböt ad vissza a következő értékekkel:
[
{
"id": "/subscriptions/00000000/resourceGroups/demoGroup/providers/Microsoft.Storage/storageAccounts/0storagecfrbqnnmpeudi",
"blobEndpoint": "https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"status": "available"
},
{
"id": "/subscriptions/00000000/resourceGroups/demoGroup/providers/Microsoft.Storage/storageAccounts/1storagecfrbqnnmpeudi",
"blobEndpoint": "https://1storagecfrbqnnmpeudi.blob.core.windows.net/",
"status": "available"
}
]
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 ciklus 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.