Terraform module: Azure DNS Private Resolver
Not so long ago Azure DNS Private Resolver became globally available, making it simpler to deploy a DNS Proxy service in Azure which is solely built on a PaaS service, earlier you had to deploy VM-based DNS Servers or even scale sets to handle the DNS Proxy services in your tenant for your On-premise hybrid name resolutions, for example, query an Azure Private DNS Zone from on-premise and vice versa, but now you can simply deploy a DNS Private Resolver to do the job, and you only need to manage a fraction of what the resolver needs to do instead of having to manage the forwarding rules, DNS, operating system and the whole shebang.
Though Azure DNS Private Resolver has its limitations which I will dig deeper into in another blog post about the Azure DNS Private Resolver and which scenarios you can use it in, it is still a much more viable solution when it comes to cost reduction and simplifying the DNS management as you don't need to manage the lifecycle of the VM that is hosting the service, like installing updates, etc. and the usage of the service is much easier and more convenient.
The architecture for Azure DNS Private Resolver is summarized in the following figure, but I will dig deeper into Azure DNS Private Resolver and multiple scenarios on how to use it in another blog post soon, but to give you a bit more context you can see the figure here from What is Azure DNS Private Resolver? | Microsoft Learn
First, when Azure DNS Private Resolver was released there wasn't a possibility to deploy the Azure DNS Private Resolver with Terraform, but within a few days of release, it became available by combining multiple single resources, after looking at the resources I decided to write a module for the primary services needed to deploy the Azure DNS Private Resolver to make it a bit easier for you to deploy Azure DNS Private Resolver.
The module deploys an Azure DNS Private Resolver, one or more Inbound & Outbound Endpoints as well as one or more Forwarding Rule sets.