为什么在azurerm_postgresql_flexible_server中注释private_dns_zone_id在terraform中没有效果?

问题描述 投票:0回答:1
resource "azurerm_postgresql_flexible_server" "default" {
  name                          = "${var.environment}-${var.name}-postgres-server"
  resource_group_name           = var.resource_group_name
  location                      = var.resource_group_location
  version                       = "16"
  delegated_subnet_id           = var.delegated_subnet_id
  #private_dns_zone_id           = var.private_dns_zone_id
  administrator_login           = var.admin_username
  administrator_password        = var.admin_password
  zone                          = "2"
  storage_mb                    = var.storage_mb
  sku_name                      = var.sku_name
  backup_retention_days         = 7
  public_network_access_enabled = false
  #depends_on                    = [var.private_dns_zone_id]
}

事实是,我们使用了私有 DNS 解析器。但它太贵了,所以我决定塞进绑定并告诉 Azure 网络再使用一台 DNS 服务器并删除该服务器

private_dns_zone_id
。这似乎是不可能做到的,不仅是在地球上,而且在蔚蓝中也是如此。我找不到任何文件,说可以或不可以。

有人可以回答吗?当然,删除区域是不可能的,因为这将删除与 Postgres 服务器关联的任何内容。

azure terraform terraform-provider-azure azure-dns
1个回答
0
投票

这里有两种情况。

  1. 为了避免在
    private_dns_zone_id
    部署中使用
    azurerm_postgresql_flexible_server
    ,您可以启用公共访问。这样您就不需要对私有 DNS 服务器区域使用任何虚拟网络注入。

  1. 基本上,创建 PostgreSQL 灵活服务器时专用 DNS 区域的目的是将服务器主机名解析为其虚拟网络端点下的专用 IP 地址。

此外,当您在 Azure 服务中使用私有 DNS 服务器区域时,Azure 本身会配置所有 DNS 相关设置,而无需任何手动干预。

另一方面,如果您使用任何自定义 DNS(例如(绑定)),首先,创建一个不带任何

PostgreSQL flexible server
private DNS server zone
,并且需要手动启用所有设置和配置以进行专用网络注入。

为了将服务器与自定义 DNS 服务器集成:

MSDoc 中详细介绍的,将

PostgreSQL
灵活服务器与自定义 DNS 服务器集成,

您必须使用 DNS 转发器来解析 Azure Database for PostgreSQL - 灵活服务器的

FQDN

而且,在 MSDoc 中,提到:

DNS 转发还支持虚拟网络之间的 DNS 解析,并允许本地计算机解析 Azure 提供的主机名。

注意:我建议您使用 Azure 中的私有 DNS 区域,而不是使用任何自定义 DNS 服务器。如果您仍然觉得它很昂贵,请尝试通过禁用或消除不必要的区域来优化成本,并尝试使用将多个 Azure 资源链接到单个区域以降低成本。

或者,如果您想简单地启用公共访问,只需设置

public_network_access_enabled = true
,不会有任何冲突。

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = "postres"
  location = "West Europe"
}

resource "azurerm_postgresql_flexible_server" "example" {
  name                          = "example-psqlflexibleserver"
  resource_group_name           = azurerm_resource_group.example.name
  location                      = azurerm_resource_group.example.location
  version                       = "12"
  public_network_access_enabled = true
  administrator_login           = "xxxadminj"
  administrator_password        = "xxxx"

  storage_mb   = 32768
  storage_tier = "P30"

  sku_name   = "GP_Standard_D4s_v3"

}

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.