DNS get private ip from private endpoint

%3CLINGO-SUB%20id%3D%22lingo-sub-2239582%22%20slang%3D%22en-US%22%3EDNS%20get%20private%20ip%20from%20private%20endpoint%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2239582%22%20slang%3D%22en-US%22%3E%3CP%3EHello%2C%3C%2FP%3E%3CP%3EI%20have%202%20pairing%20connected%20VLans.%20One%2010.0.0.0%2F24%20and%20one%2010.0.1.0%2F24.%3C%2FP%3E%3CP%3EAzure%20AD%20Domain%20Service%20is%20located%20in%20VLan%2010.0.0.0%2F24%20and%20is%20the%20DNS%20service%20for%20both%20VLans.%3CBR%20%2F%3EIn%20VLan%2010.0.1.0%2F24%2C%20there%20is%20a%20Private%20Link%20End%20Point%20of%20a%20storage%20account%20zzz.%20.file.core.windows.net%20(10.0.1.5).%20When%20I%20call%20the%20storage%20account%20I%20always%20get%20the%20public%20IP%20of%20the%20storage%20account.%3CBR%20%2F%3EHow%20can%20I%20resolve%20the%20internal%20IP%20of%20the%20storage%20account%20via%20both%20VLans%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%20for%20your%20supoort%3C%2FP%3E%3CP%3EStefan%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2360634%22%20slang%3D%22en-US%22%3ERe%3A%20DNS%20get%20private%20ip%20from%20private%20endpoint%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2360634%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20Stefan%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EWhen%20you%20are%20using%20the%20Private%20Endpoint%20for%20your%20Storage%20Account%2C%20you%20would%20have%20a%20Private%20DNS%20Zone%20(if%20you%20want).%20It's%20name%20is%20like%20%22privatelink.%3CRESOURCE-TYPE%3E.core.windows.net%22.%20If%20you%20go%20the%20Private%20DNS%20Zone%20resource%2C%20you%20can%20add%20the%20both%20VNets%20to%20this%20Private%20DNS%20Zone.%26nbsp%3B%3C%2FRESOURCE-TYPE%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Parisa_Moosavinezhad_0-1621251882464.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F281046i9302599179EF6645%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Parisa_Moosavinezhad_0-1621251882464.png%22%20alt%3D%22Parisa_Moosavinezhad_0-1621251882464.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EAs%20I%20had%20a%20same%20scenario%20in%20one%20of%20my%20projects%2C%20I%20can%20share%20the%20Terraform%20code%2C%20I%20developed.%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3Eresource%20%22azurerm_resource_group%22%20%22example%22%20%7B%0A%20%20name%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-resources%22%0A%20%20location%20%3D%20%22West%20Europe%22%0A%7D%0A%0A%23%20-----------------------------------%0A%23%20VNET%201%0A%23%20-----------------------------------%0Aresource%20%22azurerm_virtual_network%22%20%22example%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-vnet1%22%0A%20%20location%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_resource_group.example.location%0A%20%20resource_group_name%20%3D%20azurerm_resource_group.example.name%0A%20%20address_space%20%20%20%20%20%20%20%3D%20%5B%2210.3.0.0%2F16%22%5D%0A%20%20dns_servers%20%20%20%20%20%20%20%20%20%3D%20%5B%22168.63.129.16%22%5D%0A%0A%7D%0A%0Aresource%20%22azurerm_subnet%22%20%22exampledefault%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-default%22%0A%20%20resource_group_name%20%20%3D%20azurerm_resource_group.example.name%0A%20%20virtual_network_name%20%3D%20azurerm_virtual_network.example.name%0A%20%20address_prefixes%20%20%20%20%20%3D%20%5B%2210.3.1.0%2F24%22%5D%0A%0A%7D%0A%0Aresource%20%22azurerm_subnet%22%20%22exampleprivate%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-private%22%0A%20%20resource_group_name%20%20%3D%20azurerm_resource_group.example.name%0A%20%20virtual_network_name%20%3D%20azurerm_virtual_network.example.name%0A%20%20address_prefixes%20%20%20%20%20%3D%20%5B%2210.3.2.0%2F24%22%5D%0A%20%20enforce_private_link_endpoint_network_policies%20%3D%20true%0A%0A%7D%0A%0A%23%20-----------------------------------%0A%23%20VNET%202%0A%23%20-----------------------------------%0Aresource%20%22azurerm_virtual_network%22%20%22example2%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-vnet2%22%0A%20%20location%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_resource_group.example.location%0A%20%20resource_group_name%20%3D%20azurerm_resource_group.example.name%0A%20%20address_space%20%20%20%20%20%20%20%3D%20%5B%2210.4.0.0%2F16%22%5D%0A%20%20dns_servers%20%20%20%20%20%20%20%20%20%3D%20%5B%22168.63.129.16%22%5D%0A%0A%7D%0A%0Aresource%20%22azurerm_subnet%22%20%22exampledefault2%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-default%22%0A%20%20resource_group_name%20%20%3D%20azurerm_resource_group.example.name%0A%20%20virtual_network_name%20%3D%20azurerm_virtual_network.example2.name%0A%20%20address_prefixes%20%20%20%20%20%3D%20%5B%2210.4.1.0%2F24%22%5D%0A%0A%7D%0A%0A%0A%23%20-----------------------------------%0A%23%20Storage%0A%23%20-----------------------------------%0Aresource%20%22azurerm_storage_account%22%20%22example%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%22%24%7Bvar.projectname%7Dstg%22%0A%20%20resource_group_name%20%20%20%20%20%20%3D%20azurerm_resource_group.example.name%0A%20%20location%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_resource_group.example.location%0A%20%20account_tier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Standard%22%0A%20%20account_replication_type%20%3D%20%22LRS%22%0A%0A%7D%0A%0A%0Aresource%20%22azurerm_storage_account_network_rules%22%20%22network_rule_publisher%22%20%7B%0A%20%20depends_on%20%3D%20%5B%0A%20%20%20%20azurerm_private_endpoint.example%0A%20%20%5D%0A%0A%20%20resource_group_name%20%20%3D%20azurerm_resource_group.example.name%0A%20%20storage_account_name%20%3D%20azurerm_storage_account.example.name%0A%0A%20%20default_action%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Deny%22%0A%20%20ip_rules%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%5B%22127.0.0.1%22%5D%0A%20%20bypass%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%5B%5D%0A%7D%0A%0A%0A%2F%2F%20Azure%20services%20DNS%20zone%0A%2F%2F%20https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fprivate-link%2Fprivate-endpoint-dns%23azure-services-dns-zone-configuration%0Aresource%20%22azurerm_private_dns_zone%22%20%22example%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22privatelink.blob.core.windows.net%22%0A%20%20resource_group_name%20%3D%20azurerm_resource_group.example.name%0A%7D%0A%0A%0A%0Aresource%20%22azurerm_private_endpoint%22%20%22example%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-privateendpoint%22%0A%20%20location%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_resource_group.example.location%0A%20%20resource_group_name%20%3D%20azurerm_resource_group.example.name%0A%20%20subnet_id%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_subnet.exampleprivate.id%0A%0A%20%20private_service_connection%20%7B%0A%20%20%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-stg-pe-connection%22%0A%20%20%20%20is_manual_connection%20%20%20%20%20%20%20%20%20%20%20%3D%20false%0A%20%20%20%20private_connection_resource_id%20%3D%20azurerm_storage_account.example.id%0A%20%20%20%20subresource_names%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%5B%22blob%22%5D%0A%20%20%7D%0A%0A%20%20private_dns_zone_group%20%7B%0A%20%20%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_private_dns_zone.example.name%0A%20%20%20%20private_dns_zone_ids%20%3D%20%5Bazurerm_private_dns_zone.example.id%5D%0A%20%20%7D%0A%0A%7D%0A%0A%0A%23%20connect%20the%20Private%20Zone%20to%20the%20VNet%0Aresource%20%22azurerm_private_dns_zone_virtual_network_link%22%20%22example%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-vnet2dns-1%22%0A%20%20resource_group_name%20%20%20%3D%20azurerm_resource_group.example.name%0A%20%20private_dns_zone_name%20%3D%20azurerm_private_dns_zone.example.name%0A%20%20virtual_network_id%20%20%20%20%3D%20azurerm_virtual_network.example.id%0A%7D%0A%0Aresource%20%22azurerm_private_dns_zone_virtual_network_link%22%20%22example2%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-vnet2dns-2%22%0A%20%20resource_group_name%20%20%20%3D%20azurerm_resource_group.example.name%0A%20%20private_dns_zone_name%20%3D%20azurerm_private_dns_zone.example.name%0A%20%20virtual_network_id%20%20%20%20%3D%20azurerm_virtual_network.example2.id%0A%7D%0A%0A%0A%23%20-----------------------------------%0A%23%20VM%20in%20Vnet1%0A%23%20-----------------------------------%0Aresource%20%22azurerm_network_interface%22%20%22example%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-nic-1%22%0A%20%20location%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_resource_group.example.location%0A%20%20resource_group_name%20%3D%20azurerm_resource_group.example.name%0A%0A%20%20ip_configuration%20%7B%0A%20%20%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22internal%22%0A%20%20%20%20subnet_id%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_subnet.exampleprivate.id%0A%20%20%20%20private_ip_address_allocation%20%3D%20%22Dynamic%22%0A%20%20%7D%0A%7D%0A%0Aresource%20%22azurerm_windows_virtual_machine%22%20%22example%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-vm-1%22%0A%20%20resource_group_name%20%3D%20azurerm_resource_group.example.name%0A%20%20location%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_resource_group.example.location%0A%20%20size%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Standard_F2%22%0A%20%20admin_username%20%20%20%20%20%20%3D%20%22adminuser%22%0A%20%20admin_password%20%20%20%20%20%20%3D%20%22P%40%24%24w0rd1234!%22%0A%20%20network_interface_ids%20%3D%20%5B%0A%20%20%20%20azurerm_network_interface.example.id%2C%0A%20%20%5D%0A%0A%20%20os_disk%20%7B%0A%20%20%20%20caching%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22ReadWrite%22%0A%20%20%20%20storage_account_type%20%3D%20%22Standard_LRS%22%0A%20%20%7D%0A%0A%20%20source_image_reference%20%7B%0A%20%20%20%20publisher%20%3D%20%22MicrosoftWindowsServer%22%0A%20%20%20%20offer%20%20%20%20%20%3D%20%22WindowsServer%22%0A%20%20%20%20sku%20%20%20%20%20%20%20%3D%20%222016-Datacenter%22%0A%20%20%20%20version%20%20%20%3D%20%22latest%22%0A%20%20%7D%0A%7D%0A%0A%0A%23%20-----------------------------------%0A%23%20VM%20in%20Vnet2%0A%23%20-----------------------------------%0Aresource%20%22azurerm_network_interface%22%20%22example2%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-nic-2%22%0A%20%20location%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_resource_group.example.location%0A%20%20resource_group_name%20%3D%20azurerm_resource_group.example.name%0A%0A%20%20ip_configuration%20%7B%0A%20%20%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22internal%22%0A%20%20%20%20subnet_id%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_subnet.exampledefault2.id%0A%20%20%20%20private_ip_address_allocation%20%3D%20%22Dynamic%22%0A%20%20%7D%0A%7D%0A%0Aresource%20%22azurerm_windows_virtual_machine%22%20%22example2%22%20%7B%0A%20%20name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%24%7Bvar.projectname%7D-vm-2%22%0A%20%20resource_group_name%20%3D%20azurerm_resource_group.example.name%0A%20%20location%20%20%20%20%20%20%20%20%20%20%20%20%3D%20azurerm_resource_group.example.location%0A%20%20size%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Standard_F2%22%0A%20%20admin_username%20%20%20%20%20%20%3D%20%22adminuser%22%0A%20%20admin_password%20%20%20%20%20%20%3D%20%22P%40%24%24w0rd1234!%22%0A%20%20network_interface_ids%20%3D%20%5B%0A%20%20%20%20azurerm_network_interface.example2.id%2C%0A%20%20%5D%0A%0A%20%20os_disk%20%7B%0A%20%20%20%20caching%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22ReadWrite%22%0A%20%20%20%20storage_account_type%20%3D%20%22Standard_LRS%22%0A%20%20%7D%0A%0A%20%20source_image_reference%20%7B%0A%20%20%20%20publisher%20%3D%20%22MicrosoftWindowsServer%22%0A%20%20%20%20offer%20%20%20%20%20%3D%20%22WindowsServer%22%0A%20%20%20%20sku%20%20%20%20%20%20%20%3D%20%222016-Datacenter%22%0A%20%20%20%20version%20%20%20%3D%20%22latest%22%0A%20%20%7D%0A%7D%0A%0A%0A%0A%2F%2F%20output%20%22myoutput%22%20%7B%0A%2F%2F%20%20%20value%20%3D%20azurerm_private_endpoint.example.private_service_connection%5B0%5D.private_ip_address%0A%2F%2F%20%7D%0A%0A%2F%2F%20output%20%22dns_id%22%20%7B%0A%2F%2F%20%20%20value%20%3D%20azurerm_private_dns_zone.example.id%0A%2F%2F%20%7D%0A%0A%2F%2F%20output%20%22dns_name%22%20%7B%0A%2F%2F%20%20%20value%20%3D%20azurerm_private_dns_zone.example.name%0A%2F%2F%20%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIf%20you%20don't%20want%20the%20Storage%20Account%20be%20accessible%20from%20Internet%2F%20Public%20Endpoint%2C%20you%20should%20configure%20the%20Storage%20Account%20Networking%20as%20follows.%20The%20code%20above%20does%20the%20same%20configuration%20for%20the%20Storage%20Account.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Parisa_Moosavinezhad_1-1621252299951.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F281047iA69BA87BAEE74CA2%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Parisa_Moosavinezhad_1-1621252299951.png%22%20alt%3D%22Parisa_Moosavinezhad_1-1621252299951.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ERegard%3C%2FP%3E%3CP%3EParisa%3C%2FP%3E%3C%2FLINGO-BODY%3E
Regular Contributor

