Terraform配置azurerm_private_dns_zone_virtual_network_link标签报错求助
问题原因
你使用的是data "azurerm_private_dns_zone_virtual_network_link",这是Terraform的数据源,作用是读取Azure中已存在的虚拟网络链接资源信息。其中tags是数据源的只读属性,Terraform会自动从现有资源拉取该值,不允许手动配置,这就是报错的核心原因。
解决方案
根据你的实际需求选择对应方案:
场景1:仅读取现有资源信息,无需修改标签
直接移除data块中的tags配置行即可,修改后的代码如下:
data "azurerm_private_dns_zone_virtual_network_link" "public_endpoint" { for_each = local.private_endpoints name = var.private_dns_zones_for_public_endpoint[each.value].virtual_network_link_name private_dns_zone_name = var.private_dns_zones_for_public_endpoint[each.value].name resource_group_name = var.private_dns_zones_for_public_endpoint[each.value].resource_group_name }
后续如果需要引用该资源的标签,可通过data.azurerm_private_dns_zone_virtual_network_link.public_endpoint[each.key].tags获取。
场景2:创建新的虚拟网络链接并设置标签
如果你的需求是创建新资源并配置标签,需要使用resource块替代data块,示例代码如下:
resource "azurerm_private_dns_zone_virtual_network_link" "public_endpoint" { for_each = local.private_endpoints name = var.private_dns_zones_for_public_endpoint[each.value].virtual_network_link_name private_dns_zone_name = var.private_dns_zones_for_public_endpoint[each.value].name resource_group_name = var.private_dns_zones_for_public_endpoint[each.value].resource_group_name virtual_network_id = each.value.virtual_network_id # 需补充虚拟网络ID,根据你的变量结构调整 tags = var.private_dns_zone_record_tags }
注意:resource块必须填写virtual_network_id参数,需根据你的实际变量配置补充该值。
内容的提问来源于stack exchange,提问作者shameera2008
相关产品推荐
相关产品推荐

