У меня есть шаблон ARM группы ресурсов, который я использую для создания шлюза приложений, настроенного для маршрутизации URL-адресов. Он отправляет трафик в разные веб-приложения в этой группе ресурсов на основе правил URL-адреса. Я развертываю шаблон ARM базовой группы ресурсов, а затем каждое веб-приложение имеет свой собственный шаблон ARM, который настраивает веб-приложение в плане службы приложений. Я пытаюсь понять, как добавить правило к существующей карте URL-адреса на шлюзе приложений, не определяя весь шлюз приложения в каждом шаблоне. Таким образом, я могу просто добавить веб-приложения и заставить их «зарегистрироваться» на шлюзе приложений с определенным правилом пути.
Я подумал о создании связанного шаблона, в котором мой базовый шаблон будет иметь все общие ресурсы (базы данных, план службы приложений и шлюз приложений), но даже со связанным шаблоном я не думаю, что смогу добавить правило к шлюзу приложений. .
Обновление. Итак, я изменил свой шаблон, добавив ссылку на существующий шлюз приложений, а затем добавив переменные для нового BackEndPoolAddress и нового правила пути. Это заканчивается так (сокращенно до соответствующих частей):
"variables": {
"appGateway": "[reference(concat('Microsoft.Network/applicationGateways/', 'appGateWay-', uniqueString(resourceGroup().id)), '2017-06-01')]",
"pathRule": {
"name": "[concat(parameters('websiteName'), '- RoutingRule')]",
"properties": {
"paths": [
"[parameters('routingRule')]"
],
"backendAddressPool": {
"id": "[concat(variables('appGateway').id, '/backendAddressPools/',parameters('websiteName'), 'BackEndPool')]"
},
"backendHttpSettings": {
"id": "[variables('appGateway').backendHttpSettingsCollection[0]]"
}
}
},
"backendPool": {
"name": "[concat(parameters('websiteName'), 'BackEndPool')]",
"properties": {
"IpAddress": "[reference(variables('webSiteName')).defaultHostName]"
}
}
},
"resources": [
...
{
"apiVersion": "2017-06-01",
"name": "[variables('appGateway').name]",
"type": "Microsoft.Network/applicationGateways",
"location": "[resourceGroup().location]",
"properties": {
"backendAddressPools": "[concat(variables('appGateway').backendAddressPools, variables('backendPool'))]",
"urlPathMaps": [
{
"name": "[variables('appGateway').urlPathMaps[0]]",
"pathRules": "[concat(variables('appGateway').urlPathMaps[0].pathRules, variables('pathRule'))]"
}
]
}
}
],
Однако я получаю сообщение об ошибке проверки шаблона, в котором говорится, что я не могу использовать функцию ссылки в разделе переменных. Если я не добавлю его в раздел переменных, как я могу построить правильные пути для пула и pathRule в разделе переменных?