{"id":537,"date":"2025-05-09T22:34:55","date_gmt":"2025-05-09T19:34:55","guid":{"rendered":"https:\/\/hostvera.com.tr\/blog\/?p=537"},"modified":"2025-05-26T22:54:54","modified_gmt":"2025-05-26T19:54:54","slug":"infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2","status":"publish","type":"post","link":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/","title":{"rendered":"Infrastructure as Code (IaC) \u0130le Hosting Kurulumu: Terraform ve Ansible ile Otomasyonun G\u00fcc\u00fc"},"content":{"rendered":"\n<p><strong>Infrastructure as Code (IaC) \u0130le Hosting Kurulumu: Terraform ve Ansible ile Otomasyonun G\u00fcc\u00fc<\/strong><\/p>\n\n\n\n<p><strong>Giri\u015f<\/strong><br>Geleneksel y\u00f6ntemlerle hosting altyap\u0131s\u0131 kurmak; sunucu sipari\u015f etmek, i\u015fletim sistemi y\u00fcklemek, a\u011f ayarlar\u0131n\u0131 elle yap\u0131land\u0131rmak ve g\u00fcvenlik politikalar\u0131n\u0131 manuel uygulamak uzun zaman al\u0131r ve hata riskini art\u0131r\u0131r. Altyap\u0131y\u0131 kodla tan\u0131mlamak (Infrastructure as Code), bu ad\u0131mlar\u0131 tekrarlanabilir, s\u00fcr\u00fcmlenebilir ve otomatik h\u00e2le getirerek; tutarl\u0131l\u0131\u011f\u0131 sa\u011flar, h\u0131z kazand\u0131r\u0131r, insan hatas\u0131n\u0131 en aza indirir ve ekipler aras\u0131 i\u015f birli\u011fini g\u00fc\u00e7lendirir. Terraform ve Ansible, IaC d\u00fcnyas\u0131nda \u00f6ne \u00e7\u0131kan ara\u00e7lard\u0131r. Bu makalede, Terraform ile bulut kaynaklar\u0131n\u0131 olu\u015fturma, Ansible ile sunucu konfig\u00fcrasyonunu y\u00f6netme, ad\u0131m ad\u0131m kurulum s\u00fcre\u00e7leri, en iyi uygulamalar, g\u00fcvenlik yakla\u015f\u0131mlar\u0131 ve ger\u00e7ek d\u00fcnya senaryolar\u0131 ele al\u0131nacakt\u0131r.<\/p>\n\n\n\n<p><strong>1. Infrastructure as Code Nedir ve Avantajlar\u0131<\/strong><br>Altyap\u0131y\u0131 kod olarak tan\u0131mlamak, YAML veya HCL (HashiCorp Configuration Language) gibi insan taraf\u0131ndan okunabilir dosyalarda sunucu, a\u011f, depolama ve g\u00fcvenlik katmanlar\u0131n\u0131 betimlemek demektir. Bu yakla\u015f\u0131m\u0131n sa\u011flad\u0131\u011f\u0131 avantajlar \u015funlard\u0131r:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Otomasyon ve H\u0131z:<\/strong> Bir komutla yeni bir ortam veya test altyap\u0131s\u0131 dakikalar i\u00e7inde aya\u011fa kalkar.<\/li>\n\n\n\n<li><strong>Versiyon Kontrol\u00fc:<\/strong> Git gibi sistemlerle yap\u0131lan de\u011fi\u015fiklikler izlenir; istenirse versiyon ge\u00e7mi\u015fine geri d\u00f6n\u00fcl\u00fcr.<\/li>\n\n\n\n<li><strong>Tutarl\u0131l\u0131k ve Tekrarlanabilirlik:<\/strong> Ayn\u0131 kod par\u00e7as\u0131, farkl\u0131 ortamlarda ayn\u0131 sonucu verir.<\/li>\n\n\n\n<li><strong>Ekip \u0130\u015f Birli\u011fi:<\/strong> Geli\u015ftirme, operasyon ve g\u00fcvenlik ekipleri kod taban\u0131nda ayn\u0131 dili kullanarak i\u015f birli\u011fi yapar.<\/li>\n\n\n\n<li><strong>Dok\u00fcmantasyon:<\/strong> Kod, altyap\u0131n\u0131n kendisi kadar belgelidir; hangi sunucunun hangi rol\u00fc \u00fcstlendi\u011fi net bi\u00e7imde g\u00f6r\u00fcn\u00fcr.<\/li>\n<\/ul>\n\n\n\n<p><strong>2. Terraform ile Kaynak Tan\u0131mlama ve Sa\u011flay\u0131c\u0131 (Provider) Entegrasyonu<\/strong><br>Terraform, bulut sa\u011flay\u0131c\u0131lar\u0131na (AWS, Azure, Google Cloud, DigitalOcean vb.) API \u00fczerinden ba\u011flanarak; sanal makineler, a\u011f, y\u00fck dengeleyiciler, veritaban\u0131 instance\u2019lar\u0131 ve daha fazlas\u0131n\u0131 yaratan bir ara\u00e7t\u0131r.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Terraform Kurulumu ve Ba\u015flang\u0131\u00e7<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u0130ndirip bilgisayar\u0131n\u0131za veya CI\/CD ajan\u0131n\u0131za y\u00fckleyin.<\/li>\n\n\n\n<li>terraform init komutuyla \u00e7al\u0131\u015f\u0131lacak dizini ba\u015flat\u0131n; sa\u011flay\u0131c\u0131 eklentileri indirilir.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>HCL ile Kaynak Tan\u0131mlama<\/strong><br>main.tf dosyas\u0131nda \u00f6rnek bir AWS EC2 instance tan\u0131m\u0131 \u015fu \u015fekilde olabilir:<\/li>\n\n\n\n<li>provider &#8220;aws&#8221; {<\/li>\n\n\n\n<li>\u00a0\u00a0region = &#8220;us-east-1&#8221;<\/li>\n\n\n\n<li>}<\/li>\n\n\n\n<li>\u00a0<\/li>\n\n\n\n<li>resource &#8220;aws_instance&#8221; &#8220;web_server&#8221; {<\/li>\n\n\n\n<li>\u00a0\u00a0ami\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = &#8220;ami-0c94855ba95c71c99&#8221;<\/li>\n\n\n\n<li>\u00a0\u00a0instance_type = &#8220;t3.micro&#8221;<\/li>\n\n\n\n<li>\u00a0<\/li>\n\n\n\n<li>\u00a0 tags = {<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0 Name = &#8220;iac-web&#8221;<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0 Env\u00a0 = &#8220;production&#8221;<\/li>\n\n\n\n<li>\u00a0 }<\/li>\n\n\n\n<li>}<\/li>\n<\/ol>\n\n\n\n<p>Bu tan\u0131m, tek bir komutla AWS \u00fczerinde t3.micro tipinde bir sunucu olu\u015fturur.<\/p>\n\n\n\n<ol start=\"16\" class=\"wp-block-list\">\n<li><strong>De\u011fi\u015fken Y\u00f6netimi<\/strong><br>Sabit de\u011ferler yerine variables.tf ve terraform.tfvars ile altyap\u0131y\u0131 parametrele\u015ftirirsiniz:<\/li>\n\n\n\n<li>variable &#8220;region&#8221; {<\/li>\n\n\n\n<li>\u00a0 type\u00a0\u00a0\u00a0 = string<\/li>\n\n\n\n<li>\u00a0 default = &#8220;us-east-1&#8221;<\/li>\n\n\n\n<li>}<\/li>\n\n\n\n<li>\u00a0<\/li>\n\n\n\n<li>provider &#8220;aws&#8221; {<\/li>\n\n\n\n<li>\u00a0 region = var.region<\/li>\n\n\n\n<li>}<\/li>\n<\/ol>\n\n\n\n<p>Farkl\u0131 ortamlarda (dev, test, prod) ayn\u0131 kodu kullan\u0131p, sadece terraform.tfvars i\u00e7indeki de\u011ferleri de\u011fi\u015ftirerek altyap\u0131lar\u0131 farkl\u0131la\u015ft\u0131rabilirsiniz.<\/p>\n\n\n\n<ol start=\"25\" class=\"wp-block-list\">\n<li><strong>State Dosyas\u0131 ve Back-end<\/strong><br>Terraform durumunu yerel veya uzaktaki bir state dosyas\u0131nda saklar. Backend olarak S3, GCS, Azure Blob gibi servislere y\u00f6nlendirerek ekip i\u00e7i payla\u015f\u0131ma uygun h\u00e2le getirebilirsiniz. State dosyas\u0131, kaynaklar\u0131n ger\u00e7ek durumunu ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 tutar.<\/li>\n\n\n\n<li><strong>Plan &amp; Apply A\u015famalar\u0131<\/strong>\n<ul class=\"wp-block-list\">\n<li>terraform plan komutuyla yap\u0131lacak de\u011fi\u015fikliklerin \u00f6nizlemesini al\u0131n.<\/li>\n\n\n\n<li>terraform apply ile tan\u0131ma uygun olarak kaynaklar olu\u015fturulsun.<br>Bu iki ad\u0131m, \u00f6zellikle \u00fcretim ortam\u0131na ge\u00e7erken hata riskini azalt\u0131r; ilk \u00f6nce bekleneni g\u00f6rebilir, sonra onay verirsiniz.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p><strong>3. Ansible ile Konfig\u00fcrasyon Y\u00f6netimi ve Playbook Tasar\u0131m\u0131<\/strong><br>Ansible, SSH \u00fczerinden sunuculara ba\u011flanarak idempotent \u015fekilde yaz\u0131l\u0131m y\u00fckleme, kullan\u0131c\u0131 olu\u015fturma, firewall ayarlar\u0131 ve servis konfig\u00fcrasyonlar\u0131n\u0131 ger\u00e7ekle\u015ftiren bir otomasyon arac\u0131d\u0131r.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Envanter (Inventory)<\/strong><br>Ansible\u2019\u0131n hedef makinelerini tan\u0131d\u0131\u011f\u0131 dosya veya dinamik kaynaklard\u0131r. Statik inventory \u00f6rne\u011fi:<\/li>\n\n\n\n<li>[web]<\/li>\n\n\n\n<li>web1.example.com<\/li>\n\n\n\n<li>web2.example.com<\/li>\n\n\n\n<li>\u00a0<\/li>\n\n\n\n<li>[db]<\/li>\n\n\n\n<li>db1.example.com<\/li>\n\n\n\n<li><strong>Playbook Yap\u0131s\u0131<\/strong><br>Yine YAML ile yaz\u0131l\u0131r; her play, bir grup sunucuya uygulanacak g\u00f6rev listelerini i\u00e7erir. \u00d6rne\u011fin bir LAMP sunucu kurulumu \u015f\u00f6yle olabilir:<\/li>\n\n\n\n<li>&#8211; name: LAMP stack kurulumu<\/li>\n\n\n\n<li>\u00a0 hosts: web<\/li>\n\n\n\n<li>\u00a0 become: true<\/li>\n\n\n\n<li>\u00a0<\/li>\n\n\n\n<li>\u00a0 tasks:<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0 &#8211; name: Apache y\u00fckle<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0 apt:<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name: apache2<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 state: present<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 update_cache: true<\/li>\n\n\n\n<li>\u00a0<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0 &#8211; name: PHP y\u00fckle<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0 apt:<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name: &#8220;{{ item }}&#8221;<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 state: present<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0 with_items:<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; php<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; libapache2-mod-php<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; php-mysql<\/li>\n\n\n\n<li>\u00a0<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0 &#8211; name: Apache servisini ba\u015flat<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0 service:<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name: apache2<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 state: started<\/li>\n\n\n\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 enabled: true<\/li>\n<\/ol>\n\n\n\n<ol start=\"34\" class=\"wp-block-list\">\n<li><strong>Rollere Ay\u0131rma<\/strong><br>Daha karma\u015f\u0131k altyap\u0131larda, role\u2019ler sayesinde g\u00f6revleri mod\u00fclerle\u015ftirirsiniz. roles\/web\/tasks\/main.yml, roles\/web\/templates\/vhost.conf.j2 gibi dizin yap\u0131s\u0131yla kodun tekrar kullan\u0131m\u0131n\u0131, test edilebilirli\u011fini ve bak\u0131m\u0131n\u0131 kolayla\u015ft\u0131r\u0131rs\u0131n\u0131z.<\/li>\n\n\n\n<li><strong>Vault ile Gizli Bilgi Y\u00f6netimi<\/strong><br>Ansible Vault kullanarak \u015fifre, API anahtar\u0131 veya sertifika gibi hassas verileri \u015fifreleyip repo i\u00e7inde tutabilir, \u00e7al\u0131\u015ft\u0131rma zaman\u0131nda \u015fifreyi girerek g\u00f6revlerin eri\u015fmesine izin verebilirsiniz.<\/li>\n\n\n\n<li><strong>Ansible Galaxy ve Topluluk Rolleri<\/strong><br>Haz\u0131r mod\u00fcller ve roller Galaxy \u00fczerinden indirilebilir; zamandan tasarruf sa\u011flar ve standart konfig\u00fcrasyonlar\u0131 kolayla\u015ft\u0131r\u0131r. \u00d6rne\u011fin geerlingguy.mysql rol\u00fc ile MySQL kurulumu birka\u00e7 sat\u0131r komutla tamamlan\u0131r.<\/li>\n<\/ol>\n\n\n\n<p><strong>4. Terraform ve Ansible Entegrasyonu: U\u00e7tan Uca Otomasyon<\/strong><br>Terraform ve Ansible\u2019\u0131 bir arada kullanarak tam bir IaC pipeline\u2019\u0131 olu\u015fturabilirsiniz:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u0130lk A\u015fama \u2013 Altyap\u0131 Provisyonu:<\/strong> Terraform, bulut \u00fczerinde sanal makineleri, a\u011flar\u0131, load balancer\u2019lar\u0131 ve gerekli IAM rollerini haz\u0131rlar.<\/li>\n\n\n\n<li><strong>\u0130kinci A\u015fama \u2013 Konfig\u00fcrasyon Y\u00f6netimi:<\/strong> Provisioned host\u2019lar Ansible envanteriyle tespit edilir; playbook\u2019lar \u00e7al\u0131\u015ft\u0131r\u0131larak uygulama, g\u00fcvenlik ve izleme ajanlar\u0131 kurulur.<\/li>\n\n\n\n<li><strong>CI\/CD Pipeline:<\/strong> Jenkins, GitLab CI veya GitHub Actions gibi ara\u00e7larla kod de\u011fi\u015fiklikleri tetiklenir; \u00f6nce Terraform plan ve apply, sonra Ansible playbook\u2019lar otomatik \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Hata durumunda pipeline durur, ilgili ekibe bildirim g\u00f6nderilir.<\/li>\n<\/ol>\n\n\n\n<p><strong>5. G\u00fcvenlik ve Uygulama Gizlilikleri<\/strong><br>IaC ile altyap\u0131 kurarken g\u00fcvenlik katmanlar\u0131n\u0131 kodda da uygulamal\u0131s\u0131n\u0131z:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>IAM Politikalar\u0131:<\/strong> Terraform ile yarat\u0131lan roller ve servis hesaplar\u0131na en az ayr\u0131cal\u0131k (least privilege) prensibiyle izin atay\u0131n.<\/li>\n\n\n\n<li><strong>SSH Anahtar Y\u00f6netimi:<\/strong> Ansible ile sunucuya yaln\u0131zca kay\u0131tl\u0131 public anahtarla eri\u015fime izin verin; parola oturumlar\u0131n\u0131 kapat\u0131n.<\/li>\n\n\n\n<li><strong>Network G\u00fcvenlik Gruplar\u0131:<\/strong> Terraform tan\u0131m\u0131nda a\u00e7\u0131lan portlar\u0131 m\u00fcmk\u00fcn oldu\u011funca dar tutup, sadece gerekli CIDR bloklar\u0131ndan eri\u015fimi serbest b\u0131rak\u0131n.<\/li>\n\n\n\n<li><strong>Secrets Management:<\/strong> Ansible Vault, HashiCorp Vault veya AWS Secrets Manager gibi \u00e7\u00f6z\u00fcmleri kullanarak parola, token ve sertifikalar\u0131 g\u00fcvenli saklay\u0131n.<\/li>\n<\/ul>\n\n\n\n<p><strong>6. \u0130zleme, Loglama ve Geri D\u00f6n\u00fc\u015f (Rollback) Planlar\u0131<\/strong><br>Otomasyon, ba\u015far\u0131s\u0131z bir de\u011fi\u015fiklik durumunda h\u0131zla m\u00fcdahale edebilmek i\u00e7in geri d\u00f6n\u00fc\u015f mekanizmalar\u0131yla desteklenmeli:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Terraform State Rollback:<\/strong> \u00d6nceki state dosyas\u0131na d\u00f6nerek kaynaklar\u0131 eski haline getirebilirsiniz.<\/li>\n\n\n\n<li><strong>Ansible Run Tags:<\/strong> Sadece belirli g\u00f6rev veya rollerin tekrar \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 sa\u011flayan etiketleme sistemi.<\/li>\n\n\n\n<li><strong>Log ve Uyar\u0131:<\/strong> Provisioning ve konfig\u00fcrasyon ad\u0131mlar\u0131n\u0131 merkezi log sunucusuna (ELK, Splunk) veya CI\/CD log aray\u00fcz\u00fcne ak\u0131t\u0131n; ba\u015far\u0131s\u0131z g\u00f6revlerde e-posta\/Slack bildirimleri kurun.<\/li>\n\n\n\n<li><strong>Monitoring Agent Kurulumu:<\/strong> Ansible ile Datadog, Prometheus node_exporter veya Grafana Agent y\u00fckleyerek otomatik izleme altyap\u0131s\u0131 olu\u015fturun. De\u011fi\u015fiklik sonras\u0131 trafik, CPU, bellek gibi temel metrikleri takip edip anormalliklere erken m\u00fcdahale edin.<\/li>\n<\/ul>\n\n\n\n<p><strong>7. Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve Kullan\u0131m \u00d6rnekleri<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Web Hosting \u015eirketi:<\/strong> M\u00fc\u015fteriye \u00f6zel sanal sunucu a\u00e7arken Terraform ile m\u00fc\u015fteri hesab\u0131na ait VM, network, firewall kural\u0131 olu\u015fturulur; Ansible playbook ile cPanel veya Plesk kurulumu yap\u0131l\u0131r. B\u00f6ylece m\u00fc\u015fteri talebi dakikalar i\u00e7inde kar\u015f\u0131lan\u0131r.<\/li>\n\n\n\n<li><strong>SaaS Uygulamas\u0131:<\/strong> \u00dcr\u00fcn versiyonuna g\u00f6re farkl\u0131 altyap\u0131 (dev, test, prod) olu\u015fturmak i\u00e7in Terraform workspace\u2019leri ve Ansible envanter gruplar\u0131 kullan\u0131l\u0131r; kod de\u011fi\u015fikli\u011fi pipeline\u2019da test ortam\u0131na h\u0131zl\u0131 ta\u015f\u0131n\u0131r.<\/li>\n\n\n\n<li><strong>Mikroservis Mimarisi:<\/strong> Kubernetes cluster\u2019lar\u0131 Terraform ile Azure AKS veya AWS EKS \u00fczerinde provision edilir; Ansible ile node bazl\u0131 \u00f6zel konfig\u00fcrasyonlar, g\u00fcvenlik yamalar\u0131 uygulan\u0131r.<\/li>\n<\/ul>\n\n\n\n<p><strong>8. Yedeklilik, \u00d6l\u00e7eklenebilirlik ve Felaket Kurtarma<\/strong><br>IaC kodu, sadece kurulum de\u011fil; felaket an\u0131nda ayn\u0131 altyap\u0131n\u0131n ba\u015fka bir b\u00f6lgede yeniden olu\u015fturulmas\u0131n\u0131 da sa\u011flar. Terraform module\u2019lar\u0131 ve Ansible role\u2019leri yeniden kullan\u0131larak;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u00c7ok B\u00f6lgeli (Multi-Region) Da\u011f\u0131t\u0131m:<\/strong> Primary ve disaster-recovery ortam\u0131 kodla tan\u0131mlan\u0131r.<\/li>\n\n\n\n<li><strong>Otomatik \u00d6l\u00e7eklendirme:<\/strong> Terraform ile olu\u015fturulan Auto Scaling Group ya da Ansible ile dinamik host grubuna yeni makineler eklenir.<\/li>\n\n\n\n<li><strong>Veri Replikasyonu:<\/strong> Terraform tan\u0131m\u0131nda RDS Multi-AZ, S3 versioning ve Ansible playbook\u2019ta d\u00fczenli yedekleme g\u00f6revleri yer al\u0131r.<\/li>\n<\/ul>\n\n\n\n<p><strong>9. En \u0130yi Uygulamalar ve \u00d6neriler<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mod\u00fcler Kod Yaz\u0131m\u0131:<\/strong> Terraform module ve Ansible role\u2019lerini k\u00fc\u00e7\u00fck, ama\u00e7 odakl\u0131 tutun; tekrar kullan\u0131labilirli\u011fi art\u0131r\u0131n.<\/li>\n\n\n\n<li><strong>Dok\u00fcmantasyon:<\/strong> Her module ve role i\u00e7in README dosyas\u0131 olu\u015fturun; girdileri, \u00e7\u0131kt\u0131lar\u0131, varsay\u0131lan de\u011ferleri a\u00e7\u0131klay\u0131n.<\/li>\n\n\n\n<li><strong>Kod \u0130ncelemesi (Code Review):<\/strong> IaC pull request\u2019lerini dikkatle inceleyin; g\u00fcvenlik, performans ve tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan onay mekanizmas\u0131 kurun.<\/li>\n\n\n\n<li><strong>Test ve Validasyon:<\/strong> terraform validate, terraform fmt, Ansible lint ve Molecule gibi ara\u00e7larla kod kalitesini otomatik kontrol edin.<\/li>\n\n\n\n<li><strong>S\u00fcrekli E\u011fitim:<\/strong> Ekip \u00fcyelerinin Terraform Registry ve Ansible Galaxy g\u00fcncellemelerini takip etmesini sa\u011flay\u0131n; topluluk rollerini ve proven best practice \u00f6rneklerini inceleyin.<\/li>\n<\/ul>\n\n\n\n<p><strong>Sonu\u00e7<\/strong><br>Infrastructure as Code; zaman, maliyet ve hata pay\u0131n\u0131 azaltarak altyap\u0131y\u0131 kod d\u00fcnyas\u0131na ta\u015f\u0131yor. Terraform ile bulut kaynaklar\u0131n\u0131 h\u0131zl\u0131ca aya\u011fa kald\u0131r\u0131rken, Ansible ile sunucu konfig\u00fcrasyonlar\u0131n\u0131 y\u00f6netmek, u\u00e7tan uca tam otomasyon sa\u011flayarak tutarl\u0131, g\u00fcvenli ve \u00f6l\u00e7eklenebilir hosting altyap\u0131lar\u0131 olu\u015fturman\u0131z\u0131 m\u00fcmk\u00fcn k\u0131l\u0131yor. Mod\u00fcler yap\u0131, versiyon kontrol, g\u00fcvenlik entegrasyonu ve CI\/CD ile birle\u015fti\u011finde; dakikalar i\u00e7inde yeni bir ortam kurup b\u00fcy\u00fck felaketler kar\u015f\u0131s\u0131nda h\u0131zla toparlanabilen, gelece\u011fe haz\u0131r bir mimari elde edersiniz. IaC\u2019in g\u00fcc\u00fcn\u00fc kullanmak, i\u015fletmenize rekabet avantaj\u0131 kazand\u0131r\u0131r ve operasyonel y\u00fck\u00fc hafifletir. Bu rehberi takip ederek, Terraform ve Ansible ile hosting altyap\u0131n\u0131z\u0131 bir sonraki seviyeye ta\u015f\u0131maya ba\u015flayabilirsiniz.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Infrastructure as Code (IaC) \u0130le Hosting Kurulumu: Terraform ve Ansible ile Otomasyonun G\u00fcc\u00fc Giri\u015fGeleneksel y\u00f6ntemlerle hosting altyap\u0131s\u0131 kurmak; sunucu sipari\u015f etmek, i\u015fletim sistemi y\u00fcklemek, a\u011f ayarlar\u0131n\u0131 elle yap\u0131land\u0131rmak ve g\u00fcvenlik politikalar\u0131n\u0131 manuel uygulamak uzun zaman al\u0131r ve hata riskini art\u0131r\u0131r. Altyap\u0131y\u0131 kodla tan\u0131mlamak (Infrastructure as Code), bu ad\u0131mlar\u0131 tekrarlanabilir, s\u00fcr\u00fcmlenebilir ve otomatik h\u00e2le getirerek; tutarl\u0131l\u0131\u011f\u0131 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[75],"tags":[15,21,12],"class_list":["post-537","post","type-post","status-publish","format-standard","hentry","category-sunucu-altyapi-teknolojileri","tag-bireysel-hosting","tag-hosting","tag-kurumsal-hosting"],"featured_image_src":null,"author_info":{"display_name":"admin","author_link":"https:\/\/hostvera.com.tr\/blog\/author\/hostvera\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Infrastructure as Code ile Hosting Kurulumu: Terraform &amp; Ansible<\/title>\n<meta name=\"description\" content=\"Terraform ve Ansible ile altyap\u0131n\u0131z\u0131 kodlayarak h\u0131zl\u0131, g\u00fcvenli ve otomatik bir hosting kurulumu yap\u0131n. Ad\u0131m ad\u0131m rehberle ke\u015ffedin.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Infrastructure as Code ile Hosting Kurulumu: Terraform &amp; Ansible\" \/>\n<meta property=\"og:description\" content=\"Terraform ve Ansible ile altyap\u0131n\u0131z\u0131 kodlayarak h\u0131zl\u0131, g\u00fcvenli ve otomatik bir hosting kurulumu yap\u0131n. Ad\u0131m ad\u0131m rehberle ke\u015ffedin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Hostvera Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-09T19:34:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-26T19:54:54+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#\/schema\/person\/6c57309574bd96c475d33fa49017c3d6\"},\"headline\":\"Infrastructure as Code (IaC) \u0130le Hosting Kurulumu: Terraform ve Ansible ile Otomasyonun G\u00fcc\u00fc\",\"datePublished\":\"2025-05-09T19:34:55+00:00\",\"dateModified\":\"2025-05-26T19:54:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/\"},\"wordCount\":1703,\"publisher\":{\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#organization\"},\"keywords\":[\"bireysel hosting\",\"hosting\",\"kurumsal hosting\"],\"articleSection\":[\"Sunucu &amp; Altyap\u0131 Teknolojileri\"],\"inLanguage\":\"tr\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/\",\"url\":\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/\",\"name\":\"Infrastructure as Code ile Hosting Kurulumu: Terraform & Ansible\",\"isPartOf\":{\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#website\"},\"datePublished\":\"2025-05-09T19:34:55+00:00\",\"dateModified\":\"2025-05-26T19:54:54+00:00\",\"description\":\"Terraform ve Ansible ile altyap\u0131n\u0131z\u0131 kodlayarak h\u0131zl\u0131, g\u00fcvenli ve otomatik bir hosting kurulumu yap\u0131n. Ad\u0131m ad\u0131m rehberle ke\u015ffedin.\",\"breadcrumb\":{\"@id\":\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/hostvera.com.tr\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Infrastructure as Code (IaC) \u0130le Hosting Kurulumu: Terraform ve Ansible ile Otomasyonun G\u00fcc\u00fc\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#website\",\"url\":\"https:\/\/hostvera.com.tr\/blog\/\",\"name\":\"Hostvera Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hostvera.com.tr\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#organization\",\"name\":\"Hostvera Blog\",\"url\":\"https:\/\/hostvera.com.tr\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hostvera.com.tr\/blog\/wp-content\/uploads\/2025\/03\/cropped-2.png\",\"contentUrl\":\"https:\/\/hostvera.com.tr\/blog\/wp-content\/uploads\/2025\/03\/cropped-2.png\",\"width\":202,\"height\":42,\"caption\":\"Hostvera Blog\"},\"image\":{\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.instagram.com\/hostvera.com.tr\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#\/schema\/person\/6c57309574bd96c475d33fa49017c3d6\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/hostvera.com.tr\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1ec72e2ddf8b63780dee78d237a8e7f84e08225f7f92ecede4cbdd2f9d8d156f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1ec72e2ddf8b63780dee78d237a8e7f84e08225f7f92ecede4cbdd2f9d8d156f?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"description\":\"Hostvera\",\"sameAs\":[\"https:\/\/hostvera.com.tr\/blog\"],\"url\":\"https:\/\/hostvera.com.tr\/blog\/author\/hostvera\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Infrastructure as Code ile Hosting Kurulumu: Terraform & Ansible","description":"Terraform ve Ansible ile altyap\u0131n\u0131z\u0131 kodlayarak h\u0131zl\u0131, g\u00fcvenli ve otomatik bir hosting kurulumu yap\u0131n. Ad\u0131m ad\u0131m rehberle ke\u015ffedin.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/","og_locale":"tr_TR","og_type":"article","og_title":"Infrastructure as Code ile Hosting Kurulumu: Terraform & Ansible","og_description":"Terraform ve Ansible ile altyap\u0131n\u0131z\u0131 kodlayarak h\u0131zl\u0131, g\u00fcvenli ve otomatik bir hosting kurulumu yap\u0131n. Ad\u0131m ad\u0131m rehberle ke\u015ffedin.","og_url":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/","og_site_name":"Hostvera Blog","article_published_time":"2025-05-09T19:34:55+00:00","article_modified_time":"2025-05-26T19:54:54+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"admin","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/#article","isPartOf":{"@id":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/"},"author":{"name":"admin","@id":"https:\/\/hostvera.com.tr\/blog\/#\/schema\/person\/6c57309574bd96c475d33fa49017c3d6"},"headline":"Infrastructure as Code (IaC) \u0130le Hosting Kurulumu: Terraform ve Ansible ile Otomasyonun G\u00fcc\u00fc","datePublished":"2025-05-09T19:34:55+00:00","dateModified":"2025-05-26T19:54:54+00:00","mainEntityOfPage":{"@id":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/"},"wordCount":1703,"publisher":{"@id":"https:\/\/hostvera.com.tr\/blog\/#organization"},"keywords":["bireysel hosting","hosting","kurumsal hosting"],"articleSection":["Sunucu &amp; Altyap\u0131 Teknolojileri"],"inLanguage":"tr"},{"@type":"WebPage","@id":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/","url":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/","name":"Infrastructure as Code ile Hosting Kurulumu: Terraform & Ansible","isPartOf":{"@id":"https:\/\/hostvera.com.tr\/blog\/#website"},"datePublished":"2025-05-09T19:34:55+00:00","dateModified":"2025-05-26T19:54:54+00:00","description":"Terraform ve Ansible ile altyap\u0131n\u0131z\u0131 kodlayarak h\u0131zl\u0131, g\u00fcvenli ve otomatik bir hosting kurulumu yap\u0131n. Ad\u0131m ad\u0131m rehberle ke\u015ffedin.","breadcrumb":{"@id":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/hostvera.com.tr\/blog\/infrastructure-as-code-iac-ile-hosting-kurulumu-terraform-ve-ansible-ile-otomasyonun-gucu-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/hostvera.com.tr\/blog\/"},{"@type":"ListItem","position":2,"name":"Infrastructure as Code (IaC) \u0130le Hosting Kurulumu: Terraform ve Ansible ile Otomasyonun G\u00fcc\u00fc"}]},{"@type":"WebSite","@id":"https:\/\/hostvera.com.tr\/blog\/#website","url":"https:\/\/hostvera.com.tr\/blog\/","name":"Hostvera Blog","description":"","publisher":{"@id":"https:\/\/hostvera.com.tr\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hostvera.com.tr\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/hostvera.com.tr\/blog\/#organization","name":"Hostvera Blog","url":"https:\/\/hostvera.com.tr\/blog\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/hostvera.com.tr\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/hostvera.com.tr\/blog\/wp-content\/uploads\/2025\/03\/cropped-2.png","contentUrl":"https:\/\/hostvera.com.tr\/blog\/wp-content\/uploads\/2025\/03\/cropped-2.png","width":202,"height":42,"caption":"Hostvera Blog"},"image":{"@id":"https:\/\/hostvera.com.tr\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/hostvera.com.tr\/"]},{"@type":"Person","@id":"https:\/\/hostvera.com.tr\/blog\/#\/schema\/person\/6c57309574bd96c475d33fa49017c3d6","name":"admin","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/hostvera.com.tr\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1ec72e2ddf8b63780dee78d237a8e7f84e08225f7f92ecede4cbdd2f9d8d156f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1ec72e2ddf8b63780dee78d237a8e7f84e08225f7f92ecede4cbdd2f9d8d156f?s=96&d=mm&r=g","caption":"admin"},"description":"Hostvera","sameAs":["https:\/\/hostvera.com.tr\/blog"],"url":"https:\/\/hostvera.com.tr\/blog\/author\/hostvera\/"}]}},"_links":{"self":[{"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/posts\/537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=537"}],"version-history":[{"count":1,"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/posts\/537\/revisions"}],"predecessor-version":[{"id":538,"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/posts\/537\/revisions\/538"}],"wp:attachment":[{"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hostvera.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}