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ş: