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.