Modül 1 · Container & Temel Altyapı · ⏱ 7 dk

Terraform: altyapıyı kodla yaz

Terraform infrastructure as code

Bu derste neler öğreneceksin

  • Terraform resource block yazar
  • terraform.tfvars ile parametre geçer
  • terraform apply çalıştırır

Altyapıyı Kodla Yazmak: Terraform

Elif artık sadece yerel bilgisayarında çalışmıyor. Müşterileri şehir dışından geliyor, sunucu kiralaması gerekiyor. Eskiden sunucu kirala, panele tıkla, ayarla, bir şey unut, baştan başla. Çok yorucu.

Bir gün ablası dedi ki: “Altyapıyı kodla yaz. Her şey bir dosyada olsun, bir komutla hepsi kurulsun.” Elif tanıştı: Terraform.

Terraform bir tarif defteri gibidir. “Şu sunucu olsun, şu veritabanı olsun, şu kullanıcı olsun” yazıyorsun, sonra terraform apply diyorsun, gidip hepsini kuruyor. Üstelik bir daha lazım olursa aynı tarif defteriyle başka yerde de kurabilirsin.

Terraform Kur

Mac:

brew install terraform

Windows:

Scoop ile: scoop install terraform. Veya developer.hashicorp.com/terraform/install adresinden indir.

Linux:

sudo apt install terraform

Kontrol: terraform --version. 1.x görmelisin.

İlk Proje

Yeni bir klasör aç, içine main.tf adlı bir dosya koy:

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.0"
    }
  }
}

provider "docker" {}

resource "docker_container" "limonata_db" {
  name  = "limonata-db"
  image = "postgres:18"
  env = [
    "POSTGRES_USER=elif",
    "POSTGRES_PASSWORD=limonata",
    "POSTGRES_DB=limonata_db"
  ]
  ports {
    internal = 5432
    external = 5432
  }
}

Bu dosya 3 şey söylüyor:

  1. terraform bloku: “Bana Docker provider lazım” diyor.
  2. provider “docker”: “Docker ile konuşacağım.”
  3. resource: “Bir tane Postgres konteyneri kur, adı limonata-db olsun.”

hcl Terraform’un kendi dili. Okunaklı, renkli, İngilizceye yakın.

Başlat ve Uygula

Klasörde terminal aç ve:

terraform init      # Provider'ı indirir
terraform plan      # Ne yapacağını gösterir (kurulum yok)
terraform apply     # Gerçekten kurar

apply deyince “Do you want to perform these actions?” diye sorar. yes yaz. Birkaç saniye bekle. Sonunda “Apply complete!” yazısını görürsün. Tebrikler, bir sunucuyu kodla kurdun.

Kontrol etmek için: docker ps. Orada limonata-db isimli konteyneri göreceksin.

Parametrelerle Oynamak: tfvars

Diyelim şifreyi değiştirmek istedin. Kodu açıp düzenlemek yerine bir değişken kullan:

main.tf dosyasına şunu ekle:

variable "db_password" {
  type        = string
  description = "Postgres şifresi"
  sensitive   = true
}

Ve resource’ta:

env = [
  "POSTGRES_USER=elif",
  "POSTGRES_PASSWORD=${var.db_password}",
  "POSTGRES_DB=limonata_db"
]

Şimdi terraform.tfvars adında yeni bir dosya aç:

db_password = "limonata2026"

Bu sayede kodu paylaşırken şifren gizli kalır. terraform apply deyince bu yeni şifreyle konteyner güncellenir. Terraform, değişeni algılar, sadece onu değiştirir.

Yıkmak

İşi bitince konteyneri kaldırmak için:

terraform destroy

Tüm altyapıyı söker. yes de. Tekrar lazım olursa terraform apply ile hepsi geri gelir.

Küçük Ödev

  1. db_password değişkenini terraform.tfvars ile değiştir. apply çalıştır.
  2. docker ps ile gerçekten değişti mi bak.
  3. Limonatacı için bir volume (kalıcı disk) ekle, böylece konteyner silinse bile veriler kaybolmasın.

Sıradaki

Yerel bilgisayarı öğrendin. Şimdi buluta çıkıyoruz →