Hello,

I have 2 pairing connected VLans. One 10.0.0.0/24 and one 10.0.1.0/24.

Azure AD Domain Service is located in VLan 10.0.0.0/24 and is the DNS service for both VLans.
In VLan 10.0.1.0/24, there is a Private Link End Point of a storage account zzz. .file.core.windows.net (10.0.1.5). When I call the storage account I always get the public IP of the storage account.
How can I resolve the internal IP of the storage account via both VLans?

 

Thanks for your supoort

Stefan

1 Reply

Hi Stefan,

 

When you are using the Private Endpoint for your Storage Account, you would have a Private DNS Zone (if you want). It's name is like "privatelink.<resource-type>.core.windows.net". If you go the Private DNS Zone resource, you can add the both VNets to this Private DNS Zone. 

 

Parisa_Moosavinezhad_0-1621251882464.png

 

As I had a same scenario in one of my projects, I can share the Terraform code, I developed.

resource "azurerm_resource_group" "example" {
  name     = "${var.projectname}-resources"
  location = "West Europe"
}

# -----------------------------------
# VNET 1
# -----------------------------------
resource "azurerm_virtual_network" "example" {
  name                = "${var.projectname}-vnet1"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  address_space       = ["10.3.0.0/16"]
  dns_servers         = ["168.63.129.16"]

}

