Sunucu kurulumu artık saatlerce panelde tıklama yapmak demek değil. Hele ki birden fazla VDS sunucu yönetiyorsanız, her şeyi elle yapmak hem zaman kaybı hem de tutarsızlık yaratır. Terraform, altyapınızı kod olarak tanımlamanızı sağlar; böylece aynı yapıyı tekrar tekrar, hatasız şekilde ayağa kaldırabilirsiniz. Bu yazıda HostingServer.com.tr üzerinden Terraform ile VDS dağıtımını adım adım anlatıyorum.
Neden Terraform?
VDS sunucusu kiralamak basit görünebilir; ama bir süre sonra işletim sistemi, güvenlik duvarı, SSH anahtarları, disk boyutu derken işler karmaşıklaşır. Terraform burada devreye girer. Kod ile tanımladığınız her kaynağı, her seferinde aynı şekilde oluşturur. Örneğin 10 tane sunucu açmanız gerektiğinde, döngü ile tek dosyadan halledebilirsiniz. Ayrıca sürüm kontrol sistemiyle (Git) birlikte kullandığınızda, altyapıdaki değişiklikleri takip etmek ve geri almak da mümkün olur.
Terraform ile VDS Dağıtımına Başlarken
Öncelikle Terraform'u bilgisayarınıza kurmanız gerekiyor. Linux veya macOS kullanıyorsanız brew install terraform ya da resmi siteden indirme seçenekleri var. Windows için de exe dosyasını PATH'e eklemeniz yeterli. Kurulum sonrası terraform version komutuyla doğrulayabilirsiniz.
Provider ve Kimlik Doğrulama Ayarları
Terraform, VDS sağlayıcınızla konuşmak için bir "provider" kullanır. HostingServer.com.tr'nin kendi sağlayıcısı ya da OpenStack tabanlı bir API'si varsa, ilgili provider dokümantasyonuna göre ayar yapabilirsiniz. Genellikle API anahtarını bir environment variable olarak tanımlarsınız. Örneğin:
provider "vdsprovider" { api_url = var.api_url api_key = var.api_key }Kimlik bilgilerini doğrudan dosyaya yazmak güvenli değildir. O yüzden terraform.tfvars dosyası ya da ortam değişkenleri kullanın. Ben genellikle TF_VAR_api_key gibi değişkenlerle çalışmayı tercih ediyorum.
İlk VDS Sunucunu Tanımlama
Basit bir VDS tanımı şuna benzer:
resource "vdsprovider_server" "web" { name = "web-01" region = "istanbul" plan = "vds-4gb" image = "ubuntu-22.04" ssh_key_id = vdsprovider_ssh_key.main.id tags = ["web", "production"] }Burada dikkat etmeniz gereken noktalar: region ve plan seçeneklerini provider dokümantasyonuna göre yazmanız. Yanlış bir plan kodu alırsanız, Terraform hata verir ve sizi uyarır. Bu da elle yaptığınızda farketmeyebileceğiniz hataları önceden yakalamanızı sağlar.
Birden Fazla Sunucu Yönetimi ve Modülerlik
Diyelim ki üç web sunucusu ve iki veritabanı sunucusu kurmanız gerekiyor. Terraform'da döngüler ve modüller sayesinde bu işi çok kısa sürede halledersiniz. Örneğin:
resource "vdsprovider_server" "app" { count = 3 name = "app-${count.index + 1}" ... }Modüller ise tekrar kullanılabilir yapılar oluşturmanıza imkan tanır. Böylece staging ve production ortamları için aynı modülü farklı değişkenlerle çağırabilir, kod tekrarından kaçınırsınız.
Gelişmiş İpuçları ve Sık Yapılan Hatalar
İlk denemelerde en çok karşılaştığım sorun, terraform plan çalıştırmadan doğrudan apply yapmak. Plan çıktısı, nelerin değişeceğini gösterir; bu sayede yanlış yapılandırmayı fark edersiniz. Ayrıca state dosyasını takım arkadaşlarınızla paylaşıyorsanız, bir uzak state backend'i (örneğin S3 veya Terraform Cloud) kullanmanız şart. Aksi takdirde kilitlenmeler yaşarsınız.
Bir diğer hata ise SSH anahtarlarını her sunucu için yeniden üretmek. Terraform'da önce bir anahtar kaynağı oluşturup, tüm sunucularda aynı anahtarı referans vermek çok daha mantıklı. Ben vdsprovider_ssh_key kaynağını ayrı bir module alarak, hem güvenliği hem de yönetimi kolaylaştırıyorum.
Sonuç
Terraform ile VDS dağıtımı, özellikle hızlı büyüyen projelerde size ciddi zaman kazandırır. İlk kurulum biraz efor gerektirse de, sonrasında tek tıkla (ya da tek komutla) sunucularınızı ayağa kaldırabilirsiniz. HostingServer.com.tr üzerinden kiraladığınız VDS'lere bu yaklaşımı uygulayarak, altyapı yönetimini profesyonel bir seviyeye taşıyabilirsiniz. Denemekten çekinmeyin; yanlış yaparsanız terraform destroy ile her şeyi sıfırdan başlatabilirsiniz.