具有现有后端IP的Azure应用程序网关

时间:2017-04-24 19:59:23

标签: azure arm-template

我正在编写ARM模板来部署Application Gateway。 “后端”服务器已经存在且具有私有IP地址。

如果我通过门户网站创建应用程序网关。我可以选择我想要成为后端池一部分的VM。我试图在ARM模板中创建它,但我没有任何成功。 ARM模板部署没有任何错误,但是当我检查后端池时,没有任何资源与它绑定。

以下是我的ARM模板的适用部分:

"backendAddressPools": [
          {
            "name": "PublishPool",
            "properties": {
              "backendIPConfigurations": [
                {
                  "id": "[resourceId('Microsoft.Network/networkInterfaces/ipConfigurations', parameters('networkInterfaceName'), parameters('ipConfigurationName'))]"
                }
              ],              
            }
          }
        ]

我已经设法通过使用IP地址本身来实现它(如果你走这条路线,JSON看起来有点不同),但是如果IP地址改变的话,这可能会导致问题;我宁愿使用对网络接口本身的引用。

2 个答案:

答案 0 :(得分:0)

  

Microsoft.Network/networkInterfaces/ipConfigurations',   参数('networkInterfaceName'),参数('ipConfigurationName'))

如果您这样使用,Azure无法找到您的NIC。你可以查看Azure Resource Explorer。您可以找到如下所示的备份池配置:

  "backendIPConfigurations": [
                {
                  "id": "/subscriptions/****/resourceGroups/shuitest/providers/Microsoft.Network/networkInterfaces/shui1482/ipConfigurations/ipconfig1"
                }
              ],

所以,你应该修改你的json,如下所示:

properties": {
              "backendIPConfigurations": [
                {
                  "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'), 'ipConfigurations',parameters('ipConfigurationName'))]"
                }
              ],         

答案 1 :(得分:0)

我在这里参加派对很晚,但我希望这有助于未来的互联网旅行者。

这是非常不明显的,但你必须在接口配置中定义后端池

这是我的ARM模板,为我想要添加到后端池的接口配置IP配置:

"properties": {
    "privateIPAllocationMethod": "Dynamic",
    "subnet": {
        "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', variables('clientNetworkName')), '/subnets/', variables('clientPriSubnetName'))]"
    },
    "applicationGatewayBackendAddressPools": [
        {
            "id": "[concat(resourceId('Microsoft.Network/applicationGateways', variables('appGWName')), '/backendAddressPools/appGatewayBackendPool')]"
        }
    ]
}

(请注意解析我的应用程序网关的资源ID的applicationGatewayBackendAddressPools部分。)

然后在ARM模板部分中为网关后端池本身:

"backendAddressPools": [{
    "name": "appGatewayBackendPool",
    "properties": {
        "backendIPConfigurations" : [
            {
                "id": "[concat(resourceId('Microsoft.Network/networkInterfaces',concat('networkInterface-',variables('webBaseName'),'1-pri')),'/ipConfigurations/ipconfig1')]"
            },
            {
                "id": "[concat(resourceId('Microsoft.Network/networkInterfaces',concat('networkInterface-',variables('webBaseName'),'2-pri')),'/ipConfigurations/ipconfig1')]"
            }
        ]
    }                   
}],

这会向后端池添加两个接口(标识为networkInterface-client-web01-prinetworkInterface-client-web02-pri)。

感谢this GitHub issue让我指出了正确的方向,并且感谢微软几乎没有任何关于此的文档显然已经有几年了。