resource "azurerm_subnet" "exampledefault" {
  name                 = "${var.projectname}-default"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.3.1.0/24"]

}

resource "azurerm_subnet" "exampleprivate" {
  name                 = "${var.projectname}-private"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.3.2.0/24"]
  enforce_private_link_endpoint_network_policies = true

}

# -----------------------------------
# VNET 2
# -----------------------------------
resource "azurerm_virtual_network" "example2" {
  name                = "${var.projectname}-vnet2"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  address_space       = ["10.4.0.0/16"]
  dns_servers         = ["168.63.129.16"]

}

resource "azurerm_subnet" "exampledefault2" {
  name                 = "${var.projectname}-default"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example2.name
  address_prefixes     = ["10.4.1.0/24"]

}


# -----------------------------------
# Storage
# -----------------------------------
resource "azurerm_storage_account" "example" {
  name                     ="${var.projectname}stg"
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"

}


resource "azurerm_storage_account_network_rules" "network_rule_publisher" {
  depends_on = [
    azurerm_private_endpoint.example
  ]

  resource_group_name  = azurerm_resource_group.example.name
  storage_account_name = azurerm_storage_account.example.name

  default_action             = "Deny"
  ip_rules                   = ["127.0.0.1"]
  bypass                     = []
}


// Azure services DNS zone
// https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-dns#azure-services-dns-zone-configuration
resource "azurerm_private_dns_zone" "example" {
  name                = "privatelink.blob.core.windows.net"
  resource_group_name = azurerm_resource_group.example.name
}



