Back to Blog
1 min read

Terraform Azure Provider: Infrastructure as Code Basics

ARM templates have their place, but Terraform offers a cleaner, multi-cloud approach to infrastructure as code.

Provider Configuration

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 2.0"
    }
  }
  backend "azurerm" {
    resource_group_name  = "terraform-state-rg"
    storage_account_name = "tfstatestore"
    container_name       = "tfstate"
    key                  = "prod.terraform.tfstate"
  }
}

provider "azurerm" {
  features {}
}

Resource Example

resource "azurerm_resource_group" "main" {
  name     = "data-platform-rg"
  location = "Australia East"
  tags = {
    Environment = "Production"
    Project     = "DataPlatform"
  }
}

resource "azurerm_storage_account" "datalake" {
  name                     = "mydatalakestore"
  resource_group_name      = azurerm_resource_group.main.name
  location                 = azurerm_resource_group.main.location
  account_tier             = "Standard"
  account_replication_type = "GRS"
  is_hns_enabled           = true  # Enable hierarchical namespace for ADLS Gen2

  tags = azurerm_resource_group.main.tags
}

resource "azurerm_synapse_workspace" "synapse" {
  name                                 = "mysynapseworkspace"
  resource_group_name                  = azurerm_resource_group.main.name
  location                             = azurerm_resource_group.main.location
  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.default.id
  sql_administrator_login              = "sqladmin"
  sql_administrator_login_password     = var.sql_admin_password
}

Workflow

terraform init      # Initialize and download providers
terraform plan      # Preview changes
terraform apply     # Apply changes
terraform destroy   # Tear down (be careful!)

The combination of declarative syntax and state management makes Terraform my go-to for Azure infrastructure.

Michael John Peña

Michael John Peña

Senior Data Engineer based in Sydney. Writing about data, cloud, and technology.