Tüm Sistemler Çalışıyor
Network Durumu
Ana Sayfa Blog Terraform ile Infrastructure as Code: 7 Adımda Tam Kapsamlı Rehber 2026

Terraform ile Infrastructure as Code: 7 Adımda Tam Kapsamlı Rehber 2026

Terraform ile Infrastructure as Code: 7 Adımda Tam Kapsamlı Rehber 2026

Terraform Nedir ve Neden Kullanmalısınız?

Terraform Nedir ve Neden Kullanmalısınız? - Terraform Infrastructure as Code
Terraform Nedir ve Neden Kullanmalısınız?

Terraform, HashiCorp tarafından geliştirilen açık kaynaklı bir Infrastructure as Code (IaC) aracıdır. Altyapınızı kod olarak tanımlayarak, manuel konfigürasyon hatalarını %70'e varan oranlarda azaltabilirsiniz. Bu sayede, birden fazla ortam (development, staging, production) arasında tutarlı yapıların oluşturulması ve sürdürülmesi mümkün olur.

Terraform’un en büyük avantajı, plan komutu ile değişiklikleri önceden görüp onaylayabilmenizdir. Böylece, yanlış bir konfigürasyonun prodüksiyona gitmesi riski minimuma iner. Ayrıca, state dosyası sayesinde mevcut altyapı durumu her zaman izlenir ve ekip içinde senkronizasyon sağlanır.

Türkiye’de VDS sunucu paketleri ve fiziksel sunucu (dedicated server) gibi hizmetleri otomatikleştirerek maliyet tasarrufu ve hızlı ölçeklenebilirlik elde edebilirsiniz.

Temel Kavramlar ve Terminoloji

Terraform kullanmaya başlamadan önce bazı temel kavramları öğrenmek önemlidir:

  • Provider: AWS, Azure, Google Cloud gibi bulut sağlayıcılarını ve on-premise çözümleri yönetmek için kullanılan eklentidir.
  • Resource: Gerçek altyapı öğesidir; örneğin bir aws_instance bir EC2 sanal makinesini temsil eder.
  • Module: Tekrar kullanılabilir yapı taşlarıdır. Büyük projelerde kodun tekrarını önler.
  • State: Terraform’un altyapının mevcut durumunu sakladığı dosyadır. Remote backend (ör. S3 veya Terraform Cloud) ile paylaşılmalıdır.

Bu terimler, WordPress hosting gibi spesifik hizmetlerin otomasyonunda da aynı mantıkla çalışır; sadece provider ve resource tipleri değişir.

Terraform Kurulumu ve İlk Proje Oluşturma

Terraform’u kurmak oldukça basittir. Resmi sitesinden zip dosyasını indirip sistem PATH’ine ekleyebilirsiniz. Linux ve macOS kullanıcıları için brew install terraform komutu da işe yarar.

İlk projenizi oluştururken şu adımları izleyin:

  1. Çalışma dizini oluşturun ve main.tf dosyasını ekleyin.
  2. Provider tanımlaması yapın; örnek: provider "aws" { region = "eu-west-1" }.
  3. İlk resource olarak bir VPC veya basit bir EC2 instance ekleyin.
  4. terraform init ile gerekli pluginleri indirin.
  5. terraform plan ile değişiklikleri önizleyin, ardından terraform apply ile uygulayın.

Bu adımları tamamladığınızda, altyapınız kodla yönetilmeye başlar ve AMD Ryzen VDS sunucular gibi yüksek performanslı ortamlarınızı da aynı yöntemle tanımlayabilirsiniz.

Modüllerle Yeniden Kullanılabilir Altyapı Tasarımı

Modüllerle Yeniden Kullanılabilir Altyapı Tasarımı - Terraform Infrastructure as Code
Modüllerle Yeniden Kullanılabilir Altyapı Tasarımı

Projeler büyüdükçe aynı yapı taşlarını tekrar tekrar tanımlamak yerine modüller oluşturmak mantıklıdır. Modüller, parametre alarak farklı ortamlara uyum sağlar ve kodun bakımını kolaylaştırır.

Örneğin, bir VPC modülü şu şekilde tanımlanabilir:

module "vpc" {
  source = "./modules/vpc"
  cidr   = var.vpc_cidr
  tags   = var.common_tags
}

Bu modülü farklı projelerde sadece source ve değişkenleri değiştirerek kullanabilirsiniz. Böyle bir yaklaşım, kurumsal hosting çözümlerinde aynı ağ yapılandırmasını birden çok müşteriye hızlıca sunmanızı sağlar.

State Yönetimi ve Uzaktan Backend Kullanımı

Terraform’un en kritik bileşeni state dosyasıdır. Yerel bir dosya olarak saklandığında ekip içinde senkronizasyon sorunları ortaya çıkabilir. Bu sorunu çözmek için remote backend kullanmanız önerilir.

