
Infrastructure as Code (IaC) Nedir?
2026-07-09 · 10 dk okuma
Infrastructure as Code (IaC), altyapını (sunucular, ağlar, veritabanları) bulut panelinden elle tıklayarak değil, sürüm kontrolüne alınabilen kod dosyalarıyla tanımlama ve yönetme yaklaşımıdır. Kod ne diyorsa altyapı odur.
Elle kurmanın sorunu
- Tekrarlanamaz: aynı ortamı ikinci kez birebir kuramazsın
- Belgesiz: kimin neyi neden değiştirdiği kayıt altında değil
- Hataya açık: elle tıklama = insan hatası
- Ölçeklenmez: 50 sunucuyu elle yönetmek imkânsız
IaC neyi çözer?
Altyapın artık kod olduğu için: Git'te versiyonlanır (kim neyi ne zaman değiştirdi bellidir), code review'dan geçer, tek komutla aynı ortamı sıfırdan kurabilirsin ve dev/test/prod ortamlarını birebir aynı tutabilirsin.
Terraform ile ilk adım
Terraform, en yaygın IaC aracıdır ve çok sayıda sağlayıcıyla (AWS, GCP, Azure...) çalışır. İstediğin durumu bildirimsel (declarative) yazarsın; Terraform mevcut durumla farkı hesaplayıp uygular:
resource "aws_s3_bucket" "data" {
bucket = "cloudpuz-ornek-bucket"
}
# terraform init → başlat
# terraform plan → ne olacağını gör
# terraform apply → uygulaVaka: elle kurulmuş kaynağı IaC'ye taşı
Gerçek hayatta çoğu ekip, elle kurulmuş bir altyapıyı sonradan IaC'ye devralır. Panelden açılmış bir S3 bucket'ını Terraform yönetimine sokalım — silip yeniden kurmadan.
- 1Kaynağı koda declare et (henüz apply etme)
- 2terraform import ile mevcut kaynağı state'e bağla
- 3terraform plan → 'No changes' görene kadar kodu gerçeğe hizala
- 4Artık kaynak IaC yönetiminde: değişiklikler code review + plan'dan geçer
$ terraform import aws_s3_bucket.data cloudpuz-mevcut-bucketImport successful!$ terraform plan~ aws_s3_bucket.data tags: {} -> {Env="prod"} # kod ile gerçek arasında fark var# Kodu gerçeğe hizala (tags ekle), sonra:$ terraform planNo changes. Your infrastructure matches the configuration. # ✓ artık IaC yönetiminde
Dikkat
Yaygın hata: import etmeden apply çalıştırmak. Terraform kaynağı state'inde görmediği için AYNI isimde ikincisini oluşturmaya çalışır ve çakışır (ör. 'BucketAlreadyExists'). Önce import, sonra plan.
Mini görev
Konsoldan elle bir S3 bucket (veya bir local_file) oluştur. Terraform'da declare et, 'terraform import' ile state'e al, 'plan' 'No changes' diyene kadar kodu hizala. Bonus: bir tag'i konsoldan değiştir, plan'da drift'i gör.
Uygulamalı görev — tarayıcıda dene
IaC, modern DevOps'un merkezindedir. Terraform state, modüller ve gerçek sağlayıcılarla pratik yapmak için Cloudpuz'un Terraform lab'larına göz at.
Resmi kaynaklar
Son doğrulama: 2026-07-17
Sıkça Sorulan Sorular
Infrastructure as Code (IaC) nedir?
Infrastructure as Code (IaC), altyapını (sunucular, ağlar, veritabanları) bulut panelinden elle tıklayarak değil, sürüm kontrolüne alınabilen kod dosyalarıyla tanımlama ve yönetme yaklaşımıdır. Kod ne diyorsa altyapı odur. Bu sayede altyapı versiyonlanabilir, gözden geçirilebilir ve tekrarlanabilir hale gelir.
Altyapıyı elle kurmanın sorunları nelerdir?
Elle kurulum tekrarlanamaz; aynı ortamı ikinci kez birebir kuramazsın. Ayrıca belgesizdir (kimin neyi neden değiştirdiği kayıtlı değildir), insan hatasına açıktır ve ölçeklenmez; 50 sunucuyu elle yönetmek pratikte imkânsızdır.
IaC hangi sorunları çözer?
Altyapı artık kod olduğu için Git'te versiyonlanır ve kim neyi ne zaman değiştirdiği bellidir. Code review'dan geçer, tek komutla aynı ortam sıfırdan kurulabilir ve dev/test/prod ortamları birebir aynı tutulabilir.
Terraform ile IaC'ye nasıl başlanır?
Terraform en yaygın IaC aracıdır ve AWS, GCP, Azure gibi birçok sağlayıcıyla çalışır. İstediğin durumu bildirimsel (declarative) yazarsın; Terraform mevcut durumla farkı hesaplayıp uygular. Temel akış: `terraform init` başlatır, `terraform plan` ne olacağını gösterir, `terraform apply` uygular.
Elle kurulmuş bir kaynak Terraform yönetimine nasıl alınır?
Önce kaynak koda declare edilir (henüz apply edilmez), sonra `terraform import` ile mevcut kaynak state'e bağlanır. Ardından `terraform plan` 'No changes' diyene kadar kod gerçeğe hizalanır. Import etmeden apply çalıştırmak, Terraform kaynağı state'inde görmediği için aynı isimde ikincisini oluşturmaya çalışır ve çakışır (ör. 'BucketAlreadyExists').
Okumak yetmez — dene.
Bu konuları tarayıcıda gerçek terminalde uygula.