Dynamis

Infrastructure as Code nedir? Cloud altyapısı kodla nasıl yönetilir?

Infrastructure as Code nedir? Terraform, OpenTofu, state, drift, modules, secrets ve CI/CD ile cloud altyapısını version control altında nasıl yöneteceğinizi öğrenin.

Bu konuyu bir mühendisle konuşun30 dakikalık görüşme, mevcut durumunuz ve hedefinizle.
Özet çıkarımlar
  1. 01Infrastructure as Code, altyapı kaynaklarını manuel panel işlemleri yerine version control altında tutulan declarative veya imperative yapılandırmalarla yönetme yaklaşımıdır.
  2. 02Terraform ve OpenTofu IaC araçlarıdır; Infrastructure as Code kavramının kendisi tek bir ürüne bağlı değildir.
  3. 03State, declarative IaC araçlarında configuration ile gerçek provider kaynakları arasındaki ilişkiyi takip eder; ekip kullanımında remote state, locking ve erişim kontrolü önemlidir.
  4. 04Infrastructure drift, canlı ortamın repository'deki desired state'ten farklılaşmasıdır ve manuel panel değişiklikleri bunun yaygın nedenlerinden biridir.
  5. 05Production IaC değişiklikleri için pull request, validation, plan review ve kontrollü apply akışı değişiklik riskini azaltır.
Infrastructure as Code, Terraform, state ve cloud altyapı otomasyonunu gösteren kapak görseli

Kısaca

Infrastructure as Code (IaC), sunucu, network, storage, DNS ve benzeri altyapı kaynaklarını manuel panel işlemleri yerine version control altında tutulan yapılandırma dosyalarıyla tanımlama ve yönetme yaklaşımıdır. Amaç altyapıyı tekrar üretilebilir, gözden geçirilebilir ve otomasyona uygun hale getirmektir. Dynamis Teknoloji, IaC'yi yalnız Terraform dosyası yazmak değil; değişikliklerin planlanması, review edilmesi, uygulanması ve drift'in kontrol edilmesi için ortak bir operasyon modeli olarak ele alır.

Infrastructure as Code nedir?

Infrastructure as Code, altyapı kaynaklarını kod veya yapılandırma dosyalarıyla tanımlama yöntemidir.

Örneğin manuel olarak panelden:

  • VM oluşturmak
  • network açmak
  • firewall rule eklemek
  • DNS kaydı tanımlamak
  • Kubernetes cluster kaynağı hazırlamak

yerine bunlar repository içindeki dosyalarla ifade edilir.

Bu dosyalar daha sonra bir IaC aracı tarafından gerçek altyapıya uygulanır.

IaC ne işe yarar?

IaC'nin temel amacı manuel altyapı değişikliklerini azaltmak ve infrastructure değişikliklerini software delivery sürecine yaklaştırmaktır.

Başlıca faydaları:

  • Tekrarlanabilir kurulum
  • Version control
  • Peer review
  • Change history
  • Otomasyon
  • Environment consistency
  • Drift tespiti
  • Disaster recovery kolaylığı
  • Daha hızlı provisioning

Aynı altyapıyı test, staging ve production için benzer modellerle oluşturmak mümkün hale gelir.

Declarative ve imperative yaklaşım farkı

IaC araçları iki ana yaklaşım kullanabilir.

Declarative

İstenen son durumu tanımlarsınız.

Örneğin:

  • 3 VM olsun
  • private network bağlı olsun
  • load balancer iki backend'e trafik göndersin

Araç mevcut durum ile istenen durumu karşılaştırır ve gerekli değişikliği planlar.

Terraform ve OpenTofu bu modele örnektir.

Imperative

Hangi adımların hangi sırayla yapılacağını tarif edersiniz.

Örneğin:

  1. VM oluştur
  2. IP ata
  3. firewall rule ekle
  4. DNS kaydı oluştur

Script tabanlı otomasyon çoğu zaman imperative modele daha yakındır.

İki yaklaşım birlikte de kullanılabilir.

Desired state nedir?

Desired state, altyapının olması gereken tanımıdır.

Repository'de:

  • VM sayısı
  • CPU/RAM
  • network
  • security group
  • DNS
  • storage

