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

5m1hhzi4  于 2023-06-06  发布在  其他
关注(0)|答案(4)|浏览(151)

我正在通过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"
  }
  }

我需要子域,以及我的应用程序服务,我无法找到任何帮助terraform:
到目前为止,应用程序服务的URL是:https://abc.azure-custom-domain.cloud
我希望我的URL是:https://*. abc.azure-custom-domain.cloud
我知道这可以通过门户网站完成,但他们的任何方式,我们可以通过terraform?

luaexgnf

luaexgnf1#

现在可以使用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}"
}
e5nqia27

e5nqia272#

我发现它比你想象中的...

  1. DNS区域(然后在注册商处设置名称服务器)
    1.应用服务
    1.域验证TXT记录
  2. CNAME记录
    1.主机名绑定
    1.证书绑定(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"
}
des4xlb0

des4xlb03#

这不可能。您可以使用您提供的link。如果参数不在中,则terraform不支持该参数。
您需要在Azure Portal上执行此操作。

doinxwow

doinxwow4#

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

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

重要提示:请确保配置DNSFIRST,即CNAME或TXT记录,否则PSHell &甚至Azure Portal手动方法也会失败。

相关问题