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

标签 azure azure-rm-template

我正在编写一个 ARM 模板来部署应用程序网关。 “后端”服务器已经存在并拥有私有(private) IP 地址。

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

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

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

我已经设法通过使用 IP 地址本身来让它工作(如果您采用该路线,JSON 看起来会有点不同),但如果 IP 地址以后发生变化,这可能会导致问题;我宁愿使用对网络接口(interface)本身的引用。

最佳答案

我参加聚会迟到了,但我希望这对 future 的互联网旅行者有所帮助。

这非常不明显,但您还必须在接口(interface)配置中定义后端池

这是我的 ARM 模板,为我要添加到后端池的接口(interface)配置 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')]"
        }
    ]
}

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

然后在网关后端池本身的 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')]"
            }
        ]
    }                   
}],

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

感谢this GitHub issue您为我指明了正确的方向,并且不感谢 Microsoft 显然几年来根本没有任何有关此问题的文档。

关于具有现有后端 IP 的 Azure 应用程序网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43596719/

相关文章:

c# - 将 Azure 中的字符串格式应用于 TextBlock

azure - 通过 ARM 模板在 Azure Web App 中为容器启用持续部署

azure - ARM模板: how to use the exported template. json和parameters.json文件?

azure - 如何通过 'Complete' 模式部署到 Azure 来忽略锁定的资源?

azure - 在哪里可以查看 Azure 资源管理器模板资源的所有可能属性?

visual-studio - 嵌套逻辑应用程序 - 在 Visual Studio 中参数化工作流 ID 时出错

json - 重启后继续 Linux 自定义脚本 - Azure ARM 模板

azure - 如何启用从 Azure APIM 到具有专用终结点的应用服务的请求

plugins - azure 媒体服务 - 如何保护我的视频 URL 不被用户下载?

c# - 如何从 Azure 移动服务获取请求返回所有行?