tanımlanmış olabilir.

Gerçek altyapı bu tanımdan farklılaştığında drift oluşabilir.

IaC aracının görevi mevcut durum ile desired state arasındaki farkı görünür hale getirmektir.

Terraform nedir?

Terraform, HashiCorp tarafından geliştirilen yaygın bir Infrastructure as Code aracıdır.

Terraform configuration dosyalarıyla cloud ve altyapı kaynakları tanımlanabilir.

Tipik workflow:

  1. Configuration yazılır
  2. init çalıştırılır
  3. plan ile değişiklik görülür
  4. apply ile uygulanır

Terraform provider yapısı sayesinde çok sayıda platform ve servis desteklenir.

Bu sayfada Terraform'u IaC'nin kendisiyle eşitlemiyoruz.

Terraform yalnız araçlardan biridir.

OpenTofu nedir?

OpenTofu, açık kaynaklı Infrastructure as Code aracıdır ve Terraform-compatible workflow'a odaklanır.

HashiCorp Terraform ile benzer declarative model ve HCL syntax kullanır.

Takımlar araç seçerken:

  • lisans
  • provider desteği
  • state workflow
  • ecosystem
  • mevcut kod tabanı

gibi kriterleri değerlendirmelidir.

State nedir?

Declarative IaC araçlarının önemli parçalarından biri state bilgisidir.

Terraform state:

  • configuration içindeki kaynakları
  • gerçek provider kaynaklarıyla

eşleştirmeye yardımcı olur.

Örneğin configuration içinde bir VM tanımlıdır.

State dosyası bu tanımın cloud provider'daki hangi gerçek VM'e karşılık geldiğini izleyebilir.

Bu sayede plan aşamasında:

  • create
  • update
  • destroy

işlemleri hesaplanabilir.

State dosyası neden kritik?

State altyapının operasyonel verisini içerir.

Bu nedenle ekip kullanımında:

  • merkezi storage
  • erişim kontrolü
  • locking
  • encryption
  • backup

gibi kontroller önemlidir.

State'i geliştirici laptop'larında dağınık halde tutmak ekip çalışmasını zorlaştırabilir.

Bazı provider attribute'ları hassas veri içerebildiği için state güvenliği ayrıca değerlendirilmelidir.

Remote state neden kullanılır?

Birden fazla kişinin aynı IaC repository'sinde çalıştığı ortamda local state sorun yaratır.

Remote state:

  • ortak state kaynağı
  • locking
  • merkezi erişim
  • automation

sağlamaya yardımcı olabilir.

Örneğin CI/CD pipeline plan çalıştırırken aynı state'e erişebilir.

Infrastructure drift nedir?

Infrastructure drift, gerçek ortamın repository'deki tanımdan farklılaşmasıdır.

Örnek:

Repository'de firewall rule yok.

Bir administrator panel üzerinden manuel olarak rule ekliyor.

Artık canlı ortam ile kod farklı.

Bu drift'tir.

Drift şu nedenlerle oluşabilir:

  • manuel panel değişiklikleri
  • başka automation
  • emergency fix
  • provider-side change
  • IaC dışında oluşturulan kaynaklar

Drift neden risklidir?

Drift arttığında repository artık production'ın gerçek durumunu temsil etmez.

Sonuç:

  • plan beklenmeyen değişiklik gösterir
  • disaster recovery zorlaşır
  • ekip hangi ayarın doğru olduğunu bilemez
  • environment'lar birbirinden uzaklaşır

Bu nedenle production değişikliklerinin mümkün olduğunca IaC workflow üzerinden yapılması tercih edilir.

Plan neden apply'dan önce çalıştırılmalı?

Plan aşaması önerilen değişiklikleri önceden gösterir.

Örnek:

    • 2 VM create
  • ~ load balancer update
    • eski security group destroy

Review yapan kişi değişikliğin beklenen sonucu üretip üretmediğini görebilir.

Bu yüzden production IaC workflow'unda doğrudan apply yerine:

pull request → validation → plan → review → apply

akışı daha güvenlidir.

Mevcut durumunuzu bu tabloya biz yerleştirelim.

IaC ile CI/CD nasıl bağlanır?

IaC repository'si normal application repository'si gibi version control altında tutulabilir.

Örnek pipeline:

Pull request

  • format kontrolü
  • syntax validation
  • security scan
  • plan

Review

Engineer plan çıktısını inceler.

Merge

Onaylanan değişiklik main branch'e alınır.

Apply

Production değişikliği manuel approval veya kontrollü automation ile uygulanır.

CI/CD nedir? rehberindeki delivery prensipleri infrastructure değişikliklerine de uygulanabilir.

IaC ile configuration management aynı şey mi?

Tam olarak değil.

IaC daha çok infrastructure resource provisioning'e odaklanır.

Configuration management ise oluşturulmuş makine içindeki:

  • package
  • service
  • config file
  • user
  • OS setting

yönetimine odaklanabilir.

Örneğin:

Terraform VM'i oluşturabilir.

Ansible VM içine Nginx kurabilir.

Ancak modern image/container yaklaşımında bu sınırlar farklılaşabilir.

Module nedir?

Module, tekrar kullanılabilir IaC bileşenidir.

Örnek module:

  • VM
  • VPC
  • load balancer
  • Kubernetes node pool

Aynı yapı farklı environment'larda input değişkenleriyle kullanılabilir.

Module faydaları:

  • standardizasyon
  • tekrar kullanım
  • review edilmiş pattern
  • daha az duplication

Ancak aşırı generic module tasarımı karmaşıklığı artırabilir.

Environment'lar nasıl ayrılmalı?

Development, staging ve production'ın aynı state'i paylaşması genellikle tercih edilmez.

Environment'lar için:

  • ayrı state
  • ayrı variable
  • gerektiğinde ayrı account/project

kullanılabilir.

Amaç bir environment değişikliğinin diğerini istemeden etkilememesidir.

Secret'lar IaC kodunda tutulmalı mı?

Hayır.

Password, token veya private key gibi secret'lar source code repository'ye açık şekilde yazılmamalıdır.

Tercih edilen yaklaşım:

  • secret manager
  • environment variable
  • short-lived credential
  • CI secret store

kullanmak olabilir.

IaC configuration yalnız secret reference içermelidir.

IaC ile cloud credential nasıl yönetilmeli?

Uzun ömürlü administrator key'leri pipeline içine koymak risklidir.

Mümkün olduğunda:

  • least privilege
  • role-based access
  • short-lived credential
  • workload identity / federation

tercih edilmelidir.

Production apply pipeline'ı yalnız gerekli kaynaklara erişmelidir.

IaC neden disaster recovery için değerlidir?

Infrastructure tanımı repository'de bulunuyorsa altyapının yeniden oluşturulması kolaylaşır.

Örneğin region kaybedildiğinde:

  • network
  • VM
  • load balancer
  • firewall

kaynakları koddan tekrar oluşturulabilir.

Ancak IaC veri kurtarmayı çözmez.

Database ve storage backup'ı ayrıca gerekir.

Disaster Recovery nedir? rehberi bu ayrımı detaylandırır.

IaC immutable infrastructure ile nasıl ilişkilidir?

Immutable infrastructure yaklaşımında mevcut server üzerinde sürekli manuel değişiklik yapmak yerine yeni image veya yeni resource oluşturulur.

Örneğin:

  1. Yeni VM image build edilir
  2. Yeni VM oluşturulur
  3. Trafik yeni VM'e alınır
  4. Eski VM kaldırılır

IaC bu modelin provisioning katmanını otomatikleştirebilir.

Bu yaklaşım configuration drift'i azaltabilir.

IaC Kubernetes'te nasıl kullanılır?

Kubernetes cluster infrastructure'ı IaC ile yönetilebilir.

Örneğin:

  • network
  • cluster
  • node pool
  • load balancer
  • DNS

Terraform/OpenTofu ile oluşturulabilir.

Cluster içi Kubernetes manifest'leri ise:

  • kubectl
  • Helm
  • GitOps

gibi araçlarla yönetilebilir.

Infrastructure IaC ile application deployment katmanını ayrı repository veya workflow'larda tutmak çoğu ekip için daha nettir.

GitOps ile IaC aynı şey mi?

Hayır.

IaC infrastructure definition yaklaşımıdır.

GitOps ise Git repository'yi desired state kaynağı olarak kullanıp otomatik reconciliation yapan operasyon modelidir.

GitOps Kubernetes dünyasında yaygın olsa da IaC daha geniş bir kavramdır.

Policy as Code nedir?

Policy as Code, infrastructure değişikliklerine otomatik kurallar uygulamayı sağlar.

Örnek:

  • public IP yasak
  • encryption zorunlu
  • belirli region dışında resource açılamaz
  • production resource tag zorunlu

CI pipeline plan çıktısını policy engine üzerinden kontrol edebilir.

Bu model governance ihtiyacı arttıkça değer kazanır.

IaC güvenliği için temel kontroller

Repository access

Production IaC repository'si kontrollü olmalıdır.

Pull request review

Tek kişinin kontrolsüz production apply yapması azaltılmalıdır.

State security

Remote state encryption ve erişim politikası uygulanmalıdır.

Secret scanning

Repository secret sızıntısına karşı taranmalıdır.

Provider version pinning

Beklenmeyen provider değişiklikleri sınırlandırılmalıdır.

Plan review

Destroy veya geniş kapsamlı değişiklikler production öncesi görünür olmalıdır.

Infrastructure as Code ne zaman gerekli?

IaC şu durumlarda yüksek değer sağlar:

  • Birden fazla environment
  • Çok sayıda cloud resource
  • Sık infrastructure change
  • Birden fazla engineer
  • Disaster recovery ihtiyacı
  • Standardizasyon
  • Audit/change history

IaC ne zaman gereksiz karmaşıklık olabilir?

Çok küçük ve nadiren değişen bir ortamda IaC başlangıç maliyeti yaratabilir.

Örnek:

  • tek VM
  • sabit network
  • yılda bir değişiklik

Bu ortamda basit dokümantasyon yeterli olabilir.

Ancak ortam büyüyecekse erken IaC standardı uzun vadede faydalı olabilir.

Küçük ekip için minimum IaC modeli

5-20 kişilik yazılım şirketinde başlangıç:

  1. Cloud account/project
  2. Network
  3. VM veya cluster
  4. Firewall/security group
  5. DNS

kaynaklarını version control'e almak olabilir.

İlk günden:

  • yüzlerce module
  • karmaşık policy engine
  • özel platform abstraction

kurmak gerekmez.

IaC projesine nasıl başlanır?

Adım 1: Mevcut altyapı envanteri çıkarın

Hangi resource'lar var?

Adım 2: Manuel değişiklikleri belirleyin

En sık hangi panel işlemleri yapılıyor?

Adım 3: Araç seçin

Terraform, OpenTofu veya provider-native araç değerlendirilebilir.

Adım 4: State stratejisi belirleyin

Local yerine ekip kullanımı için remote state planlayın.

Adım 5: Küçük bir resource grubuyla başlayın

Önce network veya test environment.

Adım 6: PR + plan workflow kurun

Production apply'dan önce review ekleyin.

Adım 7: Drift'i azaltın

Panel değişikliklerini istisna haline getirin.

Adım 8: Module standardı geliştirin

Tekrarlanan pattern'leri zamanla module haline getirin.

Dynamis'te IaC yaklaşımı

Dynamis'in DevOps hizmeti kapsamında Infrastructure as Code çalışmasına doğrudan Terraform repository açarak başlamıyoruz.

Önce:

  • mevcut cloud kaynakları
  • environment yapısı
  • deployment ownership
  • credential modeli
  • state ihtiyacı
  • manuel değişiklikler
  • disaster recovery hedefi

incelenir.

Ardından ihtiyaç varsa:

  • Terraform veya OpenTofu
  • remote state
  • module standardı
  • CI plan/review
  • production approval
  • drift kontrolü

kurulur.

Amaç altyapıyı "kod yazılmış" hale getirmek değil, değişiklikleri tekrar üretilebilir ve güvenli hale getirmektir.

Sık yapılan hatalar

IaC = Terraform demek: Terraform araçtır; IaC yöntemdir.

State dosyasını geliştirici laptop'unda tutmak: Ekip çalışması ve güvenlik riski yaratabilir.

Production'da manuel panel değişikliği yapmak: Drift oluşturur.

Plan çıktısını incelemeden apply yapmak: Beklenmeyen destroy riskini artırır.

Secret'ı tfvars veya repository'ye yazmak: Credential sızıntısı yaratabilir.

İlk günden aşırı module abstraction yapmak: Basit altyapıyı gereksiz karmaşıklaştırabilir.

Sırada ne var

  • DevOps nedir?: IaC'nin DevOps çalışma modelindeki yerini görün.
  • CI/CD nedir?: plan/review/apply workflow'unu pipeline'a bağlayın.
  • Observability nedir?: altyapı değişikliğinin production etkisini telemetry ile izleyin.
  • DevOps hizmeti: cloud altyapınızı IaC modeline geçirmek için mevcut yapınızı değerlendirin.

Kaynaklar

Kaynaklar

  1. 1.
    Terraform documentationHashiCorp · 2026-09-21
  2. 2.
    Terraform stateHashiCorp · 2026-09-21
  3. 3.
    OpenTofu documentationOpenTofu · 2026-09-21
  4. 4.
    Infrastructure as Code best practicesGoogle Cloud · 2026-09-21

Sık sorulan sorular

Infrastructure as Code nedir?

Infrastructure as Code (IaC), sunucu, network, storage, DNS ve benzeri altyapı kaynaklarını manuel panel işlemleri yerine version control altında tutulan yapılandırma dosyalarıyla tanımlama ve yönetme yaklaşımıdır.

IaC için Terraform kullanmak zorunlu mu?

Hayır. Terraform yaygın IaC araçlarından biridir ancak zorunlu değildir. OpenTofu, cloud-provider-native araçlar ve farklı configuration management/provisioning çözümleri de kullanılabilir. Araç seçimi provider, workflow, state ve ekip gereksinimlerine göre yapılmalıdır.

Terraform state dosyası neden önemlidir?

Terraform state, yapılandırmadaki kaynaklar ile gerçek altyapı nesneleri arasındaki ilişkiyi takip eder ve plan sırasında hangi değişikliklerin gerektiğini hesaplamaya yardımcı olur. Ekip kullanımında state erişimi, locking ve hassas veri güvenliği ayrıca yönetilmelidir.

Infrastructure drift nedir?

Infrastructure drift, canlı altyapının IaC repository'sinde tanımlanan beklenen durumdan farklılaşmasıdır. Manuel panel değişiklikleri, dış otomasyon veya provider tarafındaki değişiklikler drift oluşturabilir. Plan ve düzenli reconciliation süreçleri farkı görünür hale getirmeye yardımcı olur.

IaC kodu CI/CD pipeline'a eklenmeli mi?

Çoğu ekip için IaC değişikliklerinin version control, review ve otomatik validation/plan aşamalarından geçmesi faydalıdır. Production apply adımı risk seviyesine göre manuel approval veya kontrollü otomasyon içerebilir.

Dynamis Teknoloji

Kararı sizin yerinize hesaplayan bir ekip.

Raff platformunu geliştiren ve işleten mühendisler. Ankara merkezli, KVKK uyumlu, 7/24 Türkçe destek.

  1. Açıklayıcı · DevOps ve KubernetesDevOps nedir? Yazılım ekipleri için nasıl çalışır?DevOps nedir, nasıl çalışır ve küçük yazılım ekipleri nereden başlamalı? CI/CD, Infrastructure as Code, observability, ortak sahiplik ve güncel DORA metriklerini öğrenin.8 dk
  2. Açıklayıcı · DevOps ve KubernetesCI/CD nedir? Yazılım deployment süreci nasıl otomatikleştirilir?CI/CD nedir, nasıl çalışır? Continuous Integration, Delivery ve Deployment farkını; pipeline, artifact, rollback ve deployment otomasyonunu pratik olarak öğrenin.8 dk
  3. Açıklayıcı · DevOps ve KubernetesObservability nedir? Monitoring, logging ve tracing farklarıObservability nedir? Monitoring, metrics, logging, distributed tracing ve OpenTelemetry farklarını; SLI/SLO, alerting ve production troubleshooting ile öğrenin.9 dk