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

foc*_*ode 4 azure terraform azure-app-service-envrmnt azure-rm-template

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

这是 terraform 脚本的片段:

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"
  }
  }
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Pir*_*ggs 8

现在可以使用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}"
}
Run Code Online (Sandbox Code Playgroud)


Ada*_*Eri 6

我发现它有点复杂......

  1. DNS 区域(然后在注册商处设置名称服务器)
  2. 应用服务
  3. 域名验证TXT记录
  4. CNAME记录
  5. 主机名绑定
  6. 证书绑定 (SSL)
resource "azurerm_dns_zone" "dns-zone" {
  name                = var.azure_dns_zone
  resource_group_name = var.azure_resource_group_name
}

resource "azurerm_linux_web_app" "app-service" {
  name                = "some-service"
  resource_group_name = var.azure_resource_group_name
  location            = var.azure_region
  service_plan_id = "some-plan"
  site_config {}
}

resource "azurerm_dns_txt_record" "domain-verification" {
  name                = "asuid.api.domain.com"
  zone_name           = var.azure_dns_zone
  resource_group_name = var.azure_resource_group_name
  ttl                 = 300

  record {
    value = azurerm_linux_web_app.app-service.custom_domain_verification_id
  }
}

resource "azurerm_dns_cname_record" "cname-record" {
  name                = "domain.com"
  zone_name           = azurerm_dns_zone.dns-zone.name
  resource_group_name = var.azure_resource_group_name
  ttl                 = 300
  record              = azurerm_linux_web_app.app-service.default_hostname

  depends_on = [azurerm_dns_txt_record.domain-verification]
}

resource "azurerm_app_service_custom_hostname_binding" "hostname-binding" {
  hostname            = "api.domain.com"
  app_service_name    = azurerm_linux_web_app.app-service.name
  resource_group_name = var.azure_resource_group_name

  depends_on = [azurerm_dns_cname_record.cname-record]
}

resource "azurerm_app_service_managed_certificate" "example" {
  custom_hostname_binding_id = azurerm_app_service_custom_hostname_binding.hostname-binding.id
}

resource "azurerm_app_service_certificate_binding" "example" {
  hostname_binding_id = azurerm_app_service_custom_hostname_binding.hostname-binding.id
  certificate_id      = azurerm_app_service_managed_certificate.example.id
  ssl_state           = "SniEnabled"
}
Run Code Online (Sandbox Code Playgroud)


Shu*_*bao -1

这不可能。您可以通过您提供的链接。如果参数不存在,则 terraform 不支持该参数。

您需要在 Azure 门户上执行此操作。