resource "azurerm_private_endpoint" "example" {
  name                = "${var.projectname}-privateendpoint"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  subnet_id           = azurerm_subnet.exampleprivate.id

  private_service_connection {
    name                           = "${var.projectname}-stg-pe-connection"
    is_manual_connection           = false
    private_connection_resource_id = azurerm_storage_account.example.id
    subresource_names              = ["blob"]
  }

  private_dns_zone_group {
    name                 = azurerm_private_dns_zone.example.name
    private_dns_zone_ids = [azurerm_private_dns_zone.example.id]
  }

}


# connect the Private Zone to the VNet
resource "azurerm_private_dns_zone_virtual_network_link" "example" {
  name                  = "${var.projectname}-vnet2dns-1"
  resource_group_name   = azurerm_resource_group.example.name
  private_dns_zone_name = azurerm_private_dns_zone.example.name
  virtual_network_id    = azurerm_virtual_network.example.id
}

resource "azurerm_private_dns_zone_virtual_network_link" "example2" {
  name                  = "${var.projectname}-vnet2dns-2"
  resource_group_name   = azurerm_resource_group.example.name
  private_dns_zone_name = azurerm_private_dns_zone.example.name
  virtual_network_id    = azurerm_virtual_network.example2.id
}


# -----------------------------------
# VM in Vnet1
# -----------------------------------
resource "azurerm_network_interface" "example" {
  name                = "${var.projectname}-nic-1"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  ip_configuration {
    name                          = "internal"
    subnet_id                     = azurerm_subnet.exampleprivate.id
    private_ip_address_allocation = "Dynamic"
  }
}

