如何在 Terraform 中为 2 个存储帐户创建专用终结点
How to create Private Endpoints for 2 storage accounts in Terraform
我正在尝试为不同资源组中的 2 个存储帐户创建专用终结点 - link连接到第三个资源组中的 vNet。
我相信你只能有一个 dns_zone 和一个 dns_zone link 到 link 它到 vNet?我不确定应该在哪里创建 EndPoints 和 dns 区域。是在 Vnet 所在的资源组中还是在相关存储帐户的资源组中?
我目前的代码:
# Creating a Private DNS Zone for the Private Endpoints
resource "azurerm_private_dns_zone" "pv-dns-zone" {
name = "privatelink.blob.core.windows.net"
resource_group_name = var.resource_group.name
#
}
# Linking DNS Zone to the configured VNET
resource "azurerm_private_dns_zone_virtual_network_link" "dns_zone_network_link" {
name = "vnet_link"
resource_group_name = var.resource_group.name
private_dns_zone_name = azurerm_private_dns_zone.pv-dns-zone.name
virtual_network_id = azurerm_virtual_network.abcd-vnt.id
}
# Creating Azure Private Endpoint for 1st Blob Storage
resource "azurerm_private_endpoint" "abcd-endpt" {
name = "abcdendpoint"
location = var.resource_group.location
resource_group_name = var.resource_group.name
subnet_id = azurerm_subnet.storage_subnet.id
private_dns_zone_group {
name = "private-dns-zone-group"
private_dns_zone_ids = [azurerm_private_dns_zone.pv-dns-zone.id]
}
private_service_connection {
name = "abcd-psc"
is_manual_connection = false
private_connection_resource_id = "/subscriptions/(subscription-id)/resourceGroups/(Resourcegroupname)/providers/Microsoft.Storage/storageAccounts/(storageaccountname)"
subresource_names = ["blob"]
}
}
# Creating Azure Private Endpoint for 2nd Blob Storage
resource "azurerm_private_endpoint" "xyz-endpt" {
name = "xyz-pe"
location = var.resource_group.location
resource_group_name = var.resource_group.name
subnet_id = azurerm_subnet.storage_subnet.id
private_dns_zone_group {
name = "private-dns-zone-group"
private_dns_zone_ids = [azurerm_private_dns_zone.pv-dns-zone.id]
}
private_service_connection {
name = "xyz-pscs"
is_manual_connection = false
private_connection_resource_id = "/subscriptions/(subscriptionid)/resourceGroups/(resourcegroupname)/providers/Microsoft.Storage/storageAccounts/(storageaccountname)"
subresource_names = ["blob"]
}
}
如您所述,只有一种私有 DNS 区域类型(例如 privatelink.blob.core.windows.net)可以绑定到 VNET。这是为了让 VNET 知道将流量路由到哪里。
资源组通常只是用于访问控制的逻辑容器。您放入每个资源组的资源通常取决于您的组织要求或位置要求。与此一致,只有您的私有 DNS 区域与您的 VNET 位于同一资源组中才有意义,因为它与 VNET 相关联。
将来,您可以在不同的资源组中为其他项目拥有额外的存储帐户,这些项目都将使用相同的私有 DNS 区域。因此,将 'shared' 资源绑定到特定的 project/Resource 组是没有意义的。
另一方面,专用终结点链接到特定资源。这意味着它们的生命周期也将与该资源相关联。因此,将它们与所引用的资源放在同一个资源组中更有意义。
尽管在上面将它们部署到哪个资源组实际上并不重要,但实际上更像是一种使管理资源更加精简的约定。
我正在尝试为不同资源组中的 2 个存储帐户创建专用终结点 - link连接到第三个资源组中的 vNet。
我相信你只能有一个 dns_zone 和一个 dns_zone link 到 link 它到 vNet?我不确定应该在哪里创建 EndPoints 和 dns 区域。是在 Vnet 所在的资源组中还是在相关存储帐户的资源组中?
我目前的代码:
# Creating a Private DNS Zone for the Private Endpoints
resource "azurerm_private_dns_zone" "pv-dns-zone" {
name = "privatelink.blob.core.windows.net"
resource_group_name = var.resource_group.name
#
}
# Linking DNS Zone to the configured VNET
resource "azurerm_private_dns_zone_virtual_network_link" "dns_zone_network_link" {
name = "vnet_link"
resource_group_name = var.resource_group.name
private_dns_zone_name = azurerm_private_dns_zone.pv-dns-zone.name
virtual_network_id = azurerm_virtual_network.abcd-vnt.id
}
# Creating Azure Private Endpoint for 1st Blob Storage
resource "azurerm_private_endpoint" "abcd-endpt" {
name = "abcdendpoint"
location = var.resource_group.location
resource_group_name = var.resource_group.name
subnet_id = azurerm_subnet.storage_subnet.id
private_dns_zone_group {
name = "private-dns-zone-group"
private_dns_zone_ids = [azurerm_private_dns_zone.pv-dns-zone.id]
}
private_service_connection {
name = "abcd-psc"
is_manual_connection = false
private_connection_resource_id = "/subscriptions/(subscription-id)/resourceGroups/(Resourcegroupname)/providers/Microsoft.Storage/storageAccounts/(storageaccountname)"
subresource_names = ["blob"]
}
}
# Creating Azure Private Endpoint for 2nd Blob Storage
resource "azurerm_private_endpoint" "xyz-endpt" {
name = "xyz-pe"
location = var.resource_group.location
resource_group_name = var.resource_group.name
subnet_id = azurerm_subnet.storage_subnet.id
private_dns_zone_group {
name = "private-dns-zone-group"
private_dns_zone_ids = [azurerm_private_dns_zone.pv-dns-zone.id]
}
private_service_connection {
name = "xyz-pscs"
is_manual_connection = false
private_connection_resource_id = "/subscriptions/(subscriptionid)/resourceGroups/(resourcegroupname)/providers/Microsoft.Storage/storageAccounts/(storageaccountname)"
subresource_names = ["blob"]
}
}
如您所述,只有一种私有 DNS 区域类型(例如 privatelink.blob.core.windows.net)可以绑定到 VNET。这是为了让 VNET 知道将流量路由到哪里。
资源组通常只是用于访问控制的逻辑容器。您放入每个资源组的资源通常取决于您的组织要求或位置要求。与此一致,只有您的私有 DNS 区域与您的 VNET 位于同一资源组中才有意义,因为它与 VNET 相关联。
将来,您可以在不同的资源组中为其他项目拥有额外的存储帐户,这些项目都将使用相同的私有 DNS 区域。因此,将 'shared' 资源绑定到特定的 project/Resource 组是没有意义的。
另一方面,专用终结点链接到特定资源。这意味着它们的生命周期也将与该资源相关联。因此,将它们与所引用的资源放在同一个资源组中更有意义。
尽管在上面将它们部署到哪个资源组实际上并不重要,但实际上更像是一种使管理资源更加精简的约定。