У меня есть шаблон 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'))]"
}
]
}
}
],
Однако я получаю ошибку проверки шаблона, в которой говорится, что я не могу использовать функцию Reference в разделе Variables.Если я не добавлю его в раздел переменных, как я могу построить правильные пути для пула и pathRule в разделе переменных?