繁体   English   中英

是否可以与应用程序网关分开配置后端地址池

[英]Is it possible to provision backend address pool separately from application gateway

我想为我的基础设施提供 terraform 并拥有一些共享的基础设施。 例如,有 1 个共享应用程序网关和多个特定于应用程序的 web 应用程序位于其后面。

是否可以通过单独的 terraform 项目来提供它?

  1. 用于共享基础设施的 terraform 项目 - 创建一个空的/默认的应用程序网关。
  2. 其他项目将创建一个 web 应用程序和一些额外的配置共享应用程序 gw - backend_address_pool、probe、backend_http_settings 等。

无法在文档中找到如何做到这一点。 有这个 - application_gateway示例,其中所有内容都在 1 go 中提供,然后是 - network_interface_application_gateway_backend_address_pool_association ,您可以在其中在应用程序网关和网络接口之间建立关联,但不能在 webapp 之间建立关联。

编辑

稍微扩展一下我想要实现的目标 - 应用程序网关将成为整个非生产环境(因此“共享”)的一个应用程序网关,并且可以节省成本。 在它背后我想为多个环境配置多个应用程序,例如“Accounts.DEV”、“Accounts.UAT”、“Calculator.Dev”等。希望这能让我的意图更清晰一些。

现在我正在尝试在共享项目中创建空的应用程序网关(使用默认池、前端配置和规则)。 然后,在每个应用程序部署之后运行一些额外的az cli逻辑( 文档)。

可以分别配置应用程序网关和 Web 应用程序。

默认情况下,这个application_gateway示例创建一个空的后端池,没有任何目标,具有一个默认 HTTP 设置、一个 80 端口的侦听器以及此后端池的基本规则。 当您希望将后端 Web 应用关联到此应用程序网关之后,您需要将 Web 应用的default_site_hostname定位到后端池并修改一些特定配置以匹配您的后端 Web 应用。

例如,

azurerm_app_service项目中,您可以在预配时为应用服务添加default_site_hostname的值或使用数据源访问现有应用服务。

output "default_site_hostname" {
  value = "${azurerm_app_service.test.default_site_hostname}"
}

azurerm_application_gateway项目中,您可以将default_site_hostname的值添加到fqdns ,然后将后端池与其关联。

# since these variables are re-used - a locals block makes this more maintainable
locals {
  backend_address_pool_name      = "${azurerm_virtual_network.test.name}-beap"
  frontend_port_name             = "${azurerm_virtual_network.test.name}-feport"
  frontend_ip_configuration_name = "${azurerm_virtual_network.test.name}-feip"
  http_setting_name              = "${azurerm_virtual_network.test.name}-be-htst"
  listener_name                  = "${azurerm_virtual_network.test.name}-httplstn"
  request_routing_rule_name      = "${azurerm_virtual_network.test.name}-rqrt"
  redirect_configuration_name    = "${azurerm_virtual_network.test.name}-rdrcfg"
  fqdns                          = ["${azurerm_app_service.test.default_site_hostname}","${data.azurerm_app_service.example.default_site_hostname}"]
...

 backend_address_pool {
    name = "${local.backend_address_pool_name}"
    fqdns = "${local.fqdns}"
  } 

目前这在 terraform 中是不可能的,因为 Azure API 不允许逐步创建应用程序网关。 如果这对您来说是一个问题并希望对其进行更改,请为此功能请求投票。

来源: https : //github.com/terraform-providers/terraform-provider-azurerm/issues/727

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM