Deploying an Azure Landing Zone Using Terraform: A Real-World Enterprise Deployment Guide

Need help deploying this in your environment? Get custom Terraform solutions built for scalable, production-ready infrastructure.

Deploying an Azure Landing Zone Using Terraform: A Real-World Enterprise Deployment Guide

Organizations adopting Microsoft Azure often begin with small deployments that grow organically over time. While this approach may work temporarily, it eventually leads to inconsistent governance, security gaps, and operational complexity. To address this challenge, enterprises implement Azure Landing Zones, which provide a standardized, scalable, and secure cloud foundation.

In real-world enterprise environments, Infrastructure as Code (IaC) has become the preferred method for deploying landing zones. Terraform, developed by HashiCorp, is widely used for this purpose due to its platform independence, declarative syntax, and strong Azure integration.

This article explains how to deploy an Azure Landing Zone using Terraform in a real-world enterprise environment, including architecture design, governance structure, deployment workflow, and practical implementation strategies used by large organizations.

 1.) Understanding Azure Landing Zones

An Azure Landing Zone is a preconfigured environment that follows the Microsoft Cloud Adoption Framework and Enterprise-Scale architecture guidelines. It provides the foundational building blocks needed to host workloads securely and consistently in Azure.

A typical landing zone includes identity management, network topology, governance policies, logging, security controls, and subscription organization.

Key objectives of a landing zone include:

Establishing centralized governance

Enforcing security and compliance policies

Providing standardized networking architecture

Enabling scalable workload deployment

Supporting DevOps and Infrastructure as Code

Landing zones are not designed for a single application. Instead, they provide a platform where multiple workloads can be deployed in a controlled and governed environment.

2.) Real-World Enterprise Architecture

In production environments, Azure Landing Zones are implemented using a hierarchical structure of Management Groups and subscriptions.

Typical enterprise structure:

Tenant Root Group
Platform Management Group
Identity Subscription
Management Subscription
Connectivity Subscription

Landing Zones Management Group
Production Subscriptions
Non-Production Subscriptions

Sandbox Management Group
Developer Subscriptions

Identity Subscription

This subscription hosts identity services such as Microsoft Entra Domain Services or domain controllers when hybrid identity is required.

 Management Subscription

This subscription hosts centralized services including:

Azure Monitor

Log Analytics

Azure Automation

Microsoft Defender for Cloud

Azure Sentinel (Microsoft Sentinel)

Connectivity Subscription

This subscription hosts networking infrastructure such as:

Hub Virtual Network

Azure Firewall

VPN Gateway

ExpressRoute Gateway

DNS services

 Landing Zone Subscriptions

These subscriptions host application workloads and follow standardized policies and security configurations inherited from management groups.

3.) Why Terraform for Landing Zones

Terraform is commonly used in enterprise landing zone deployments because it offers several advantages:

Declarative Infrastructure

Infrastructure is described in code rather than executed through manual scripts.

Idempotent Deployments

Terraform ensures infrastructure reaches the desired state even after repeated executions.

Version Control

All infrastructure definitions can be stored in Git repositories for traceability.

Modular Architecture

Reusable modules allow standardized deployment across multiple environments.

Multi-Environment Support

The same Terraform codebase can deploy development, testing, and production environments.

4.) Terraform Architecture for Landing Zones

In real-world implementations, Terraform code is structured into modules that represent major Azure components.

Typical Terraform module layout:

terraform-azure-landing-zone

modules

management-groups

policy

networking

monitoring

identity

security

subscriptions

environments

production

nonproduction

sandbox

Each module encapsulates a specific capability such as networking, policy enforcement, or monitoring configuration.

The environment folder contains environment-specific variables and configuration.

5.) Prerequisites

Before deploying a landing zone using Terraform, several prerequisites must be prepared.

Azure prerequisites:

Azure tenant with Owner permissions

Azure subscriptions

Service Principal or Managed Identity for Terraform

Azure CLI installed

Terraform prerequisites:

Terraform version 1.5 or later

Backend storage for Terraform state (Azure Storage Account)

Git repository for source control

6.) Configuring Terraform Backend

Enterprise deployments store Terraform state remotely to enable collaboration and avoid conflicts.

Example backend configuration:

terraform {
  backend "azurerm" {
    resource_group_name  = "rg-tfstate-prod"
    storage_account_name = "tfstatelandingzone"
    container_name       = "terraform"
    key                  = "landingzone.tfstate"
  }
}

The storage account must have versioning and soft delete enabled to protect the state file.

7.) Provider Configuration

Terraform must authenticate to Azure using the AzureRM provider.

provider "azurerm" {
  features {}
}

Authentication is typically handled using a service principal.

Example login:

az login

or

az login --service-principal \
-u <appId> \
-p <password> \
--tenant <tenantId>

8.) Deploying Management Groups

Management groups form the governance hierarchy.

Example Terraform configuration:

resource "azurerm_management_group" "platform" {
  display_name = "Platform"
}

resource "azurerm_management_group" "landingzones" {
  display_name = "LandingZones"
}

These groups will later host policy assignments and subscription associations.

9.) Subscription Placement

Subscriptions are assigned to management groups.

Example:

resource "azurerm_management_group_subscription_association" "prod_sub" {
  management_group_id = azurerm_management_group.landingzones.id
  subscription_id     = var.production_subscription
}

This ensures policies and governance automatically apply to workloads.

10.) Deploying Hub Networking

A hub-and-spoke network architecture is standard in enterprise environments.

Hub VNet example:

resource "azurerm_virtual_network" "hub_vnet" {
  name                = "hub-vnet"
  location            = var.location
  resource_group_name = azurerm_resource_group.network_rg.name
  address_space       = ["10.0.0.0/16"]
}

Subnets typically include:

AzureFirewallSubnet
GatewaySubnet
ManagementSubnet

Spoke VNets are deployed for application workloads.

11.) Implementing Governance with Azure Policy

Policies enforce compliance across all subscriptions.

Example policy assignment:

resource "azurerm_policy_assignment" "allowed_locations" {
  name                 = "allowed-locations"
  policy_definition_id = data.azurerm_policy_definition.allowed_locations.id
  scope                = azurerm_management_group.platform.id
}

Common landing zone policies include:

Allowed regions

Mandatory tagging

Enforced encryption

Restricted public IP usage

Approved VM sizes

12.) Monitoring and Logging

Centralized monitoring is critical for operational visibility.

Typical components include:

Log Analytics Workspace

Azure Monitor

Diagnostic settings

Activity logs

Example Log Analytics deployment:

resource "azurerm_log_analytics_workspace" "monitoring" {
  name                = "log-landingzone"
  location            = var.location
  resource_group_name = "rg-monitoring"
  sku                 = "PerGB2018"
}

Diagnostic settings are applied to resources and subscriptions.

13.) Security Integration

Enterprise landing zones integrate multiple security services.

Typical components include:

Microsoft Defender for Cloud

Microsoft Sentinel

Azure Key Vault

Private Endpoints

Managed identities

Terraform example enabling Defender:

resource "azurerm_security_center_subscription_pricing" "defender_vm" {
  tier          = "Standard"
  resource_type = "VirtualMachines"
}

14.) CI/CD Deployment Pipeline

In real-world environments, Terraform deployments are executed through CI/CD pipelines rather than manual execution.

Common pipeline platforms include:

GitHub Actions

Azure DevOps

GitLab CI

Typical pipeline workflow

Developer commits Terraform code

Pull request triggers validation

Terraform plan is executed

Security scanning occurs

Terraform apply deploys infrastructure

xample Pipeline Stages:

Initialize
Validate
Plan
Approval
Apply

15.) Operational Best Practices

Large organizations follow strict operational guidelines when deploying landing zones.

State Management

Always store Terraform state remotely and enable locking.

Module Versioning

Version Terraform modules to ensure consistent deployments.

Policy-First Approach

Apply governance policies before workloads are deployed.

Network Segmentation

Use hub-and-spoke architecture with centralized security inspection.

Least Privilege Access

Use role-based access control with minimal required permissions.

Automation

All infrastructure deployments should occur through CI/CD pipelines.

16.) Common Deployment Pitfalls

Many organizations encounter similar challenges when deploying landing zones.

Overly Complex Design

Starting with an overly complicated architecture slows adoption.

Manual Resource Creation

Manual deployments create drift between Terraform and Azure.

Poor State Management

State file corruption can break deployments.

Lack of Policy Governance

Without policies, workloads can violate security standards.

17.) Real-World Deployment Example

A typical enterprise rollout may follow these phases.

Phase 1 Foundation

Deploy management groups
Deploy platform subscriptions
Deploy hub networking

Phase 2 Governance

Deploy Azure policies
Deploy role-based access control
Configure monitoring

Phase 3 Security

Enable Defender for Cloud
Deploy Key Vault infrastructure
Configure private networking

Phase 4 Workload Onboarding

Deploy application landing zones
Deploy spoke networks
Connect to hub network

18.) Benefits of Terraform-Based Landing Zones

Organizations that implement landing zones using Terraform gain several benefits.

Consistency

Every environment follows identical standards.

Repeatability

Infrastructure can be recreated quickly.

Auditability

Infrastructure changes are tracked in Git.

Scalability

New subscriptions and workloads can be deployed rapidly.

Security

Policies and governance are enforced automatically.

Conclusion

Deploying an Azure Landing Zone using Terraform provides enterprises with a scalable, secure, and automated cloud foundation. By combining Azure governance capabilities with Infrastructure as Code practices, organizations can ensure consistent deployments, reduce operational risk, and accelerate cloud adoption.

A well-designed landing zone not only simplifies infrastructure management but also enables teams to focus on delivering business value rather than managing cloud complexity.

As Azure environments grow, Terraform-based landing zones become a critical component of enterprise cloud strategy, ensuring that governance, security, networking, and operational practices are implemented consistently across the entire cloud platform.

 

If you would like to explore this topic in greater depth, see my book Mastering Azure Landing Zone Framework Enterprise Architecture, where the subject is covered in much greater detail. The guide expands on the concepts discussed in this article with deeper architectural explanations, service capabilities, and step-by-step implementation using Azure Portal, Azure CLI, Terraform, and Bicep. It also includes real-world deployment, configuration, and troubleshooting scenarios designed for IT professionals, administrators, and cloud architects. All of my books include detailed architectural diagrams and practical deployment examples using PowerShell, Azure CLI, Terraform, and Bicep.

 

0 comments

Leave a comment

Please note, comments need to be approved before they are published.