通过 terraform 为应用服务创建自定义域

Posted

技术标签:

【中文标题】通过 terraform 为应用服务创建自定义域【英文标题】:Create custom domain for app services via terraform 【发布时间】:2018-07-16 11:31:44 【问题描述】:

我正在通过 terraform 创建 azure 应用服务,并遵循此站点上的文档: https://www.terraform.io/docs/providers/azurerm/r/app_service.html

这是 terraform 脚本的 sn-p:

resource "azurerm_app_service" "app" 
  name                = "app-name"
  location            = "$azurerm_resource_group.test.location"
  resource_group_name = "$azurerm_resource_group.test.name"
  app_service_plan_id = "ommitted"

  site_config 
    java_version           = "1.8"
    java_container         = "TOMCAT"
    java_container_version = "8.5"
  
  

我的应用服务也需要子域,但我无法在 terraform 中找到任何帮助:

截至目前,应用服务的网址为: https://abc.azure-custom-domain.cloud

我希望我的网址是: https://*.abc.azure-custom-domain.cloud

我知道这可以通过门户完成,但他们有什么方法可以通过 terraform 完成吗?

【问题讨论】:

据我所知,这是不可能的。您需要在 Portal 上进行。 我将其添加为答案。希望它能帮助更多的人。 我认为使用 ARM 模板和 Terraform 的组合应该可以工作 【参考方案1】:

这是不可能的。您可以使用您提供的link。如果没有参数,则terraform不支持​​该参数。

您需要在 Azure 门户上进行。

【讨论】:

【参考方案2】:

我遇到了同样的问题,不得不在短期内使用 PowerSHell 来克服它。也许你可以让 Terraform 触发 PSHell 脚本……我还没试过!!!

PSHell 如下:-

$fqdn="www.yourwebsite.com"
$webappname="yourwebsite.azurewebsites.net"
Set-AzureRmWebApp -Name <YourAppServiceName> -ResourceGroupName <TheResourceGroupOfYourAppService> -HostNames @($fqdn,$webappname) 

重要提示:确保为您尝试设置的自定义域配置 DNS FIRST,即 CNAME 或 TXT 记录,否则 PSHell 甚至 Azure 门户手动方法都会失败。

【讨论】:

【参考方案3】:

现在可以使用app_service_custom_hostname_binding(自 2018 年 4 月 6 日 PR#1087 起)

resource "azurerm_app_service_custom_hostname_binding" "test" 
  hostname            = "www.mywebsite.com"
  app_service_name    = "$azurerm_app_service.test.name"
  resource_group_name = "$azurerm_resource_group.test.name"

【讨论】:

是否可以将其链接到应用服务插槽而不是应用服务?没有用于应用服务插槽自定义主机名绑定的模块 嗨,and_apo,有一个问题可以跟踪此功能请求:github.com/terraform-providers/terraform-provider-azurerm/… 我们使用了在拥有 arm 模板资源的问题中建议的解决方法来管理插槽主机名绑定,它似乎有效好吧。

以上是关于通过 terraform 为应用服务创建自定义域的主要内容,如果未能解决你的问题,请参考以下文章

通过 terraform 创建 Azure App 服务时抛出错误此处不应出现名为“zone_redundant”的参数

设置Go环境以创建自定义Terraform提供程序

使用 Terraform 创建一个 Azure Active Directory 自定义域

无法使用 Terraform 在自定义 VPC 中创建 Elastic Beanstalk 应用程序

如何使用 terraform 为自动创建的 GKE 集群和服务防火墙规则启用 Logconfig

Cloudwatch 自定义事件 SQS 无法正常工作