Azure:无法在IF条件

时间:2018-06-08 21:32:36

标签: azure azure-virtual-network azure-template

我正在尝试使用带有多个子网的ARM模板部署虚拟网络。我有一个链接模板,它创建NSG,路由表并将其分配给特定的子网。我正在使用copy来创建多个子网。路由表应仅分配给一个特定的子网。我使用If条件控制它。这里的问题是我无法在If条件中使用链接模板输出。它失败并出现以下错误。

  

“{     “错误”:{       “code”:“InvalidTemplate”,       “message”:“无法处理资源的模板语言表达式   '/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks/'在'143'行和'9'列。 '提供   模板语言函数'if'的参数无效:所有参数都应为'boolean'类型。有关使用详情,请参阅https://aka.ms/arm-template-expressions#if。'“     }   }“

主要模板(子网创建代码段): -

"copy": [
      {
        "name": "subnets",
        "count": "[length(parameters('subnetList'))]",
        "input": {
          "name": "[parameters('subnetList')[copyIndex('subnets')].name]",
          "properties": {
            "addressPrefix": "[parameters('subnetList')[copyIndex('subnets')].addressprefix]",
            "networkSecurityGroup": "[if(equals(parameters('subnetList')[copyIndex('subnets')].name, 'GatewaySubnet'), json('null'), variables('nsgId'))]",
            "routeTable": "[if(bool(parameters('subnetList')[copyIndex('subnets')].useRouteTable), reference('routeTableDeployment').outputs.resourceID.value, json('null'))]"
          }
        }
      }
    ]

路线表(输出摘录): -

 "outputs": {
    "resourceID": {
        "type": "object",
        "value": {
            "id": "[resourceId('Microsoft.Network/routeTables', variables('routeTableName')]"
        }
    }
}

如果我定义一个变量并将其传递给条件类似于nsg,则它可以工作,如下所示: -

"routeTableId": {
  "id": "[resourceId('Microsoft.Network/routeTables', 'routeTableName')]"
}

"routeTable": "[if(bool(parameters('subnetList')[copyIndex('subnets')].useRouteTable), variables('routeTableId'), json('null'))]"

0 个答案:

没有答案