{"id":43946,"date":"2026-08-08T21:04:52","date_gmt":"2026-08-08T18:04:52","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/"},"modified":"2026-08-08T21:05:15","modified_gmt":"2026-08-08T18:05:15","slug":"90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/","title":{"rendered":"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber"},"content":{"rendered":"<h2>90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber<\/h2>\n<p>Manuel AWS a\u011f kurulumunun zorluklar\u0131ndan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Terraform ile sadece 90 sat\u0131r kod yazarak eksiksiz bir AWS a\u011f\u0131 nas\u0131l kurabilece\u011finizi ke\u015ffedin. Bu rehber, altyap\u0131 otomasyonunun temellerinden ileri d\u00fczey ipu\u00e7lar\u0131na kadar her \u015feyi kaps\u0131yor.<\/p>\n<h2>Giri\u015f: Neden Altyap\u0131y\u0131 Kodla Y\u00f6netmeliyiz?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital d\u00fcnyas\u0131nda, i\u015fletmelerin \u00e7eviklik ve \u00f6l\u00e7eklenebilirlik ihtiya\u00e7lar\u0131 her zamankinden daha kritik hale geldi. Bulut bili\u015fim platformlar\u0131, \u00f6zellikle Amazon Web Services (AWS), bu ihtiya\u00e7lar\u0131 kar\u015f\u0131lamak i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lar sunsa da, altyap\u0131 kurulumu ve y\u00f6netimi s\u00fcreci genellikle karma\u015f\u0131k, zaman al\u0131c\u0131 ve hataya a\u00e7\u0131k olabilir. Bir sunucu, bir veritaban\u0131, bir a\u011f bile\u015feni&#8230; Bunlar\u0131n her birini AWS konsolu \u00fczerinden manuel olarak yap\u0131land\u0131rmak, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k projelerde ger\u00e7ek bir kabusa d\u00f6n\u00fc\u015febilir. Peki ya bu s\u00fcre\u00e7leri otomatikle\u015ftirmenin, tutarl\u0131 hale getirmenin ve hatta s\u00fcr\u00fcm kontrol\u00fc alt\u0131na alman\u0131n bir yolu olsayd\u0131?<\/p>\n<p>\u0130\u015fte tam da bu noktada &#8220;Altyap\u0131 Kod Olarak&#8221; (Infrastructure as Code &#8211; IaC) kavram\u0131 devreye giriyor. IaC, sunucular, a\u011flar, veritabanlar\u0131 gibi altyap\u0131 bile\u015fenlerini, yaz\u0131l\u0131m kodlar\u0131 gibi tan\u0131mlayarak ve y\u00f6neterek bu sorunlara \u00e7\u00f6z\u00fcm sunar. Bu yakla\u015f\u0131m sayesinde, altyap\u0131 de\u011fi\u015fiklikleri kod repolar\u0131nda izlenebilir, test edilebilir ve otomatik olarak da\u011f\u0131t\u0131labilir hale gelir. Bu da insan hatas\u0131n\u0131 minimize ederken, da\u011f\u0131t\u0131m h\u0131z\u0131n\u0131 art\u0131r\u0131r ve maliyetleri d\u00fc\u015f\u00fcr\u00fcr. IaC ara\u00e7lar\u0131 aras\u0131nda \u00f6ne \u00e7\u0131kanlardan biri de HashiCorp Terraform&#8217;dur. Terraform, farkl\u0131 bulut sa\u011flay\u0131c\u0131lar\u0131nda (AWS, Azure, GCP vb.) altyap\u0131y\u0131 kod ile tan\u0131mlaman\u0131za olanak tan\u0131yan a\u00e7\u0131k kaynakl\u0131 bir ara\u00e7t\u0131r. Bu makalede, Terraform&#8217;un g\u00fcc\u00fcn\u00fc kullanarak, yaln\u0131zca yakla\u015f\u0131k 90 sat\u0131r kodla eksiksiz bir AWS a\u011f altyap\u0131s\u0131n\u0131 nas\u0131l kurabilece\u011fimizi ad\u0131m ad\u0131m inceleyece\u011fiz. Bu, sadece bir ba\u015flang\u0131\u00e7 noktas\u0131 de\u011fil, ayn\u0131 zamanda modern bulut mimarilerine giden yolda sa\u011flam bir temel olu\u015fturman\u0131za yard\u0131mc\u0131 olacak pratik bir rehber olacak. Haz\u0131rsan\u0131z, bulut altyap\u0131n\u0131z\u0131 kodla in\u015fa etme yolculu\u011funa ba\u015flayal\u0131m!<\/p>\n<h2>Temel Kavramlar: Terraform ve AWS A\u011f\u0131 Nedir?<\/h2>\n<p>Bulut altyap\u0131s\u0131n\u0131 kodla y\u00f6netme d\u00fcnyas\u0131na ad\u0131m atmadan \u00f6nce, konunun temel ta\u015flar\u0131n\u0131 olu\u015fturan Terraform&#8217;u ve AWS a\u011f\u0131n\u0131n ana bile\u015fenlerini anlamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu b\u00f6l\u00fcmde, hem Terraform&#8217;un ne oldu\u011funu ve neden bu kadar pop\u00fcler oldu\u011funu hem de temel bir AWS a\u011f\u0131n\u0131n hangi bile\u015fenlerden olu\u015ftu\u011funu detayl\u0131ca ele alaca\u011f\u0131z. Bu sayede, daha sonraki pratik uygulamalar i\u00e7in sa\u011flam bir bilgi birikimine sahip olacaks\u0131n\u0131z.<\/p>\n<h3>Terraform Nedir ve Neden Kullan\u0131l\u0131r?<\/h3>\n<p>Terraform, HashiCorp taraf\u0131ndan geli\u015ftirilen ve &#8220;Altyap\u0131 Kod Olarak&#8221; (IaC) prensibini benimseyen a\u00e7\u0131k kaynakl\u0131 bir ara\u00e7t\u0131r. Temel amac\u0131, bulut ve \u015firket i\u00e7i (on-premise) altyap\u0131 kaynaklar\u0131n\u0131 tan\u0131mlamak, sa\u011flamak ve y\u00f6netmek i\u00e7in deklaratif yap\u0131land\u0131rma dosyalar\u0131 kullanmakt\u0131r. Deklaratif olmak, &#8220;ne istedi\u011finizi&#8221; belirtmeniz anlam\u0131na gelir; Terraform ise &#8220;nas\u0131l yap\u0131laca\u011f\u0131n\u0131&#8221; kendisi \u00e7\u00f6zer. \u00d6rne\u011fin, bir sanal sunucu istedi\u011finizi belirtirsiniz, Terraform arka planda bu sunucuyu olu\u015fturmak i\u00e7in gerekli API \u00e7a\u011fr\u0131lar\u0131n\u0131 yapar.<\/p>\n<ul>\n<li><strong>Provider (Sa\u011flay\u0131c\u0131):<\/strong> Terraform&#8217;un en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri, farkl\u0131 platformlar i\u00e7in sa\u011flay\u0131c\u0131lar (provider) arac\u0131l\u0131\u011f\u0131yla \u00e7al\u0131\u015fabilmesidir. AWS, Azure, Google Cloud Platform (GCP) gibi bulut sa\u011flay\u0131c\u0131lar\u0131, Kubernetes, GitHub gibi hizmetler ve hatta VMware gibi \u015firket i\u00e7i platformlar i\u00e7in sa\u011flay\u0131c\u0131lar mevcuttur. Bu sayede, tek bir ara\u00e7la \u00e7oklu bulut stratejileri izleyebilir veya farkl\u0131 hizmetleri entegre edebilirsiniz.<\/li>\n<li><strong>Resource (Kaynak):<\/strong> Bir kaynak, Terraform taraf\u0131ndan y\u00f6netilen herhangi bir altyap\u0131 bile\u015fenini ifade eder. Bir AWS VPC (Virtual Private Cloud), bir EC2 instance (sanal sunucu), bir S3 bucket (depolama alan\u0131) veya bir g\u00fcvenlik grubu (security group) birer kaynakt\u0131r. Terraform yap\u0131land\u0131rma dosyalar\u0131nda, bu kaynaklar\u0131 ve onlar\u0131n \u00f6zelliklerini tan\u0131mlars\u0131n\u0131z.<\/li>\n<li><strong>State (Durum) Dosyas\u0131:<\/strong> Terraform, y\u00f6netti\u011fi altyap\u0131n\u0131n mevcut durumunu bir &#8220;state&#8221; dosyas\u0131nda tutar. Bu dosya, Terraform&#8217;un hangi kaynaklar\u0131 olu\u015fturdu\u011funu, bu kaynaklar\u0131n \u00f6zelliklerini ve Terraform yap\u0131land\u0131rman\u0131z ile ger\u00e7ek altyap\u0131n\u0131z aras\u0131ndaki ili\u015fkiyi izlemesini sa\u011flar. State dosyas\u0131 kritik \u00f6neme sahiptir ve genellikle uzak bir depolama alan\u0131nda (\u00f6rne\u011fin AWS S3) g\u00fcvenli bir \u015fekilde saklan\u0131r.<\/li>\n<li><strong>HCL (HashiCorp Configuration Language):<\/strong> Terraform yap\u0131land\u0131rma dosyalar\u0131, okunmas\u0131 kolay ve insan dostu olan HCL ile yaz\u0131l\u0131r. HCL, JSON format\u0131n\u0131 da destekler, ancak genellikle HCL syntax&#8217;\u0131 tercih edilir.<\/li>\n<\/ul>\n<p>Terraform kullanman\u0131n ba\u015fl\u0131ca avantajlar\u0131 aras\u0131nda otomasyon, tutarl\u0131l\u0131k (her da\u011f\u0131t\u0131m\u0131n ayn\u0131 olmas\u0131n\u0131 sa\u011flar), s\u00fcr\u00fcm kontrol\u00fc (altyap\u0131 kodunuzu Git gibi bir sistemde y\u00f6netebilirsiniz), maliyet optimizasyonu (gereksiz kaynaklar\u0131n \u00f6n\u00fcne ge\u00e7ilir) ve felaket kurtarma (altyap\u0131y\u0131 h\u0131zl\u0131ca yeniden olu\u015fturma) say\u0131labilir.<\/p>\n<h3>AWS A\u011f\u0131 Temelleri: VPC ve \u00d6tesi<\/h3>\n<p>AWS&#8217;de bir uygulama \u00e7al\u0131\u015ft\u0131rmak i\u00e7in sa\u011flam bir a\u011f altyap\u0131s\u0131 kurmak \u015fartt\u0131r. Bu altyap\u0131n\u0131n kalbi, Virtual Private Cloud (VPC) olarak adland\u0131r\u0131l\u0131r. VPC, AWS bulutu i\u00e7inde size \u00f6zel, mant\u0131ksal olarak izole edilmi\u015f bir sanal a\u011fd\u0131r. Kendi IP adres aral\u0131\u011f\u0131n\u0131z\u0131, alt a\u011flar\u0131n\u0131z\u0131 (subnets), rota tablolar\u0131n\u0131z\u0131 (route tables) ve a\u011f ge\u00e7itlerinizi (gateways) tan\u0131mlayabilirsiniz. Bir VPC, AWS&#8217;deki sanal veri merkeziniz gibidir ve di\u011fer AWS hizmetleri (EC2, RDS vb.) bu VPC i\u00e7inde konumland\u0131r\u0131l\u0131r.<\/p>\n<ul>\n<li><strong>Subnet&#8217;ler (Alt A\u011flar):<\/strong> Bir VPC&#8217;yi daha k\u00fc\u00e7\u00fck IP aral\u0131\u011f\u0131 bloklar\u0131na b\u00f6lerek alt a\u011flar olu\u015fturursunuz. Alt a\u011flar genellikle eri\u015filebilirlik b\u00f6lgelerine (Availability Zones &#8211; AZ) yay\u0131l\u0131r. \u0130ki ana t\u00fcr alt a\u011f vard\u0131r:\n<ul>\n<li><strong>Public Subnet:<\/strong> \u0130nternet&#8217;e do\u011frudan eri\u015fimi olan alt a\u011flard\u0131r. Genellikle web sunucular\u0131 veya y\u00fck dengeleyiciler (load balancers) gibi internete a\u00e7\u0131k kaynaklar burada bar\u0131nd\u0131r\u0131l\u0131r.<\/li>\n<li><strong>Private Subnet:<\/strong> \u0130nternet&#8217;e do\u011frudan eri\u015fimi olmayan alt a\u011flard\u0131r. Veritabanlar\u0131, uygulama sunucular\u0131 gibi hassas kaynaklar burada konumland\u0131r\u0131l\u0131r ve g\u00fcvenlikleri art\u0131r\u0131l\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Internet Gateway (IGW):<\/strong> Bir VPC&#8217;nin internet ile ileti\u015fim kurmas\u0131n\u0131 sa\u011flayan bir bile\u015fendir. Public subnet&#8217;teki kaynaklar\u0131n internet&#8217;e \u00e7\u0131k\u0131\u015f\u0131 ve internet&#8217;ten gelen trafi\u011fi almas\u0131 i\u00e7in bir IGW&#8217;ye ba\u011flanmas\u0131 gerekir.<\/li>\n<li><strong>Route Table&#8217;lar (Rota Tablolar\u0131):<\/strong> A\u011f trafi\u011finin alt a\u011flar i\u00e7inde veya d\u0131\u015f\u0131na nas\u0131l y\u00f6nlendirilece\u011fini belirleyen kurallar b\u00fct\u00fcn\u00fcd\u00fcr. Her alt a\u011f bir rota tablosuna ba\u011fl\u0131d\u0131r. \u00d6rne\u011fin, bir public subnet&#8217;in rota tablosu, internet trafi\u011fini IGW&#8217;ye y\u00f6nlendiren bir kural i\u00e7erecektir.<\/li>\n<li><strong>NAT Gateway (Network Address Translation Gateway):<\/strong> Private subnet&#8217;teki kaynaklar\u0131n internet&#8217;e \u00e7\u0131k\u0131\u015f yapmas\u0131n\u0131 (\u00f6rne\u011fin yaz\u0131l\u0131m g\u00fcncellemeleri indirmek i\u00e7in) sa\u011flarken, internet&#8217;ten gelen do\u011frudan eri\u015fimi engelleyen bir hizmettir. NAT Gateway&#8217;ler genellikle bir public subnet&#8217;te konumland\u0131r\u0131l\u0131r ve bir Elastic IP (EIP) adresi ile ili\u015fkilendirilir.<\/li>\n<li><strong>Security Groups (G\u00fcvenlik Gruplar\u0131):<\/strong> Sanal g\u00fcvenlik duvarlar\u0131d\u0131r. EC2 instance&#8217;lar\u0131 veya di\u011fer a\u011f aray\u00fczleri i\u00e7in gelen (inbound) ve giden (outbound) trafi\u011fi kontrol ederler. Belirli portlara ve IP adres aral\u0131klar\u0131na g\u00f6re eri\u015fime izin verebilir veya engelleyebilirsiniz.<\/li>\n<\/ul>\n<p>Bu temel bile\u015fenler, g\u00fcvenli, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir AWS a\u011f altyap\u0131s\u0131n\u0131n omurgas\u0131n\u0131 olu\u015fturur. Terraform ile bu bile\u015fenleri kod olarak tan\u0131mlayarak, altyap\u0131n\u0131z\u0131n da\u011f\u0131t\u0131m\u0131n\u0131 ve y\u00f6netimini \u00e7ok daha verimli hale getirebilirsiniz. Bu sayede, karma\u015f\u0131k a\u011f yap\u0131land\u0131rmalar\u0131n\u0131 bile tutarl\u0131 ve tekrarlanabilir bir \u015fekilde olu\u015fturmak m\u00fcmk\u00fcn olur.<\/p>\n<h2>Neden Sadece 90 Sat\u0131r? Az Kodla \u00c7ok \u0130\u015f Ba\u015farmak M\u00fcmk\u00fcn m\u00fc?<\/h2>\n<p>Ba\u015fl\u0131kta yer alan &#8220;90 sat\u0131r Terraform&#8221; ifadesi, pek \u00e7ok ki\u015finin kafas\u0131nda soru i\u015faretleri uyand\u0131rabilir: &#8220;Koca bir AWS a\u011f\u0131 ger\u00e7ekten bu kadar az kodla kurulabilir mi?&#8221; Cevap kesinlikle evet! Modern IaC ara\u00e7lar\u0131, \u00f6zellikle Terraform, sahip oldu\u011fu g\u00fc\u00e7l\u00fc \u00f6zellikler sayesinde az kodla \u00e7ok i\u015f ba\u015farman\u0131za olanak tan\u0131r. Bu b\u00f6l\u00fcmde, bu &#8220;az kodla \u00e7ok i\u015f&#8221; felsefesinin arkas\u0131ndaki nedenleri ve Terraform&#8217;un bu yetene\u011fini nas\u0131l kulland\u0131\u011f\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<p>Terraform&#8217;un bu kadar verimli olmas\u0131n\u0131n temelinde birka\u00e7 \u00f6nemli prensip yatar. \u0130lk olarak, Terraform&#8217;un deklaratif do\u011fas\u0131, sizin sadece istedi\u011finiz son durumu tan\u0131mlaman\u0131z\u0131 sa\u011flar. &#8220;\u015eu CIDR blo\u011funa sahip bir VPC istiyorum,&#8221; &#8220;bu CIDR blo\u011funa sahip bir public subnet istiyorum&#8221; gibi ifadelerle, Terraform&#8217;a ne yapmas\u0131 gerekti\u011fini s\u00f6ylersiniz. Terraform ise bu hedefe ula\u015fmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 (API \u00e7a\u011fr\u0131lar\u0131, ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi vb.) kendi ba\u015f\u0131na halleder. Bu, manuel yap\u0131land\u0131rman\u0131n veya imperative (emir kipiyle \u00e7al\u0131\u015fan) bir beti\u011fin gerektirece\u011fi say\u0131s\u0131z sat\u0131r kodu ortadan kald\u0131r\u0131r.<\/p>\n<p>\u0130kinci olarak, AWS gibi bulut sa\u011flay\u0131c\u0131lar\u0131n\u0131n sundu\u011fu y\u00fcksek seviyeli API&#8217;lar ve Terraform sa\u011flay\u0131c\u0131lar\u0131n\u0131n bu API&#8217;lar\u0131 etkin bir \u015fekilde kullanmas\u0131, karma\u015f\u0131kl\u0131\u011f\u0131 soyutlar. \u00d6rne\u011fin, bir NAT Gateway olu\u015fturmak i\u00e7in arka planda birden fazla ad\u0131m gerekse de, Terraform&#8217;da bu sadece birka\u00e7 sat\u0131rl\u0131k bir kaynak tan\u0131m\u0131d\u0131r. Bu soyutlama, geli\u015ftiricilerin ve operasyon ekiplerinin alt seviye detaylarla u\u011fra\u015fmak yerine, i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131r.<\/p>\n<p>\u00dc\u00e7\u00fcnc\u00fc olarak, Terraform&#8217;un mod\u00fcler yap\u0131s\u0131, kod tekrar\u0131n\u0131 azalt\u0131r ve daha temiz, daha y\u00f6netilebilir yap\u0131land\u0131rmalar olu\u015fturman\u0131za yard\u0131mc\u0131 olur. Her ne kadar bu makalede &#8220;90 sat\u0131r&#8221; hedefine ula\u015fmak i\u00e7in mod\u00fcl kullanmaktan ka\u00e7\u0131nsak da, ger\u00e7ek d\u00fcnya projelerinde mod\u00fcller, karma\u015f\u0131k altyap\u0131lar\u0131 daha k\u00fc\u00e7\u00fck, yeniden kullan\u0131labilir par\u00e7alara ay\u0131rmak i\u00e7in vazge\u00e7ilmezdir. Bu sayede, ayn\u0131 a\u011f yap\u0131s\u0131n\u0131 farkl\u0131 ortamlarda veya projelerde kolayca yeniden kullanabilirsiniz. \u00d6rne\u011fin, standart bir VPC mod\u00fcl\u00fc olu\u015fturup, sadece birka\u00e7 parametre ile farkl\u0131 VPC&#8217;ler kurabilirsiniz.<\/p>\n<p>Son olarak, Terraform&#8217;un varsay\u0131lan de\u011ferleri (default values) ve ak\u0131ll\u0131 kaynak ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi, kodunuzu daha da k\u0131salt\u0131r. Bir\u00e7ok AWS kayna\u011f\u0131, belirli varsay\u0131lan ayarlarla gelir ve siz bunlar\u0131 a\u00e7\u0131k\u00e7a belirtmedi\u011finiz s\u00fcrece Terraform bu varsay\u0131lanlar\u0131 kullan\u0131r. Ayr\u0131ca, Terraform kaynaklar aras\u0131ndaki ba\u011f\u0131ml\u0131l\u0131klar\u0131 (\u00f6rne\u011fin, bir subnet&#8217;in bir VPC&#8217;ye ba\u011fl\u0131 olmas\u0131) otomatik olarak alg\u0131lar ve kaynaklar\u0131 do\u011fru s\u0131rada olu\u015fturur, bu da manuel ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi i\u00e7in yaz\u0131lacak ek kodlar\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<p>Peki, bu &#8220;az kodla \u00e7ok i\u015f&#8221; yakla\u015f\u0131m\u0131n\u0131n ger\u00e7ek d\u00fcnya senaryolar\u0131nda faydalar\u0131 nelerdir? Bir startup d\u00fc\u015f\u00fcn\u00fcn. H\u0131zl\u0131 bir \u015fekilde Minimum Viable Product (MVP) i\u00e7in bir altyap\u0131 kurmalar\u0131 gerekiyor. Manuel olarak bir VPC, alt a\u011flar, g\u00fcvenlik gruplar\u0131 ve bir NAT Gateway kurmak saatler s\u00fcrebilir ve her seferinde ayn\u0131 hatalar\u0131 tekrarlama riski ta\u015f\u0131r. Ancak 90 sat\u0131rl\u0131k bir Terraform beti\u011fi ile bu altyap\u0131y\u0131 dakikalar i\u00e7inde aya\u011fa kald\u0131rabilirler. Bu, \u00fcr\u00fcn geli\u015ftirme h\u0131z\u0131n\u0131 art\u0131r\u0131r ve pazar lansman s\u00fcresini k\u0131salt\u0131r. Ayr\u0131ca, bu beti\u011fi s\u00fcr\u00fcm kontrol\u00fcne alarak, gelecekteki de\u011fi\u015fiklikleri kolayca y\u00f6netebilir ve ayn\u0131 altyap\u0131y\u0131 test, staging veya ba\u015fka bir b\u00f6lge i\u00e7in kopyalayabilirler. Bu esneklik ve h\u0131z, g\u00fcn\u00fcm\u00fcz rekabet\u00e7i ortam\u0131nda i\u015fletmeler i\u00e7in hayati \u00f6neme sahiptir. K\u0131sacas\u0131, 90 sat\u0131r Terraform, sadece bir say\u0131 de\u011fil, ayn\u0131 zamanda modern bulut m\u00fchendisli\u011finin verimlilik ve otomasyon potansiyelinin bir g\u00f6stergesidir.<\/p>\n<h2>Ad\u0131m Ad\u0131m Kurulum: 90 Sat\u0131r Terraform ile AWS A\u011f\u0131 Olu\u015fturma<\/h2>\n<p>\u015eimdi s\u0131ra geldi bu teorik bilgileri prati\u011fe d\u00f6kmeye. Bu b\u00f6l\u00fcmde, yakla\u015f\u0131k 90 sat\u0131r Terraform kodu kullanarak eksiksiz bir AWS a\u011f\u0131 nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m g\u00f6rece\u011fiz. Bu a\u011f, bir Virtual Private Cloud (VPC), bir public subnet (genel alt a\u011f), bir private subnet (\u00f6zel alt a\u011f), bir Internet Gateway (internet a\u011f ge\u00e7idi), bir NAT Gateway ve temel bir g\u00fcvenlik grubundan olu\u015facak. Bu yap\u0131, \u00e7o\u011fu web uygulamas\u0131 i\u00e7in sa\u011flam bir temel te\u015fkil eder.<\/p>\n<h3>\u00d6n Haz\u0131rl\u0131klar: AWS ve Terraform Kurulumu<\/h3>\n<p>Ba\u015flamadan \u00f6nce, sisteminizde baz\u0131 \u00f6n ko\u015fullar\u0131n yerine getirilmi\u015f olmas\u0131 gerekir:<\/p>\n<ol>\n<li><strong>AWS Hesab\u0131:<\/strong> Aktif bir AWS hesab\u0131n\u0131z olmal\u0131.<\/li>\n<li><strong>AWS CLI Kurulumu ve Yap\u0131land\u0131rmas\u0131:<\/strong> AWS Komut Sat\u0131r\u0131 Arabirimi (CLI) kurulu ve AWS hesab\u0131n\u0131zla kimlik do\u011frulamas\u0131 yap\u0131lm\u0131\u015f olmal\u0131. Kimlik bilgilerinizi (<code>aws configure<\/code> komutu ile) yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.<\/li>\n<li><strong>Terraform Kurulumu:<\/strong> Terraform&#8217;un sisteminizde kurulu olmas\u0131 gerekiyor. Kurulum talimatlar\u0131 i\u00e7in HashiCorp&#8217;un resmi web sitesini ziyaret edebilirsiniz.<\/li>\n<\/ol>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131ktan sonra, projeniz i\u00e7in yeni bir dizin olu\u015fturun (\u00f6rne\u011fin: <code>mkdir aws-network-90-lines && cd aws-network-90-lines<\/code>) ve i\u00e7ine Terraform yap\u0131land\u0131rma dosyalar\u0131n\u0131 yerle\u015ftirece\u011fiz.<\/p>\n<h3>Terraform Dosyalar\u0131n\u0131 Olu\u015fturma<\/h3>\n<p>Proje dizininizde \u00fc\u00e7 temel dosya olu\u015fturaca\u011f\u0131z: <code>provider.tf<\/code>, <code>main.tf<\/code> ve <code>outputs.tf<\/code>. Hedefimiz, <code>main.tf<\/code> dosyas\u0131ndaki kaynak tan\u0131mlar\u0131n\u0131 ve di\u011fer dosyalar\u0131 birle\u015ftirerek toplamda yakla\u015f\u0131k 90 sat\u0131rda t\u00fcm a\u011f\u0131 kurmak.<\/p>\n<h4>1. Provider Tan\u0131m\u0131: <\/p>\n<pre><code>provider.tf<\/code><\/pre>\n<\/h4>\n<p>Bu dosya, Terraform&#8217;un hangi bulut sa\u011flay\u0131c\u0131s\u0131n\u0131 kullanaca\u011f\u0131n\u0131 ve hangi AWS b\u00f6lgesinde kaynaklar\u0131 olu\u015fturaca\u011f\u0131n\u0131 belirtir. \u00d6rne\u011fin, Frankfurt b\u00f6lgesini (<code>eu-central-1<\/code>) kullanaca\u011f\u0131z.<\/p>\n<div class=\"code-container\">\n<pre><code>\nterraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp\/aws\"\n      version = \"~> 5.0\" # AWS provider'\u0131n 5.x s\u00fcr\u00fcm\u00fcn\u00fc kullan\n    }\n  }\n}\n\nprovider \"aws\" {\n  region = \"eu-central-1\" # Kaynaklar\u0131n olu\u015fturulaca\u011f\u0131 AWS b\u00f6lgesi\n}\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Bu kod blo\u011fu, Terraform&#8217;a AWS sa\u011flay\u0131c\u0131s\u0131n\u0131 kullanaca\u011f\u0131n\u0131 ve belirtilen b\u00f6lgede \u00e7al\u0131\u015faca\u011f\u0131n\u0131 s\u00f6yler. Yakla\u015f\u0131k 7 sat\u0131r.<\/p>\n<h4>2. Ana A\u011f Bile\u015fenleri: <\/p>\n<pre><code>main.tf<\/code><\/pre>\n<\/h4>\n<p>Bu dosya, AWS a\u011f\u0131m\u0131z\u0131n t\u00fcm ana bile\u015fenlerini tan\u0131mlayaca\u011f\u0131m\u0131z yerdir. VPC&#8217;den ba\u015flayarak alt a\u011flara ve rota tablolar\u0131na kadar her \u015feyi burada yap\u0131land\u0131raca\u011f\u0131z. Sat\u0131r say\u0131s\u0131n\u0131 90&#8217;da tutmak i\u00e7in m\u00fcmk\u00fcn oldu\u011funca k\u0131sa ve \u00f6z tan\u0131mlar kullanaca\u011f\u0131z.<\/p>\n<div class=\"code-container\">\n<pre><code>\n# 1. VPC Olu\u015fturma\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0\/16\"\n  enable_dns_hostnames = true\n  enable_dns_support   = true\n  tags = { Name = \"MyVPC\" }\n}\n\n# 2. Internet Gateway (IGW) Olu\u015fturma ve VPC'ye Ba\u011flama\nresource \"aws_internet_gateway\" \"main\" {\n  vpc_id = aws_vpc.main.id\n  tags = { Name = \"MyVPC-IGW\" }\n}\n\n# 3. Public Subnet Olu\u015fturma\nresource \"aws_subnet\" \"public\" {\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = \"10.0.1.0\/24\"\n  availability_zone = \"eu-central-1a\" # Kendi b\u00f6lgenize g\u00f6re ayarlay\u0131n\n  map_public_ip_on_launch = true # Public IP atamas\u0131n\u0131 etkinle\u015ftir\n  tags = { Name = \"MyVPC-PublicSubnet\" }\n}\n\n# 4. Public Route Table Olu\u015fturma ve \u0130nternet Eri\u015fimi Sa\u011flama\nresource \"aws_route_table\" \"public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0\/0\" # T\u00fcm trafi\u011fi\n    gateway_id = aws_internet_gateway.main.id # IGW'ye y\u00f6nlendir\n  }\n  tags = { Name = \"MyVPC-PublicRouteTable\" }\n}\n\n# 5. Public Subnet'i Public Route Table'a Ba\u011flama\nresource \"aws_route_table_association\" \"public\" {\n  subnet_id      = aws_subnet.public.id\n  route_table_id = aws_route_table.public.id\n}\n\n# 6. Private Subnet Olu\u015fturma\nresource \"aws_subnet\" \"private\" {\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = \"10.0.2.0\/24\"\n  availability_zone = \"eu-central-1b\" # Kendi b\u00f6lgenize g\u00f6re ayarlay\u0131n\n  tags = { Name = \"MyVPC-PrivateSubnet\" }\n}\n\n# 7. NAT Gateway i\u00e7in Elastic IP (EIP) Olu\u015fturma\nresource \"aws_eip\" \"nat\" {\n  vpc = true\n  tags = { Name = \"MyVPC-NAT-EIP\" }\n}\n\n# 8. NAT Gateway Olu\u015fturma (Public Subnet'te)\nresource \"aws_nat_gateway\" \"main\" {\n  allocation_id = aws_eip.nat.id\n  subnet_id     = aws_subnet.public.id # NAT Gateway public subnet'te olmal\u0131\n  tags = { Name = \"MyVPC-NATGateway\" }\n  depends_on = [aws_internet_gateway.main] # IGW ba\u011f\u0131ml\u0131l\u0131\u011f\u0131\n}\n\n# 9. Private Route Table Olu\u015fturma ve NAT Gateway \u00dczerinden \u0130nternet Eri\u015fimi Sa\u011flama\nresource \"aws_route_table\" \"private\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block     = \"0.0.0.0\/0\" # T\u00fcm trafi\u011fi\n    nat_gateway_id = aws_nat_gateway.main.id # NAT Gateway'e y\u00f6nlendir\n  }\n  tags = { Name = \"MyVPC-PrivateRouteTable\" }\n}\n\n# 10. Private Subnet'i Private Route Table'a Ba\u011flama\nresource \"aws_route_table_association\" \"private\" {\n  subnet_id      = aws_subnet.private.id\n  route_table_id = aws_route_table.private.id\n}\n\n# 11. G\u00fcvenlik Grubu Olu\u015fturma (\u00d6rnek: SSH ve HTTP eri\u015fimi)\nresource \"aws_security_group\" \"web_sg\" {\n  name        = \"web_sg\"\n  description = \"Allow HTTP and SSH inbound traffic\"\n  vpc_id      = aws_vpc.main.id\n\n  ingress { from_port = 22; to_port = 22; protocol = \"tcp\"; cidr_blocks = [\"0.0.0.0\/0\"] } # SSH\n  ingress { from_port = 80; to_port = 80; protocol = \"tcp\"; cidr_blocks = [\"0.0.0.0\/0\"] } # HTTP\n  egress { from_port = 0; to_port = 0; protocol = \"-1\"; cidr_blocks = [\"0.0.0.0\/0\"] } # T\u00fcm giden trafi\u011fe izin ver\n\n  tags = { Name = \"WebSecurityGroup\" }\n}\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Bu <\/p>\n<pre><code>main.tf<\/code><\/pre>\n<p> dosyas\u0131 yakla\u015f\u0131k 70 sat\u0131rdan olu\u015fuyor. Toplamda <\/p>\n<pre><code>provider.tf<\/code><\/pre>\n<p> ile birlikte yakla\u015f\u0131k 77 sat\u0131rday\u0131z.<\/p>\n<h4>3. \u00c7\u0131kt\u0131lar: <\/p>\n<pre><code>outputs.tf<\/code><\/pre>\n<\/h4>\n<p>Olu\u015fturulan kaynaklar\u0131n baz\u0131 \u00f6nemli \u00f6zelliklerini (\u00f6rne\u011fin VPC ID&#8217;si, subnet ID&#8217;leri) Terraform uygulamas\u0131n\u0131n sonunda \u00e7\u0131kt\u0131 olarak g\u00f6rmek isteyebiliriz. Bu, di\u011fer Terraform yap\u0131land\u0131rmalar\u0131nda veya manuel kontrollerde faydal\u0131 olabilir.<\/p>\n<div class=\"code-container\">\n<pre><code>\noutput \"vpc_id\" {\n  description = \"Olu\u015fturulan VPC'nin ID'si\"\n  value       = aws_vpc.main.id\n}\n\noutput \"public_subnet_id\" {\n  description = \"Public Subnet'in ID'si\"\n  value       = aws_subnet.public.id\n}\n\noutput \"private_subnet_id\" {\n  description = \"Private Subnet'in ID'si\"\n  value       = aws_subnet.private.id\n}\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Bu <\/p>\n<pre><code>outputs.tf<\/code><\/pre>\n<p> dosyas\u0131 yakla\u015f\u0131k 10 sat\u0131rdan olu\u015fuyor. B\u00f6ylece, <\/p>\n<pre><code>provider.tf<\/code><\/pre>\n<p>, <\/p>\n<pre><code>main.tf<\/code><\/pre>\n<p> ve <\/p>\n<pre><code>outputs.tf<\/code><\/pre>\n<p> dosyalar\u0131ndaki toplam sat\u0131r say\u0131s\u0131 yakla\u015f\u0131k 87&#8217;ye ula\u015f\u0131yor. Bu da &#8220;90 sat\u0131r&#8221; hedefimize olduk\u00e7a yak\u0131n ve eksiksiz bir AWS a\u011f\u0131 i\u00e7in yeterli bir kod miktar\u0131d\u0131r.<\/p>\n<h3>Terraform Komutlar\u0131: <\/p>\n<pre><code>init<\/code><\/pre>\n<p>, <\/p>\n<pre><code>plan<\/code><\/pre>\n<p>, <\/p>\n<pre><code>apply<\/code><\/pre>\n<\/h3>\n<p>Kod dosyalar\u0131n\u0131z\u0131 olu\u015fturduktan sonra, Terraform&#8217;u \u00e7al\u0131\u015ft\u0131rma zaman\u0131:<\/p>\n<ol>\n<li><strong><code>terraform init<\/code>:<\/strong> Terraform \u00e7al\u0131\u015fma dizininizi ba\u015flat\u0131r. Sa\u011flay\u0131c\u0131 eklentilerini indirir ve arka u\u00e7 (backend) yap\u0131land\u0131rmas\u0131n\u0131 ayarlar.\n<div class=\"code-container\">\n<pre><code>\nterraform init\n              <\/code><\/pre>\n<\/p><\/div>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Terraform gerekli AWS sa\u011flay\u0131c\u0131s\u0131n\u0131 indirecek ve \u00e7al\u0131\u015fma ortam\u0131n\u0131z\u0131 haz\u0131rlayacakt\u0131r.<\/p>\n<\/li>\n<li><strong><code>terraform plan<\/code>:<\/strong> Yap\u0131land\u0131rma dosyalar\u0131n\u0131zdaki de\u011fi\u015fiklikleri ger\u00e7ek AWS ortam\u0131yla kar\u015f\u0131la\u015ft\u0131r\u0131r ve Terraform&#8217;un uygulayaca\u011f\u0131 de\u011fi\u015fiklikleri (ne olu\u015fturulacak, ne g\u00fcncellenecek, ne silinecek) g\u00f6steren bir y\u00fcr\u00fctme plan\u0131 olu\u015fturur. Bu, de\u011fi\u015fiklikleri uygulamadan \u00f6nce g\u00f6zden ge\u00e7irmek i\u00e7in kritik bir ad\u0131md\u0131r.\n<div class=\"code-container\">\n<pre><code>\nterraform plan\n              <\/code><\/pre>\n<\/p><\/div>\n<p>\u00c7\u0131kt\u0131da, 11 yeni kaynak olu\u015fturulaca\u011f\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<\/li>\n<li><strong><code>terraform apply<\/code>:<\/strong> <code>terraform plan<\/code> taraf\u0131ndan olu\u015fturulan y\u00fcr\u00fctme plan\u0131n\u0131 uygular ve AWS altyap\u0131n\u0131z\u0131 yap\u0131land\u0131rma dosyalar\u0131n\u0131zdaki duruma getirir. Bu komut, sizden onay isteyecektir.\n<div class=\"code-container\">\n<pre><code>\nterraform apply\n              <\/code><\/pre>\n<\/p><\/div>\n<p>Onay verdikten sonra (<code>yes<\/code> yazarak), Terraform kaynaklar\u0131 AWS&#8217;de olu\u015fturmaya ba\u015flayacak ve i\u015flem tamamland\u0131\u011f\u0131nda <code>outputs.tf<\/code> dosyas\u0131nda tan\u0131mlad\u0131\u011f\u0131n\u0131z de\u011ferleri g\u00f6sterecektir.<\/p>\n<\/li>\n<li><strong><code>terraform destroy<\/code>:<\/strong> E\u011fer olu\u015fturdu\u011funuz altyap\u0131y\u0131 kald\u0131rmak isterseniz, bu komutu kullanabilirsiniz. Dikkatli olun, bu komut t\u00fcm kaynaklar\u0131 siler!\n<div class=\"code-container\">\n<pre><code>\nterraform destroy\n              <\/code><\/pre>\n<\/p><\/div>\n<\/li>\n<\/ol>\n<p>Tebrikler! Sadece yakla\u015f\u0131k 90 sat\u0131r Terraform koduyla eksiksiz bir AWS a\u011f\u0131 olu\u015fturdunuz. Bu, altyap\u0131 otomasyonunun ne kadar g\u00fc\u00e7l\u00fc ve verimli olabilece\u011finin harika bir \u00f6rne\u011fidir.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Uygulamalar\u0131 ve Vaka Analizi: Terraform Nerede Fark Yarat\u0131r?<\/h2>\n<p>90 sat\u0131r Terraform ile bir AWS a\u011f\u0131 kurman\u0131n ne kadar kolay oldu\u011funu g\u00f6rd\u00fck. Peki, bu pratik bilgi ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l bir fark yarat\u0131yor? Altyap\u0131y\u0131 kod olarak y\u00f6netme (IaC) yakla\u015f\u0131m\u0131, \u00f6zellikle Terraform ile birle\u015fti\u011finde, i\u015fletmelerin ve geli\u015ftirici ekiplerinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 bir\u00e7ok zorlu\u011fa \u00e7\u00f6z\u00fcm sunar. \u0130\u015fte baz\u0131 ger\u00e7ek d\u00fcnya uygulamalar\u0131 ve vaka analizleri:<\/p>\n<p><strong>1. Startup&#8217;lar ve H\u0131zl\u0131 MVP (Minimum Viable Product) Geli\u015ftirme:<\/strong> K\u00fc\u00e7\u00fck bir startup&#8217;\u0131n yeni bir web uygulamas\u0131 veya mobil uygulama i\u00e7in h\u0131zl\u0131ca bir altyap\u0131 kurmas\u0131 gerekti\u011fini d\u00fc\u015f\u00fcn\u00fcn. Geleneksel y\u00f6ntemlerle, bu s\u00fcre\u00e7 haftalar s\u00fcrebilir ve de\u011ferli geli\u015ftirme zaman\u0131n\u0131 t\u00fcketebilir. Ancak, 90 sat\u0131rl\u0131k bir Terraform beti\u011fi ile, temel bir VPC, public\/private alt a\u011flar, internet ve NAT ge\u00e7itleri ile birlikte bir g\u00fcvenlik grubunu dakikalar i\u00e7inde devreye alabilirler. Bu, ekibin hemen uygulama geli\u015ftirmeye odaklanmas\u0131n\u0131 sa\u011flar ve \u00fcr\u00fcnlerini pazara daha h\u0131zl\u0131 sunmalar\u0131na olanak tan\u0131r. \u00d6rne\u011fin, T\u00fcrkiye&#8217;de yeni kurulan bir e-ticaret giri\u015fimi, ilk prototipini AWS \u00fczerinde Terraform ile kurarak hem maliyetlerini d\u00fc\u015f\u00fck tutmu\u015f hem de h\u0131zla m\u00fc\u015fteri geri bildirimlerini toplayacak bir platforma sahip olmu\u015ftur. Bu sayede, manuel yap\u0131land\u0131rma hatalar\u0131ndan ka\u00e7\u0131n\u0131lm\u0131\u015f ve altyap\u0131n\u0131n s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda olmas\u0131 sayesinde gelecekteki de\u011fi\u015fiklikler kolayca y\u00f6netilebilmi\u015ftir.<\/p>\n<p><strong>2. Geli\u015ftirme, Test ve \u00dcretim Ortamlar\u0131n\u0131n Tutarl\u0131 Y\u00f6netimi:<\/strong> B\u00fcy\u00fck \u00f6l\u00e7ekli yaz\u0131l\u0131m \u015firketleri genellikle geli\u015ftirme (dev), test (test), sahneleme (staging) ve \u00fcretim (production) gibi birden fazla ortama sahiptir. Bu ortamlar\u0131n her birinin manuel olarak yap\u0131land\u0131r\u0131lmas\u0131, tutars\u0131zl\u0131klara, &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yor&#8221; sendromlar\u0131na ve g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir. Terraform ile, her ortam i\u00e7in ayn\u0131 kod taban\u0131n\u0131 kullanarak altyap\u0131y\u0131 tan\u0131mlayabilirsiniz. Sadece birka\u00e7 de\u011fi\u015fkeni (\u00f6rne\u011fin, kaynak boyutu, IP aral\u0131\u011f\u0131) de\u011fi\u015ftirerek her ortam\u0131n birebir ayn\u0131 olmas\u0131n\u0131 sa\u011flayabilirsiniz. Bu, testlerin \u00fcretim ortam\u0131nda da beklenen \u015fekilde \u00e7al\u0131\u015faca\u011f\u0131ndan emin olman\u0131z\u0131 sa\u011flar ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini standartla\u015ft\u0131r\u0131r. Bir bankac\u0131l\u0131k uygulamas\u0131 geli\u015ftiren bir ekip, Terraform mod\u00fclleri kullanarak her bir ortam i\u00e7in ayn\u0131 g\u00fcvenlik politikalar\u0131n\u0131 ve a\u011f yap\u0131lar\u0131n\u0131 uygulam\u0131\u015f, b\u00f6ylece uyumluluk denetimlerinden sorunsuz ge\u00e7mi\u015ftir.<\/p>\n<p><strong>3. Felaket Kurtarma (Disaster Recovery) ve \u0130\u015f S\u00fcreklili\u011fi:<\/strong> Bir felaket an\u0131nda (\u00f6rne\u011fin, bir AWS b\u00f6lgesinin tamamen \u00e7\u00f6kmesi), uygulamalar\u0131n\u0131z\u0131 ve verilerinizi ba\u015fka bir b\u00f6lgede h\u0131zl\u0131ca yeniden aya\u011fa kald\u0131rmak hayati \u00f6nem ta\u015f\u0131r. E\u011fer altyap\u0131n\u0131z kod olarak tan\u0131mlanm\u0131\u015fsa, bu s\u00fcre\u00e7 \u00e7ok daha kolay hale gelir. Terraform yap\u0131land\u0131rma dosyalar\u0131n\u0131z\u0131 ba\u015fka bir AWS b\u00f6lgesine uygulayarak, dakikalar veya saatler i\u00e7inde t\u00fcm altyap\u0131n\u0131z\u0131 yeniden olu\u015fturabilirsiniz. Bu, manuel kurtarma senaryolar\u0131nda g\u00fcnler veya haftalar s\u00fcrebilecek olan bir s\u00fcreci \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r ve i\u015f s\u00fcreklili\u011fini garanti alt\u0131na al\u0131r. \u00d6zellikle kamu kurumlar\u0131 ve kritik altyap\u0131 sa\u011flay\u0131c\u0131lar\u0131, felaket kurtarma planlar\u0131n\u0131 Terraform gibi IaC ara\u00e7lar\u0131yla otomatize ederek hizmet kesintisi riskini minimize etmektedir.<\/p>\n<p><strong>4. \u00c7oklu Bulut ve Hibrit Bulut Stratejileri:<\/strong> Baz\u0131 kurulu\u015flar, farkl\u0131 i\u015f y\u00fckleri i\u00e7in birden fazla bulut sa\u011flay\u0131c\u0131s\u0131 (AWS, Azure, GCP) kullan\u0131r veya bulut ile \u015firket i\u00e7i veri merkezlerini bir arada kullan\u0131r. Terraform&#8217;un sa\u011flay\u0131c\u0131 (provider) tabanl\u0131 mimarisi, farkl\u0131 platformlardaki altyap\u0131y\u0131 tek bir ara\u00e7la y\u00f6netmenize olanak tan\u0131r. Bu, karma\u015f\u0131k \u00e7oklu bulut ortamlar\u0131nda bile tutarl\u0131 bir y\u00f6netim deneyimi sunar ve operasyonel karma\u015f\u0131kl\u0131\u011f\u0131 azalt\u0131r. \u00d6rne\u011fin, bir medya \u015firketi, video i\u015fleme i\u00e7in GCP&#8217;yi, depolama ve da\u011f\u0131t\u0131m i\u00e7in AWS&#8217;yi kullan\u0131rken, t\u00fcm altyap\u0131lar\u0131n\u0131 Terraform ile tek bir merkezden y\u00f6neterek entegrasyonu basitle\u015ftirmi\u015ftir.<\/p>\n<p>Bu vaka analizleri, Terraform&#8217;un sadece kod yazma arac\u0131 olmaktan \u00f6te, modern i\u015fletmelerin \u00e7eviklik, g\u00fcvenilirlik ve maliyet etkinli\u011fi hedeflerine ula\u015fmalar\u0131nda nas\u0131l kilit bir rol oynad\u0131\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Az kodla bile olsa, do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir Terraform beti\u011fi, bulut altyap\u0131s\u0131 y\u00f6netiminde devrim niteli\u011finde bir de\u011fi\u015fim yaratabilir.<\/p>\n<h2>\u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar: Terraform Yeteneklerinizi Geli\u015ftirin<\/h2>\n<p>90 sat\u0131r Terraform ile temel bir AWS a\u011f\u0131 kurmak harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Ancak ger\u00e7ek d\u00fcnya projeleri, genellikle daha fazla karma\u015f\u0131kl\u0131k, i\u015f birli\u011fi ve y\u00f6netim gerektirir. Bu b\u00f6l\u00fcmde, Terraform yeteneklerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak ileri d\u00fczey ipu\u00e7lar\u0131n\u0131 ve en iyi uygulamalar\u0131 ele alaca\u011f\u0131z. Bu bilgiler, daha b\u00fcy\u00fck ve daha s\u00fcrd\u00fcr\u00fclebilir altyap\u0131 projelerinde size rehberlik edecektir.<\/p>\n<h3>Mod\u00fcllerin G\u00fcc\u00fc: Tekrar Kullan\u0131labilir Kod Bloklar\u0131<\/h3>\n<p>Daha \u00f6nce de bahsetti\u011fimiz gibi, Terraform mod\u00fclleri, yap\u0131land\u0131rma kodunuzu mant\u0131ksal olarak grupland\u0131rman\u0131za ve tekrar kullan\u0131labilir bile\u015fenler haline getirmenize olanak tan\u0131r. Bir mod\u00fcl, bir veya daha fazla kaynak tan\u0131m\u0131n\u0131, de\u011fi\u015fkenleri (variables) ve \u00e7\u0131kt\u0131lar\u0131 (outputs) i\u00e7erebilir. \u00d6rne\u011fin, standart bir VPC yap\u0131s\u0131, public ve private alt a\u011flar\u0131, rota tablolar\u0131 ve g\u00fcvenlik gruplar\u0131 ile birlikte bir mod\u00fcl olarak tan\u0131mlanabilir. Bu mod\u00fcl\u00fc daha sonra farkl\u0131 projelerde veya farkl\u0131 ortamlarda (dev, test, prod) sadece birka\u00e7 parametre ile \u00e7a\u011f\u0131rarak kullanabilirsiniz. Bu, kod tekrar\u0131n\u0131 azalt\u0131r, kodun okunabilirli\u011fini art\u0131r\u0131r ve altyap\u0131n\u0131zda tutarl\u0131l\u0131k sa\u011flar. Mod\u00fcller, Terraform Registry&#8217;den (resmi veya topluluk taraf\u0131ndan olu\u015fturulmu\u015f) veya kendi \u00f6zel Git depolar\u0131n\u0131zdan \u00e7a\u011fr\u0131labilir. B\u00fcy\u00fck ekiplerde, merkezi bir mod\u00fcl k\u00fct\u00fcphanesi olu\u015fturmak, altyap\u0131 geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r ve standartla\u015ft\u0131r\u0131r.<\/p>\n<h3>State Y\u00f6netimi: Uzak Depolama ve Kilitleme<\/h3>\n<p>Terraform&#8217;un state dosyas\u0131, y\u00f6netti\u011fi altyap\u0131n\u0131n ger\u00e7ek durumunu izledi\u011fi i\u00e7in kritik \u00f6neme sahiptir. Varsay\u0131lan olarak, bu dosya yerel makinenizde <\/p>\n<pre><code>terraform.tfstate<\/code><\/pre>\n<p> ad\u0131yla saklan\u0131r. Ancak \u00fcretim ortamlar\u0131nda veya ekip \u00e7al\u0131\u015fmalar\u0131nda bu yakla\u015f\u0131m yetersizdir. State dosyas\u0131n\u0131n kaybolmas\u0131, bozulmas\u0131 veya yanl\u0131\u015fl\u0131kla \u00fczerine yaz\u0131lmas\u0131 ciddi sorunlara yol a\u00e7abilir. Bu nedenle, state dosyas\u0131n\u0131 uzak bir depolama alan\u0131nda (remote backend) saklamak en iyi uygulamad\u0131r. AWS S3, bu ama\u00e7 i\u00e7in pop\u00fcler ve g\u00fcvenilir bir se\u00e7enektir. S3 bucket&#8217;\u0131 s\u00fcr\u00fcm kontrol\u00fcn\u00fc destekledi\u011fi i\u00e7in state dosyan\u0131z\u0131n ge\u00e7mi\u015fini de tutabilirsiniz. Ayr\u0131ca, ayn\u0131 anda birden fazla ki\u015finin Terraform \u00e7al\u0131\u015ft\u0131rmas\u0131 durumunda state dosyas\u0131n\u0131n bozulmas\u0131n\u0131 \u00f6nlemek i\u00e7in state kilitleme (state locking) mekanizmas\u0131 da \u00f6nemlidir. AWS DynamoDB, S3 ile birlikte state kilitleme i\u00e7in s\u0131k\u00e7a kullan\u0131l\u0131r. Bu iki hizmetin entegrasyonu, state y\u00f6netimini g\u00fcvenli ve i\u015f birlik\u00e7i hale getirir.<\/p>\n<h3>CI\/CD Entegrasyonu: Otomatik Da\u011f\u0131t\u0131m S\u00fcre\u00e7leri<\/h3>\n<p>Terraform&#8217;u CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) i\u015flem hatlar\u0131na entegre etmek, altyap\u0131 de\u011fi\u015fikliklerinin otomatik olarak test edilmesini, planlanmas\u0131n\u0131 ve uygulanmas\u0131n\u0131 sa\u011flar. Bu, insan hatas\u0131n\u0131 minimize eder, da\u011f\u0131t\u0131m h\u0131z\u0131n\u0131 art\u0131r\u0131r ve altyap\u0131 de\u011fi\u015fikliklerini yaz\u0131l\u0131m de\u011fi\u015fiklikleriyle ayn\u0131 titizlikle y\u00f6netmenize olanak tan\u0131r. Jenkins, GitLab CI\/CD, GitHub Actions, AWS CodePipeline gibi ara\u00e7lar, Terraform ad\u0131mlar\u0131n\u0131 (<code>terraform plan<\/code>, <code>terraform apply<\/code>) otomatikle\u015ftirerek bu entegrasyonu kolayla\u015ft\u0131r\u0131r. Bir kod de\u011fi\u015fikli\u011fi yap\u0131ld\u0131\u011f\u0131nda, CI\/CD hatt\u0131 otomatik olarak bir plan olu\u015fturur, g\u00f6zden ge\u00e7irme i\u00e7in sunar ve onayland\u0131ktan sonra altyap\u0131y\u0131 g\u00fcnceller. Bu yakla\u015f\u0131m, DevOps prensiplerinin temelini olu\u015fturur ve modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r.<\/p>\n<h3>G\u00fcvenlik: Secrets Y\u00f6netimi ve IAM Entegrasyonu<\/h3>\n<p>Altyap\u0131 kodunuzda hassas bilgileri (veritaban\u0131 \u015fifreleri, API anahtarlar\u0131 vb.) do\u011frudan saklamak b\u00fcy\u00fck bir g\u00fcvenlik riskidir. Bu t\u00fcr bilgileri y\u00f6netmek i\u00e7in \u00f6zel &#8220;secrets y\u00f6netimi&#8221; \u00e7\u00f6z\u00fcmleri kullanmal\u0131s\u0131n\u0131z. AWS Secrets Manager veya HashiCorp Vault, bu hassas verileri g\u00fcvenli bir \u015fekilde saklaman\u0131za, \u015fifrelemenize ve gerekti\u011finde Terraform taraf\u0131ndan dinamik olarak alman\u0131za olanak tan\u0131r. Ayr\u0131ca, Terraform&#8217;un AWS kaynaklar\u0131n\u0131 olu\u015ftururken kulland\u0131\u011f\u0131 IAM (Identity and Access Management) rolleri ve politikalar\u0131 da do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131lmal\u0131d\u0131r. En az ayr\u0131cal\u0131k (least privilege) prensibi uygulanarak, Terraform&#8217;un yaln\u0131zca ihtiya\u00e7 duydu\u011fu kaynaklar\u0131 olu\u015fturma veya de\u011fi\u015ftirme yetkisine sahip oldu\u011fundan emin olunmal\u0131d\u0131r. Bu, olas\u0131 g\u00fcvenlik ihlallerinin etkisini s\u0131n\u0131rlamaya yard\u0131mc\u0131 olur.<\/p>\n<h3>Maliyet Optimizasyonu ve Etiketleme<\/h3>\n<p>Bulut kaynaklar\u0131n\u0131n maliyetini etkin bir \u015fekilde y\u00f6netmek, her i\u015fletme i\u00e7in \u00f6nemlidir. Terraform ile olu\u015fturdu\u011funuz t\u00fcm kaynaklara anlaml\u0131 etiketler (tags) eklemek, maliyet takibi ve kaynak y\u00f6netimi i\u00e7in kritik \u00f6neme sahiptir. \u00d6rne\u011fin, her kayna\u011fa <\/p>\n<pre><code>Project: MyWebApp<\/code><\/pre>\n<p>, <\/p>\n<pre><code>Environment: Production<\/code><\/pre>\n<p> ve <\/p>\n<pre><code>Owner: DevOpsTeam<\/code><\/pre>\n<p> gibi etiketler ekleyebilirsiniz. AWS&#8217;nin maliyet y\u00f6netimi ara\u00e7lar\u0131, bu etiketleri kullanarak harcamalar\u0131n\u0131z\u0131 projelere, departmanlara veya ortamlara g\u00f6re detayl\u0131 bir \u015fekilde analiz etmenizi sa\u011flar. Bu sayede, gereksiz kaynaklar\u0131 tespit edebilir, maliyetleri optimize edebilir ve b\u00fct\u00e7enizi daha etkili bir \u015fekilde y\u00f6netebilirsiniz.<\/p>\n<p>Bu ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar, Terraform ile \u00e7al\u0131\u015f\u0131rken sadece bir altyap\u0131 olu\u015fturmaktan \u00f6te, onu g\u00fcvenli, \u00f6l\u00e7eklenebilir, y\u00f6netilebilir ve maliyet etkin bir \u015fekilde s\u00fcrd\u00fcrmenize yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n, IaC sadece bir ara\u00e7 de\u011fil, ayn\u0131 zamanda bir zihniyettir.<\/p>\n<h2>Sonu\u00e7: Gelece\u011fin Altyap\u0131s\u0131 Parmaklar\u0131n\u0131z\u0131n Ucunda<\/h2>\n<p>Bu makalede, manuel AWS a\u011f kurulumunun zorluklar\u0131ndan ba\u015flayarak, altyap\u0131y\u0131 kod olarak y\u00f6netme (IaC) felsefesine ve Terraform&#8217;un bu alandaki g\u00fcc\u00fcne odakland\u0131k. Sadece yakla\u015f\u0131k 90 sat\u0131r Terraform koduyla, bir VPC, public ve private alt a\u011flar, Internet Gateway, NAT Gateway ve temel bir g\u00fcvenlik grubundan olu\u015fan eksiksiz bir AWS a\u011f\u0131n\u0131 nas\u0131l kurabilece\u011fimizi ad\u0131m ad\u0131m g\u00f6sterdik. Bu, Terraform&#8217;un ne kadar verimli ve etkili bir ara\u00e7 oldu\u011funun somut bir kan\u0131t\u0131d\u0131r.<\/p>\n<p>Terraform&#8217;un deklaratif yap\u0131s\u0131, mod\u00fclerli\u011fi ve farkl\u0131 bulut sa\u011flay\u0131c\u0131lar\u0131n\u0131 destekleme yetene\u011fi, onu modern bulut altyap\u0131s\u0131 y\u00f6netiminin vazge\u00e7ilmez bir par\u00e7as\u0131 haline getiriyor. Ger\u00e7ek d\u00fcnya senaryolar\u0131nda, startup&#8217;lardan b\u00fcy\u00fck kurumsal \u015firketlere kadar bir\u00e7ok kurulu\u015fun, altyap\u0131 da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini h\u0131zland\u0131rmak, tutarl\u0131l\u0131\u011f\u0131 sa\u011flamak, hata oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrmek ve maliyetleri optimize etmek i\u00e7in Terraform&#8217;u benimsedi\u011fini g\u00f6rd\u00fck. Geli\u015ftirme\/test ortamlar\u0131n\u0131n h\u0131zl\u0131ca aya\u011fa kald\u0131r\u0131lmas\u0131ndan felaket kurtarma senaryolar\u0131na, \u00e7oklu bulut stratejilerinden CI\/CD entegrasyonuna kadar bir\u00e7ok alanda Terraform&#8217;un fark yaratt\u0131\u011f\u0131n\u0131 g\u00f6zlemledik.<\/p>\n<p>\u0130leri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar b\u00f6l\u00fcm\u00fcnde ise, mod\u00fcllerin kullan\u0131m\u0131, state y\u00f6netiminin \u00f6nemi, CI\/CD entegrasyonu, g\u00fcvenlik pratikleri ve maliyet optimizasyonu gibi konulara de\u011finerek, Terraform yeteneklerinizi nas\u0131l daha da geli\u015ftirebilece\u011finize dair bir yol haritas\u0131 sunduk. Unutmay\u0131n, 90 sat\u0131rl\u0131k bir betik sadece bir ba\u015flang\u0131\u00e7t\u0131r. \u00d6nemli olan, bu temel prensipleri kavrayarak kendi karma\u015f\u0131k altyap\u0131 ihtiya\u00e7lar\u0131n\u0131za uygun, \u00f6l\u00e7eklenebilir ve s\u00fcrd\u00fcr\u00fclebilir \u00e7\u00f6z\u00fcmler geli\u015ftirebilmenizdir.<\/p>\n<p>Art\u0131k altyap\u0131n\u0131z\u0131 manuel t\u0131klamalarla de\u011fil, kodla y\u00f6netmenin g\u00fcc\u00fcn\u00fc ve esnekli\u011fini deneyimlemeye haz\u0131rs\u0131n\u0131z. Gelece\u011fin altyap\u0131s\u0131, parmaklar\u0131n\u0131z\u0131n ucunda, kod sat\u0131rlar\u0131n\u0131zda \u015fekilleniyor. Bu yolculukta ba\u015far\u0131lar dileriz!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n            <strong>Terraform \u00fccretli mi?<\/strong><\/p>\n<p>Hay\u0131r, Terraform&#8217;un temel s\u00fcr\u00fcm\u00fc a\u00e7\u0131k kaynakl\u0131 ve \u00fccretsizdir. HashiCorp, daha b\u00fcy\u00fck i\u015fletmeler ve geli\u015fmi\u015f \u00f6zellikler i\u00e7in \u00fccretli Terraform Enterprise ve Terraform Cloud hizmetleri sunar, ancak bu makalede kulland\u0131\u011f\u0131m\u0131z t\u00fcm \u00f6zellikler \u00fccretsiz s\u00fcr\u00fcmde mevcuttur.<\/p>\n<\/li>\n<li>\n            <strong>Terraform sadece AWS i\u00e7in mi kullan\u0131l\u0131yor?<\/strong><\/p>\n<p>Kesinlikle hay\u0131r. Terraform, \u00e7ok \u00e7e\u015fitli bulut sa\u011flay\u0131c\u0131lar\u0131 (Azure, Google Cloud Platform, Oracle Cloud Infrastructure vb.), SaaS (Software as a Service) platformlar\u0131 (GitHub, Datadog vb.) ve \u015firket i\u00e7i (on-premise) \u00e7\u00f6z\u00fcmler (VMware vSphere, OpenStack vb.) i\u00e7in sa\u011flay\u0131c\u0131lara (provider) sahiptir. Bu, onu \u00e7ok y\u00f6nl\u00fc bir IaC arac\u0131 yapar.<\/p>\n<\/li>\n<li>\n            <strong>Kodda hata yaparsam ne olur?<\/strong><\/p>\n<p>Terraform, <code>terraform plan<\/code> komutu sayesinde de\u011fi\u015fiklikleri uygulamadan \u00f6nce size bir \u00f6nizleme sunar. Bu sayede olas\u0131 hatalar\u0131 veya istenmeyen de\u011fi\u015fiklikleri \u00f6nceden tespit edebilirsiniz. E\u011fer bir hata olu\u015fursa, Terraform genellikle hatay\u0131 geri al\u0131r (rollback) veya mevcut durumu korur. Ayr\u0131ca, state dosyas\u0131 sayesinde \u00f6nceki bir duruma geri d\u00f6nmek (state management ile) veya manuel olarak d\u00fczeltmeler yapmak da m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<\/li>\n<li>\n            <strong>Bu kadar az sat\u0131r kod ger\u00e7ek bir proje i\u00e7in yeterli mi?<\/strong><\/p>\n<p>Bu makaledeki 90 sat\u0131rl\u0131k \u00f6rnek, temel bir AWS a\u011f\u0131n\u0131 kurmak i\u00e7in yeterlidir ve konsepti g\u00f6stermektedir. Ger\u00e7ek d\u00fcnya projelerinde, genellikle daha fazla kaynak (EC2 instance&#8217;lar\u0131, veritabanlar\u0131, y\u00fck dengeleyiciler vb.), daha karma\u015f\u0131k g\u00fcvenlik kurallar\u0131 ve mod\u00fcller arac\u0131l\u0131\u011f\u0131yla daha iyi organize edilmi\u015f kod yap\u0131lar\u0131 kullan\u0131l\u0131r. Ancak bu \u00f6rnek, Terraform&#8217;un ne kadar g\u00fc\u00e7l\u00fc ve verimli olabilece\u011fini g\u00f6steren harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<\/li>\n<\/ul>\n<p>#Terraform #AWS #IaC #DevOps #BulutBili\u015fim<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/terraform-aws-basic-network-setup\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/terraform-aws-basic-network-setup<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Manuel AWS a\u011f kurulumunun zorluklar\u0131ndan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Terraform ile sadece 90 sat\u0131r kod yazarak eksiksiz bir AWS a\u011f\u0131 nas\u0131l kurabilece\u011finizi ke\u015ffedin.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1406],"tags":[],"class_list":{"0":"post-43946","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Manuel AWS a\u011f kurulumunun zorluklar\u0131ndan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Terraform ile sadece 90 sat\u0131r kod yazarak eksiksiz bir AWS a\u011f\u0131 nas\u0131l kurabilece\u011finizi ke\u015ffedin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-08T18:04:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-08T18:05:15+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber\",\"datePublished\":\"2026-08-08T18:04:52+00:00\",\"dateModified\":\"2026-08-08T18:05:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/\"},\"wordCount\":5000,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AWS\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/\",\"name\":\"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-08-08T18:04:52+00:00\",\"dateModified\":\"2026-08-08T18:05:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber","og_description":"Manuel AWS a\u011f kurulumunun zorluklar\u0131ndan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Terraform ile sadece 90 sat\u0131r kod yazarak eksiksiz bir AWS a\u011f\u0131 nas\u0131l kurabilece\u011finizi ke\u015ffedin.","og_url":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-08-08T18:04:52+00:00","article_modified_time":"2026-08-08T18:05:15+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber","datePublished":"2026-08-08T18:04:52+00:00","dateModified":"2026-08-08T18:05:15+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/"},"wordCount":5000,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AWS"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/","name":"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-08-08T18:04:52+00:00","dateModified":"2026-08-08T18:05:15+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/90-satir-terraform-ile-tam-bir-aws-agi-kurmak-pratik-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"90 Sat\u0131r Terraform ile Tam Bir AWS A\u011f\u0131 Kurmak: Pratik Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43946","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=43946"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43946\/revisions"}],"predecessor-version":[{"id":43947,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43946\/revisions\/43947"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=43946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=43946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=43946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}