resource "azurerm_windows_virtual_machine" "example" {
  name                = "${var.projectname}-vm-1"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  size                = "Standard_F2"
  admin_username      = "adminuser"
  admin_password      = "P@$$w0rd1234!"
  network_interface_ids = [
    azurerm_network_interface.example.id,
  ]

  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2016-Datacenter"
    version   = "latest"
  }
}


# -----------------------------------
# VM in Vnet2
# -----------------------------------
resource "azurerm_network_interface" "example2" {
  name                = "${var.projectname}-nic-2"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  ip_configuration {
    name                          = "internal"
    subnet_id                     = azurerm_subnet.exampledefault2.id
    private_ip_address_allocation = "Dynamic"
  }
}

resource "azurerm_windows_virtual_machine" "example2" {
  name                = "${var.projectname}-vm-2"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  size                = "Standard_F2"
  admin_username      = "adminuser"
  admin_password      = "P@$$w0rd1234!"
  network_interface_ids = [
    azurerm_network_interface.example2.id,
  ]

  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2016-Datacenter"
    version   = "latest"
  }
}



// output "myoutput" {
//   value = azurerm_private_endpoint.example.private_service_connection[0].private_ip_address
// }

// output "dns_id" {
//   value = azurerm_private_dns_zone.example.id
// }

// output "dns_name" {
//   value = azurerm_private_dns_zone.example.name
// }

 

If you don't want the Storage Account be accessible from Internet/ Public Endpoint, you should configure the Storage Account Networking as follows. The code above does the same configuration for the Storage Account.

 

Parisa_Moosavinezhad_1-1621252299951.png

 

 

Regard

Parisa