如何输出循环中创建的资源

时间:2018-03-13 20:46:08

标签: azure azure-resource-manager arm-template

我正在使用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地址,知道它们的数量会在每个模板运行之间发生变化?

1 个答案:

答案 0 :(得分:1)

今天唯一的方法是在嵌套部署上使用复制循环,并根据copyIndex()在每个部署中输出一个IP地址。

相关问题