Genel

Terraform ile Infrastructure as Code: Kurumsal Altyapıyı Kodla Yönetin

· 4 dakika okuma · 6
Terraform ile Infrastructure as Code: Kurumsal Altyapıyı Kodla Yönetin

Merhaba,

Kurumsal altyapıyı elle konfigüre etmek ölçeklenmiyor, tekrarlanmıyor ve denetlenemiyor. Infrastructure as Code (IaC) bu problemi çözüyor; Terraform ise IaC araçlarının fiili standardı haline geldi. Gelin derinlemesine inceleyelim arkadaşlar.

Infrastructure as Code Neden Şart?

Geleneksel yöntemde altyapı değişiklikleri elle yapılıyor, dokümante edilemiyor, kimin ne yaptığı bilinmiyor. Bir sunucu kurulumu 3 saat, 10 sunucu kurulumu 30 saat. Üretim ve test ortamları zamanla senkrondan çıkıyor. IaC ile altyapı tanımı kod olarak Git'te yaşıyor: versiyonlanmış, incelenebilir, tekrarlanabilir ve otomasyon pipeline'ına eklenebilir.

Terraform Nedir?

HashiCorp'un geliştirdiği, çok bulutlu (multi-cloud) IaC aracı. HCL (HashiCorp Configuration Language) ile altyapı kaynakları bildirimsel olarak tanımlanıyor. Azure, AWS, GCP, VMware, Kubernetes ve 3.000+ provider desteği var. terraform plan ile değişiklikleri göster, terraform apply ile uygula, terraform destroy ile temizle. Yalın ama güçlü iş akışı.

HCL ile Kaynak Tanımı

Temel Terraform konfigürasyonu şöyle görünüyor:

resource "azurerm_virtual_machine" "web" {
  name                = "web-vm-prod"
  location            = var.location
  resource_group_name = azurerm_resource_group.main.name
  vm_size             = "Standard_D2s_v3"
  ...
}

Kaynaklar arasındaki bağımlılıklar otomatik çözülüyor. Değişkenler (var.), çıktılar (output) ve veri kaynakları (data) ile esnek yapılar kurulabiliyor.

State Yönetimi: En Kritik Konu

Terraform, gerçek altyapı durumunu terraform.tfstate dosyasında tutuyor. Bu dosya olmadan Terraform neyin var neyin yok olduğunu bilemiyor. Kurumsal ortamda state'i yerel dosyada tutmak tehlikeli — kaybolabilir, çakışma yaratabilir. Remote backend zorunlu: Azure Blob Storage, AWS S3, Terraform Cloud. State lock mekanizması eş zamanlı değişikliklerden koruyor.

Modüler Yapı: Tekrar Kullanılabilir Altyapı

Kurumsal altyapıda her proje için sıfırdan Terraform yazmak verimsiz. Modüller, altyapı bileşenlerini paketliyor. Kurumsal ağ modülü, Kubernetes cluster modülü, veritabanı modülü — bunları bir kez yazın, tüm projeler kullansın. Terraform Registry'de HashiCorp ve topluluk modülleri mevcut. İç registry için Terraform Cloud veya Git repo kullanılabilir.

Workspace ile Ortam Yönetimi

Dev, test, prod ortamları için ayrı Terraform workspace'leri kullanın. Aynı kod tabanı farklı değişken dosyalarıyla farklı ortamlara deploy ediliyor. terraform workspace select prod ile prod state'ine geçilir. Büyük kurumsal ortamlarda workspace yerine her ortam için ayrı Terraform konfigürasyonu tercih edilebilir — izolasyon daha güçlü olur.

CI/CD Entegrasyonu: GitOps ile Altyapı

Pull request açıldığında GitHub Actions veya Azure DevOps pipeline'ı otomatik terraform plan çalıştırır, çıktıyı PR yorumuna yazar. Onaylandıktan sonra merge ile terraform apply otomatik tetiklenir. Altyapı değişiklikleri kod review sürecinden geçiyor — kimse portal'dan elle değişiklik yapamaz. Altyapı kontrolü bu noktada gerçek anlamda sağlanmış oluyor.

Sonuç

Terraform, kurumsal altyapı yönetimini koda dönüştürmenin en olgun yolu. State yönetimi ve modüler yapıya dikkat ederseniz ölçeklenebilir, denetlenebilir ve tekrarlanabilir bir altyapı elde ediyorsunuz. Altyapınız hâlâ elle yönetiliyorsa Terraform'u değerlendirme vakti gelmiştir :)

İyi Günler Dilerim,

Bu yazıyı paylaş: