# Altyapı Kod Olarak (IaC): Terraform ve Ansible ile Sunucu ve Ağ Kurulumlarını Kodlaştırma

- Bağlantı: https://musti.org/inovasyon/altyapi-kod-olarak-iac-terraform-ansible/
- Yayımlanma: 2026-09-21T21:56:08+03:00
- Yazar: mmutlu

Bir sunucunun nasıl kurulduğu bilgisi genelde iki yerde yaşar: tek bir kişinin kafasında,
ya da güncelliğini çoktan yitirmiş bir Word dokümanında. O kişi izinli olduğunda
ya da işten ayrıldığında ne olacak? **Infrastructure as Code (IaC)**, bu kırılgan
bilgiyi çalıştırılabilir, versiyonlanabilir koda dönüştürerek soruyu ortadan kaldırıyor.

## Neden Sadece “Güzel Bir Fikir” Değil

Elle yapılan kurulumlarda “geliştirmede çalışıyor, üretimde çalışmıyor” sorunlarının
çoğu, iki ortam arasındaki küçük ve fark edilmeyen yapılandırma farklarından kaynaklanır.
IaC ile aynı kod her ortamda çalıştırıldığında birebir aynı sonucu üretir — tutarlılık
artık bir umut değil, garantidir.

## Terraform: Ne Olması Gerektiğini Tanımlamak

Terraform, hangi kaynakların (sunucu, ağ, depolama) var olması gerektiğini bildirimsel
bir dille tanımlar:

    ```
    resource "aws_instance" "web_sunucu" {
      ami           = "ami-0c55b159cbfafe1f0"
      instance_type = "t3.medium"

      tags = {
        Name = "Web-Sunucu-Prod"
      }
    }
    ```

Bu kodu çalıştırdığınızda Terraform mevcut durumu kontrol eder, tanımlanan hedefe
ulaşmak için gereken oluşturma/güncelleme/silme adımlarını kendisi hesaplar.

## Ansible: Nasıl Yapılandırılacağını Uygulamak

Terraform “hangi sunucular var olsun” sorusuna cevap verirken, Ansible “bu sunucular
üzerinde ne çalışsın, nasıl ayarlansın” sorusuna cevap verir:

    ```
    - name: Web sunucularını yapılandır
      hosts: web_sunuculari
      tasks:
        - name: Nginx kurulumu
          apt:
            name: nginx
            state: present
        - name: Güvenlik duvarı kuralı ekle
          ufw:
            rule: allow
            port: '443'
    ```

İkisi birlikte kullanıldığında, sıfırdan bir ortamı (sunucu + ağ + yapılandırma)
tamamen otomatik ve tekrarlanabilir şekilde kurabiliyorsunuz. Bir felaket kurtarma
senaryosunda “3 gün süren manuel kurulum” yerine, aynı kodu çalıştırarak saatler
içinde eşdeğer bir ortam ayağa kaldırmak mümkün hale geliyor.

## Zihniyet Değişimi Gerektiriyor

Yıllardır GUI tabanlı araçlarla (Server Manager, vCenter) çalışmış biri için IaC’ye
geçiş “tıkla ve yapılandır” alışkanlığından “tanımla ve uygula” disiplinine geçmek
demek. Küçük başlamak işe yarıyor: önce tekrar eden, düşük riskli bir görevi (örneğin
standart bir test ortamı kurulumu) kodlaştırıp, güven arttıkça kapsamı genişletmek.

Bir de görünmeyen ama değerli bir kazanç var: IaC kodu Git gibi bir versiyon kontrol
sistemine konduğunda, “bu sunucuda ne zaman, kim, ne değiştirdi” sorusunun cevabı
artık kimsenin hafızasında değil, commit geçmişinde yazılı oluyor. Sorun giderme
ve denetim açısından bunun değerini abartmak zor.

## Pratikte Ne Değişir

IaC, altyapı yönetimini kişiye bağlı bir “sanat”tan mühendislik disiplinine taşıyor.
Terraform “ne olması gerektiğini”, Ansible “nasıl yapılandırılması gerektiğini” 
kodlaştırdığında, hem hız hem güvenilirlik kurumsal ölçekte artıyor.
