An Azure service that provides an enterprise-wide hyper-scale repository for big data analytic workloads and is integrated with Azure Blob Storage.
Hi ,
Thanks for reaching out to Microsoft Q&A.
You can implement this end-to-end in Terraform, but treat it as 2 layers:
(1) infrastructure provisioning and (2) data integration/orchestration, because Terraform will not handle pipelines or PBI configs fully. In Terraform, provision ADLSGen2 (Storage Account with hierarchical namespace), azure SQL atabase, ADF (or Fabric/adf equivalent), KeyVault & a VNet with private endpoints for storage and SQL. For secure ingestion from your Secure File Transfer Platform, either expose SFTP on ADLS (native SFTP feature) or land via ADF SHIR/managed VNet IR. Use private endpoints + DNS zones to ensure all traffic is internal. Your “Validation Pipeline” should be implemented in ADF pipelines or Fabric pipelines, not Terraform, Terraform only deploys the factory and linked services (partially via ARM templates if needed). For PBI via VNet data gateway, note that Terraform does not natively manage gateway registration/config; you will deploy the gateway VM (or use managed VNet gateway), then configure it manually or via PBI REST APIs. Ensure SQL is private endpoint enabled, and PBI connects via the gateway mapped to that VNet.
Key references: Azure verified modules for Storage/SQL, ADF Terraform provider docs, and PBI gateway architecture docs.
Before you proceed, challenge your design a bit:
why azure SQL after ADLS, do you really need relational serving, or can you use Direct lake/Synapse Serverless/Fabric Warehouse? What is your data volume and latency SLA batch vs near realtime? How are you handling schema drift & validation failures, quarantine zone in ADLS? Do you need CDC or incremental ingestion? Is your gateway becoming a bottleneck vs using Private Link with Fabric/PBI native connectors? Also, how will you manage secrets rotation and network isolation across environments (dev/test/prod)?
Please 'Upvote'(Thumbs-up) and 'Accept' as answer if the reply was helpful. This will be benefitting other community members who face the same issue.