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 服务器关联的任何内容。
这里有两种情况。
private_dns_zone_id
部署中使用 azurerm_postgresql_flexible_server
,您可以启用公共访问。这样您就不需要对私有 DNS 服务器区域使用任何虚拟网络注入。或
此外,当您在 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"
}