我正在使用arm模板在Azure中创建一个或多个公共IP地址。地址数取决于用户提供的参数。
我正在使用以下代码段来执行此操作
"resources": [
{
"type": "Microsoft.Network/publicIPAddresses",
"name": "[concat(parameters('publicIPAddressesName'), '-', copyIndex())]",
"apiVersion": "2017-10-01",
"location": "[parameters('location')]",
"copy": {
"name": "publicIPAddressesCopy",
"count": "[parameters('publicIPAddressesCount')]"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static",
"idleTimeoutInMinutes": 4
}
},
...
],
我可以使用以下代码段输出几个IP地址
"outputs": {
"publicIPs": {
"type": "object",
"value": {
"VM-1": {
"publicIP": "[reference(resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('publicIPAddressesName'), '-1')), '2017-10-01').ipAddress]"
},
"VM-2": {
"publicIP": "[reference(resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('publicIPAddressesName'), '-2')), '2017-10-01').ipAddress]"
},
}
}
}
这不是很有用,因为可以有少于或多于2个新的公共IP地址。问题是我无法在模板的输出部分使用循环。
我如何输出所有创建的公共IP地址,知道它们的数量会在每个模板运行之间发生变化?
答案 0 :(得分:1)
今天唯一的方法是在嵌套部署上使用复制循环,并根据copyIndex()在每个部署中输出一个IP地址。