Azure'da Terraform
AzureRM Terraform sağlayıcısını yapılandırın, temel bir altyapı planı yazın ve yerel ARM/Bicep araçları yerine Terraform'u ne zaman tercih etmeniz gerektiğini anlayın.
Azure'da Terraform, CoddyKit'te ücretsiz bir Azure Fundamentals dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Azure Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Azure Fundamentals kursu toplamda 4 dersten oluşur.
Terraform nedir ve neden Azure?
Terraform, HashiCorp tarafından geliştirilen açık kaynaklı bir Infrastructure as Code aracıdır. Bicep'in aksine Terraform, buluttan bağımsızdır; tek bir Terraform kod tabanı Azure, AWS, GCP ve aynı anda birçok başka sağlayıcıdaki kaynakları yönetebilir. Azure üzerinde Terraform, ARM API ile etkileşim kurmak için AzureRM sağlayıcısını kullanır ve bu nedenle çoklu bulut kullanan kuruluşlar için popüler bir tercihtir.
AzureRM Terraform sağlayıcısı
AzureRM sağlayıcısı, Terraform'un indirip kullandığı ve Terraform yapılandırmasını ARM API çağrılarına dönüştüren bir eklentidir. Bakımı HashiCorp ve Microsoft tarafından yapılır ve Azure kaynaklarını Terraform ile yönetmenin resmî yoludur. Sağlayıcıyı subscription ID'niz ve kimlik doğrulama yönteminizle yapılandırın, ardından indirmek için terraform init komutunu çalıştırın.
# main.tf — configure the AzureRM provider
terraform {
required_providers {
azurerm = {
source = 'hashicorp/azurerm'
version = '~> 3.0'
}
}
}
provider 'azurerm' {
features {}
subscription_id = var.subscription_id
}Terraform dosya yapısı
Tipik bir Azure Terraform projesi birkaç .tf dosyasına bölünür: main.tf kaynak bildirimlerini içerir, variables.tf girdi değişkenlerini tanımlar, outputs.tf çıktı değerlerini tanımlar ve terraform.tfvars belirli bir Environment için değişken değerlerini sağlar. Terraform, geçerli dizindeki tüm .tf dosyalarını otomatik olarak yükler; bu nedenle birden çok dosyaya bölmek yalnızca okunabilirlik içindir.
# variables.tf
variable 'resource_group_name' {
description = 'Name of the resource group'
type = string
default = 'my-rg'
}
variable 'location' {
description = 'Azure region'
type = string
default = 'eastus'
}Azure kaynaklarını tanımlama
Terraform'da Azure kaynaklarını resource bloklarını kullanarak tanımlarsınız. Blok türü resource anahtar sözcüğüdür; bunun ardından AzureRM kaynak türü (örneğin 'azurerm_resource_group') ve yapılandırma içinde kaynağa başvurmak için kullanılan yerel bir ad gelir. Terraform'daki özellik adlarında, ARM JSON'da kullanılan camelCase veya PascalCase yerine snake_case kullanılır.
# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
name = var.resource_group_name
location = var.location
}
resource 'azurerm_storage_account' 'storage' {
name = 'mystorageaccount'
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = 'Standard'
account_replication_type = 'LRS'
tags = {
environment = 'dev'
}
}Terraform iş akışı: Init, Plan, Apply
Temel Terraform iş akışı üç adımdan oluşur. terraform init, AzureRM sağlayıcısını indirir ve arka ucu hazırlar. terraform plan, yapılandırmanızı geçerli durumla karşılaştırır ve oluşturulacak, değiştirilecek veya yok edilecek öğelerin farkını gösterir; bu, ARM'deki what-if işlemine benzer. terraform apply, planı yürütür ve Azure'ı yapılandırmanızla eşleşecek şekilde günceller.
# Step 1: Initialise the project and download providers
terraform init
# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan
# Step 3: Apply the plan
terraform apply tfplan
# Destroy all managed resources
terraform destroyTerraform durumu
Terraform, yönetilen tüm kaynakların geçerli durumunu kaydeden ve bunları yapılandırmanızla eşleyen bir durum dosyasını (terraform.tfstate) yönetir. Bu dosya, yapılandırılanlarla Azure'da var olanlar arasındaki sapmayı algılamasını sağlar. Ekip ortamlarında, tüm ekip üyelerinin aynı durum dosyasını paylaşması için durumu uzaktan bir Azure Storage Account içinde (Terraform arka ucu olarak) depolayın.
# Configure remote state in Azure Blob Storage
terraform {
backend 'azurerm' {
resource_group_name = 'tfstate-rg'
storage_account_name = 'tfstateaccount'
container_name = 'tfstate'
key = 'prod.terraform.tfstate'
}
}Terraform'da Azure kimlik doğrulaması
Terraform, Azure için çeşitli kimlik doğrulama yöntemlerini destekler. Yerel geliştirme sırasında az login (Azure CLI kimlik doğrulaması) kullanın; Terraform kimlik bilgilerini otomatik olarak alır. CI/CD işlem hatlarında, ortam değişkenleri aracılığıyla aktarılan istemci parolasına veya sertifikaya sahip bir Service Principal kullanın. Azure tarafından barındırılan aracı veya sanal makineler için, en güvenli ve gizli bilgi gerektirmeyen kimlik doğrulaması olarak bir Managed Identity kullanın.
# Option 1: Azure CLI (local dev)
az login
terraform plan
# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform planYeniden kullanım için Terraform modülleri
Bicep modülleri gibi Terraform modülleri de altyapı kalıplarını paketlemenize ve yeniden kullanmanıza olanak tanır. Modül, .tf dosyalarını içeren bir dizindir. Buna bir module bloğuyla başvurur, girdileri variables aracılığıyla aktarır ve çıktıları kullanırsınız. Terraform Registry, doğrudan kullanabileceğiniz AzureRM ağ modülü gibi yüzlerce topluluk ve doğrulanmış Azure modülünü barındırır.
# Use a module from the Terraform Registry
module 'vnet' {
source = 'Azure/vnet/azurerm'
version = '4.0.0'
resource_group_name = azurerm_resource_group.main.name
vnet_location = azurerm_resource_group.main.location
use_for_each = true
address_space = ['10.0.0.0/16']
subnet_prefixes = ['10.0.1.0/24', '10.0.2.0/24']
subnet_names = ['web', 'app']
}Terraform ne zaman, Bicep ne zaman seçilmeli
Kuruluşunuz yalnızca Azure kullanıyorsa ve yeni Azure özellikleriyle en sıkı tümleştirmeyi istiyorsa Bicep'i seçin (Bicep, yeni kaynak türlerini ilk günden destekler). Birden çok bulut sağlayıcısındaki kaynakları yönetiyorsanız, geniş topluluk modülü ekosistemine ihtiyaç duyuyorsanız veya HCL söz dizimini ve HashiCorp araç zincirini tercih ediyorsanız Terraform'u seçin. Yalnızca Azure'a yapılan dağıtımlar için her ikisi de geçerlidir; çoğu zaman kararı kuruluş tercihi belirler.
Mevcut kaynakları içeri aktarma
Terraform'u kullanmaya başlamanızdan önce Azure'da kaynaklar zaten varsa terraform import komutunu kullanarak bunları Terraform yönetimine alabilirsiniz. Bu komut, kaynağın geçerli durumunu alır ve Terraform durum dosyasına ekler. İçeri aktarma işleminden sonra, içeri aktarılan kaynakla eşleşen ilgili yapılandırma bloğunu elle yazmanız ve ardından fark olmadığını doğrulamak için terraform plan komutunu çalıştırmanız gerekir.
# Import an existing resource group into Terraform state
terraform import \
azurerm_resource_group.main \
'/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'
# Terraform 1.5+ supports import blocks in configuration
import {
to = azurerm_resource_group.main
id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}Azure'da Terraform için en iyi uygulamalar
Azure'da Terraform için şu en iyi uygulamaları izleyin: durumu uzaktan depolayın ve Azure Blob Storage'da durum kilitlemeyi etkinleştirin, farklı ortamlar için çalışma alanlarını veya ayrı durum dosyalarını kullanın, gizli bilgileri kesinlikle kaynak denetimine kaydetmeyin; bunun yerine Azure Key Vault veri kaynaklarını kullanın, bozucu değişikliklerden kaçınmak için sağlayıcı sürümlerini sabitleyin ve plan onay kapıları içeren bir CI/CD işlem hattında (Azure Pipelines veya GitHub Actions) Terraform'u çalıştırın.
Hızlı kontrol
Bu derste ele alınan Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.
Ders özeti
Bu derste şunları öğrendiniz: Terraform, Azure kaynaklarını yönetmek için AzureRM sağlayıcısını kullanan, buluttan bağımsız bir IaC aracıdır; init, plan, apply iş akışı güvenli ve öngörülebilir dağıtımlar sağlar; Azure Blob Storage'daki uzak durum, ekip iş birliği için gereklidir. Sırada App Service planları ve Web App'ler oluşturmayı inceleyeceğiz.
Sıkça Sorulan Sorular
“Azure'da Terraform” dersi ücretsiz mi?
Evet — “Azure'da Terraform” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Azure Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Azure Fundamentals kursu toplamda 4 dersten oluşur.
“Azure'da Terraform” dersinde ne öğreneceğim?
AzureRM Terraform sağlayıcısını yapılandırın, temel bir altyapı planı yazın ve yerel ARM/Bicep araçları yerine Terraform'u ne zaman tercih etmeniz gerektiğini anlayın. Azure Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Azure Fundamentals öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Azure Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Azure'da Terraform” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Azure Fundamentals dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Azure Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.