En yaygın backend seçenekleri:

BackendAvantajDezavantaj
AWS S3 + DynamoDBYüksek erişilebilirlik, kilitleme desteğiAWS hesabı gerektirir
Terraform CloudKolay UI, ekip yönetimiÜcretli planlar sınırlı
Azure Blob StorageAzure ortamlarıyla entegrasyonAzure bağımlılığı

Remote backend sayesinde, birden fazla geliştirici aynı anda apply yaparken state kilitleme mekanizması çakışmaları önler. Özellikle e-ticaret hosting gibi yüksek trafiğe sahip projelerde bu güvenlik kritik bir faktördür.

Gerçek Dünya Senaryosu: Çok Katmanlı Web Uygulaması

Bir e-ticaret sitesini düşünün; ön yüz (React), API katmanı (Node.js) ve veri tabanı (PostgreSQL) ayrı ayrı sunucularda çalışıyor. Bu altyapıyı Terraform ile aşağıdaki gibi tanımlayabilirsiniz:

  1. VPC ve alt ağları (public, private) oluşturun.
  2. Load balancer (ALB) ve güvenlik grupları tanımlayın.
  3. EC2 instance'ları için aws_autoscaling_group ve launch_template kullanın.
  4. RDS PostgreSQL için aws_db_instance oluşturun.
  5. Gizli anahtarları ve ortam değişkenlerini AWS Secrets Manager ile yönetin.

Bu yapı sayesinde, yeni bir özellik eklemek için sadece ilgili modülü güncellemek yeterli olur; tüm ortam otomatik olarak senkronize edilir. Ayrıca, WAF güvenlik duvarı ekleyerek DDoS ve OWASP Top 10 saldırılarına karşı koruma sağlarsınız.

En Yaygın Hatalar ve Maliyet Etkileri

Terraform kullanırken sıkça yapılan hatalar şunlardır:

  • State dosyasının versiyon kontrolüne eklenmesi: Bu, hassas bilgiler sızdırabilir ve ekip içinde çakışmalara yol açar.
  • Provider sürüm uyumsuzluğu: Yeni bir provider sürümü çıktığında, terraform init -upgrade yapılmazsa beklenmeyen hatalar ortaya çıkar.
  • Kaynakların hard‑code edilmesi: Değişkenler kullanılmadığında, aynı kod farklı ortamlar için yeniden yazılır ve bakım maliyeti artar.

Bu hatalar, ortalama bir projede %30’a varan ek maliyet ve 2‑3 gün gecikmeye neden olabilir. Bu nedenle, versiyonlama, değişken yönetimi ve remote backend gibi en iyi uygulamalara sadık kalmak kritik önemdedir.

Sıkça Sorulan Sorular

Terraform’da state dosyası nasıl güvenli bir şekilde saklanır?

State dosyasını S3 gibi şifreli bir depolama alanına ve DynamoDB ile kilitleme mekanizmasıyla saklamak en güvenli yöntemdir. Ayrıca, erişim politikalarını IAM üzerinden sıkılaştırarak sadece yetkili kullanıcıların erişimini sağlayabilirsiniz.

Modül kullanmanın dezavantajları var mı?

Modüller kodun tekrarını önlese de, aşırı soyutlama yönetimi zorlaştırabilir. Özellikle çok katmanlı modüller arasında bağımlılıkların takibi iyi yapılmazsa, değişiklikler beklenmedik yan etkiler yaratabilir.

Terraform Cloud ücretsiz planı yeterli mi?

Ücretsiz plan temel özellikleri (remote backend, plan çıktısı paylaşımı) sunar ancak ekip sayısı ve çalışma alanı (workspace) limiti vardır. Büyük ölçekli projeler için Terraform Enterprise veya S3 backend tercih edilmelidir.

Terraform ile mevcut altyapıyı nasıl import ederim?

terraform import komutu ile var olan kaynakları state dosyasına ekleyebilirsiniz. Örneğin, bir EC2 instance’ı import etmek için terraform import aws_instance.my_instance i-1234567890abcdef0 komutunu kullanın.

Sonuç ve Bir Sonraki Adımınız

Terraform, altyapınızı kodla yöneterek hataları azaltır, ölçeklenebilirliği artırır ve ekip içinde iş birliğini kolaylaştırır. Bu makalede temel kavramları, kurulum adımlarını, modül kullanımını ve gerçek dünya senaryosunu inceledik. Şimdi, kendi projeniz için bir Terraform çalışma alanı (workspace) oluşturun, remote backend’i yapılandırın ve ilk modülünüzü yazın. Böylece, altyapınızın otomasyonunu tam anlamıyla hayata geçirmiş olacaksınız.