是否可以使用 Terraform 将新的侦听器、后端地址池和请求路由规则添加到现有的 Azure 应用程序网关?

D.L*_*Lee 5 terraform azure-application-gateway

我的用例是多个具有不同生命周期的 AppService 应用程序位于单个应用程序网关后面。每当我添加新应用程序时,我想添加一个新的侦听器、新的多站点路由规则和一个新的后端池,而无需拆除并重新创建网关。

最初,我的计划是为共享基础设施提供一个 Terraform 配置,该配置创建一个框架应用程序网关,然后使用单独的特定于应用程序的 Terraform 配置来为每个应用程序添加侦听器、后端地址池和路由规则到此网关。但用 TF 似乎不可能完成。

我可以使用 Azure CLI 或 Portal 将侦听器、路由规则和后端池清楚地添加到现有网关。有没有办法用 Terraform 来做到这一点?

小智 -2

以下是Terraform 中用于管理 Azure 应用程序网关的参考文档。您可以参考此示例代码向现有应用程序网关添加新的侦听器、路由规则以及后端池。该模板包含所有必需的参数,例如,

http_listener -(必需)一个或多个 http_listener 块。

http_listener {
    name                           = "https-listener-1"
    frontend_ip_configuration_name = "feip"    
    frontend_port_name             = "http-port"
    protocol                       = "Http"
}
Run Code Online (Sandbox Code Playgroud)

request_routing_rule - (必需)一个或多个 request_routing_rule 块。

  request_routing_rule {
    name                       = "${local.request_routing_rule_name}"
    rule_type                  = "Basic"
    http_listener_name         = "${local.listener_name}"
    backend_address_pool_name  = "${local.backend_address_pool_name}"
    backend_http_settings_name = "${local.http_setting_name}"
  }
}
Run Code Online (Sandbox Code Playgroud)

backend_address_pool -(必需)一个或多个 backend_address_pool 块,如下定义。

  backend_address_pool {
    name = "${local.backend_address_pool_name}"
  }
Run Code Online (Sandbox Code Playgroud)

  • 这并不能回答我关于将这些组件添加到**现有**网关**而不**拆除并重建它的问题。假设您有一个网关。现在在不同的 Terraform 配置中,我想添加一个新的侦听器。除了其名称/ID/资源组之外,我不想了解有关此网关的任何信息。除了添加这个新的侦听器之外,我不想更改此网关的任何内容。因此,必须在这个单独的配置中完全描述网关只是为了添加侦听器并不是我正在寻找的选项 (3认同)