{"id":35727,"date":"2025-12-03T07:30:51","date_gmt":"2025-12-03T04:30:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/"},"modified":"2025-12-03T07:30:51","modified_gmt":"2025-12-03T04:30:51","slug":"terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/","title":{"rendered":"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun"},"content":{"rendered":"<p><body><\/p>\n<p>Bulut altyap\u0131n\u0131z\u0131n beklenmedik de\u011fi\u015fiklikler y\u00fcz\u00fcnden kesintiye u\u011frad\u0131\u011f\u0131n\u0131 veya kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silindi\u011fini hayal edin. Bu senaryolar, modern DevOps ekipleri i\u00e7in kabus gibidir. Neyse ki, Terraform&#8217;un sundu\u011fu g\u00fc\u00e7l\u00fc <strong>lifecycle y\u00f6netim kurallar\u0131<\/strong> sayesinde bu riskleri minimize edebilir ve altyap\u0131n\u0131z \u00fczerinde tam kontrol sa\u011flayabilirsiniz. Bu makale, Terraform&#8217;un ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini s\u0131f\u0131rdan \u00f6\u011frenecek, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle uygulayacak ve altyap\u0131 kodunuzu daha g\u00fcvenli, daha dayan\u0131kl\u0131 hale getirme yollar\u0131n\u0131 ke\u015ffedeceksiniz.<\/p>\n<p>Modern bulut altyap\u0131s\u0131 y\u00f6netimi, s\u00fcrekli de\u011fi\u015fen, dinamik bir ortamda \u00e7al\u0131\u015fmay\u0131 gerektirir. K\u00fc\u00e7\u00fck bir hata, maliyetli kesintilere veya veri kay\u0131plar\u0131na yol a\u00e7abilir. \u0130\u015fte tam da bu noktada <strong>Terraform lifecycle y\u00f6netim kurallar\u0131<\/strong> devreye girerek, altyap\u0131 kaynaklar\u0131n\u0131z\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fc \u00fczerinde size e\u015fsiz bir kontrol sunar. Bu kurallar, altyap\u0131n\u0131z\u0131n istenmeyen \u015fekillerde de\u011fi\u015ftirilmesini, silinmesini veya g\u00fcncellenmesini engellemek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Bu kontrol mekanizmalar\u0131 olmasayd\u0131, otomasyonun getirdi\u011fi h\u0131z, ayn\u0131 zamanda felaketlerin de h\u0131z\u0131 anlam\u0131na gelebilirdi.<\/p>\n<p>Peki, bu kurallar tam olarak ne i\u015fe yarar? Bir \u00f6rnekle a\u00e7\u0131klayal\u0131m: Bir \u00fcretim veritaban\u0131n\u0131z var ve yanl\u0131\u015fl\u0131kla bir <code>terraform apply<\/code> komutuyla silinmesini istemiyorsunuz. Veya, bir sunucunun belirli etiketlerinin manuel olarak de\u011fi\u015ftirilmesine ra\u011fmen Terraform&#8217;un bu de\u011fi\u015fiklikleri geri almas\u0131n\u0131 istemeyebilirsiniz. \u0130\u015fte bu t\u00fcr senaryolarda lifecycle kurallar\u0131, altyap\u0131n\u0131z\u0131n b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc ve kararl\u0131l\u0131\u011f\u0131n\u0131 korumak i\u00e7in hayati bir rol oynar. Bu sayede, DevOps ekipleri daha g\u00fcvenle da\u011f\u0131t\u0131m yapabilir, olas\u0131 insan hatalar\u0131n\u0131 veya otomasyon hatalar\u0131n\u0131 \u00f6nleyebilirler. Asl\u0131nda, bu kurallar bir nevi g\u00fcvenlik a\u011f\u0131 g\u00f6revi g\u00f6r\u00fcr, altyap\u0131 kodunuzun istenmeyen sonu\u00e7lar do\u011furmas\u0131n\u0131n \u00f6n\u00fcne ge\u00e7er.<\/p>\n<p>Kritik sistemlerin y\u00f6netildi\u011fi ortamlarda, her bir de\u011fi\u015fikli\u011fin \u00f6ng\u00f6r\u00fclebilir ve g\u00fcvenli olmas\u0131 esast\u0131r. Terraform&#8217;un state dosyas\u0131, altyap\u0131n\u0131z\u0131n mevcut durumunu yans\u0131t\u0131rken, lifecycle kurallar\u0131 ise bu durumun nas\u0131l ve ne zaman de\u011fi\u015febilece\u011fine dair k\u0131s\u0131tlamalar getirir. Bu sayede, &#8220;plan&#8221; ve &#8220;apply&#8221; ad\u0131mlar\u0131 s\u0131ras\u0131nda beklenmedik davran\u0131\u015flarla kar\u015f\u0131la\u015fma olas\u0131l\u0131\u011f\u0131n\u0131z \u00f6nemli \u00f6l\u00e7\u00fcde azal\u0131r. Unutulmamal\u0131d\u0131r ki, otomasyonun g\u00fcc\u00fc, do\u011fru kurallar ve k\u0131s\u0131tlamalarla birle\u015fti\u011finde ger\u00e7ek potansiyeline ula\u015f\u0131r. Lifecycle kurallar\u0131, bu entegrasyonu sa\u011flamak i\u00e7in m\u00fckemmel bir ara\u00e7t\u0131r. \u00d6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli ve karma\u015f\u0131k altyap\u0131larda, bu kurallar\u0131n do\u011fru bir \u015fekilde uygulanmas\u0131, operasyonel y\u00fck\u00fc azalt\u0131r ve hata oran\u0131n\u0131 d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<h3>\n<div class=\"expert-tip\">Uzman \u0130pucu: Altyap\u0131n\u0131z\u0131n En Kritik Bile\u015fenlerini Tan\u0131mlay\u0131n<\/div>\n<\/h3>\n<div class=\"expert-tip\">\n  Altyap\u0131n\u0131zdaki en kritik kaynaklar\u0131 (veritabanlar\u0131, depolama birimleri, a\u011f yap\u0131land\u0131rmalar\u0131 vb.) belirleyin ve bu kaynaklara \u00f6ncelikli olarak lifecycle kurallar\u0131 uygulay\u0131n. Bu, en b\u00fcy\u00fck riskleri en ba\u015ftan ele alman\u0131z\u0131 sa\u011flar.\n<\/div>\n<p>Bu b\u00f6l\u00fcm, lifecycle kurallar\u0131n\u0131n temel mant\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 oldu. \u015eimdi, en s\u0131k kullan\u0131lan ve en etkili lifecycle arg\u00fcmanlar\u0131n\u0131 detayl\u0131 olarak inceleyelim. Her bir arg\u00fcman\u0131n ne i\u015fe yarad\u0131\u011f\u0131n\u0131, ne zaman kullan\u0131lmas\u0131 gerekti\u011fini ve ger\u00e7ek d\u00fcnya \u00f6rnekleriyle nas\u0131l uyguland\u0131\u011f\u0131n\u0131 ke\u015ffedece\u011fiz. Bu sayede, kendi altyap\u0131 projelerinizde bu g\u00fc\u00e7l\u00fc \u00f6zelliklerden tam anlam\u0131yla faydalanabileceksiniz. K\u0131sacas\u0131, Terraform lifecycle kurallar\u0131, DevOps s\u00fcre\u00e7lerinizin daha sa\u011flam, daha g\u00fcvenli ve daha y\u00f6netilebilir hale gelmesinin anahtarlar\u0131ndan biridir.<\/p>\n<h2><code>prevent_destroy<\/code>: Yanl\u0131\u015fl\u0131kla Silmeleri Nas\u0131l Engellersiniz?<\/h2>\n<p>Altyap\u0131 y\u00f6netiminde en b\u00fcy\u00fck korkulardan biri, \u00fcretim ortam\u0131ndaki kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silinmesidir. Bir veritaban\u0131, bir depolama kovas\u0131 veya bir a\u011f ge\u00e7idi gibi temel bir bile\u015fenin ortadan kalkmas\u0131, dakikalar i\u00e7inde b\u00fcy\u00fck \u00e7apl\u0131 kesintilere ve veri kay\u0131plar\u0131na yol a\u00e7abilir. \u0130\u015fte bu felaket senaryolar\u0131n\u0131 \u00f6nlemek i\u00e7in Terraform&#8217;un <code>prevent_destroy<\/code> lifecycle arg\u00fcman\u0131 devreye girer. Bu arg\u00fcman, belirli bir kayna\u011f\u0131n Terraform taraf\u0131ndan imha edilmesini engeller, b\u00f6ylece kritik kaynaklar\u0131n\u0131z i\u00e7in ek bir g\u00fcvenlik katman\u0131 olu\u015fturur.<\/p>\n<p><code>prevent_destroy = true<\/code> olarak ayarland\u0131\u011f\u0131nda, Terraform plan\u0131 \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda ilgili kaynak i\u00e7in bir &#8220;imha&#8221; (destroy) eylemi alg\u0131larsa, i\u015flemi durdurur ve bir hata mesaj\u0131 d\u00f6nd\u00fcr\u00fcr. Bu, uygulaman\u0131n devam etmesini engeller ve kullan\u0131c\u0131n\u0131n bu potansiyel tehlikeli eylemi g\u00f6zden ge\u00e7irmesini sa\u011flar. Bu \u00f6zellik, \u00f6zellikle \u00fcretim ortamlar\u0131ndaki hassas kaynaklar i\u00e7in vazge\u00e7ilmezdir. Geli\u015ftirme veya test ortamlar\u0131nda genellikle daha az k\u0131s\u0131tlay\u0131c\u0131 olsan\u0131z da, canl\u0131 sistemler s\u00f6z konusu oldu\u011funda, bu t\u00fcr bir koruma hayati \u00f6nem ta\u015f\u0131r. Yanl\u0131\u015f bir refaktoring, bir mod\u00fcl de\u011fi\u015fikli\u011fi veya sadece dikkatsiz bir komut bile bu arg\u00fcman sayesinde kontrol alt\u0131na al\u0131nabilir.<\/p>\n<p><strong>Uygulama \u00d6rne\u011fi: AWS S3 Kovas\u0131n\u0131 Korumak<\/strong><\/p>\n<p>Bir e-ticaret sitesinin \u00fcr\u00fcn g\u00f6rsellerini bar\u0131nd\u0131rd\u0131\u011f\u0131 bir AWS S3 kovas\u0131 oldu\u011funu varsayal\u0131m. Bu kovan\u0131n silinmesi, site \u00fczerindeki t\u00fcm \u00fcr\u00fcn g\u00f6rsellerinin kaybolmas\u0131na neden olur. Bu t\u00fcr bir durumu \u00f6nlemek i\u00e7in <code>prevent_destroy<\/code> arg\u00fcman\u0131n\u0131 a\u015fa\u011f\u0131daki gibi kullanabiliriz:<\/p>\n<pre><code>\nresource \"aws_s3_bucket\" \"product_images\" {\n  bucket = \"my-ecom-product-images-prod\"\n  acl    = \"private\"\n\n  tags = {\n    Environment = \"Production\"\n    ManagedBy   = \"Terraform\"\n  }\n\n  lifecycle {\n    prevent_destroy = true\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod blo\u011fuyla, <code>aws_s3_bucket.product_images<\/code> kayna\u011f\u0131n\u0131 Terraform arac\u0131l\u0131\u011f\u0131yla silmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda (\u00f6rne\u011fin, <code>terraform destroy<\/code> komutu veya kayna\u011f\u0131n koddan \u00e7\u0131kar\u0131lmas\u0131 durumunda), Terraform i\u015flemi durduracak ve size bir uyar\u0131 verecektir. Bu, size durumu g\u00f6zden ge\u00e7irme ve olas\u0131 bir hatay\u0131 d\u00fczeltme f\u0131rsat\u0131 sunar. Bu sayede, kritik veri kayb\u0131n\u0131n \u00f6n\u00fcne ge\u00e7ilmi\u015f olur. Geli\u015ftirme s\u00fcrecinde bile, bu t\u00fcr kurallar\u0131n erken a\u015famada uygulanmas\u0131, sonraki a\u015famalarda olu\u015fabilecek sorunlar\u0131n \u00f6nlenmesine yard\u0131mc\u0131 olabilir. Ayr\u0131ca, g\u00fcvenlik denetimleri s\u0131ras\u0131nda bu t\u00fcr korumalar\u0131n varl\u0131\u011f\u0131, altyap\u0131n\u0131z\u0131n olgunlu\u011funu g\u00f6steren \u00f6nemli bir g\u00f6stergedir.<\/p>\n<p><strong>Vaka Analizi: E-ticaret Platformu ve \u00dcr\u00fcn G\u00f6rsel Korumas\u0131<\/strong><\/p>\n<p>B\u00fcy\u00fck bir e-ticaret platformu, g\u00fcnl\u00fck milyonlarca ziyaret\u00e7iye hizmet vermektedir. Platformun ana bile\u015fenlerinden biri, \u00fcr\u00fcn g\u00f6rsellerini bar\u0131nd\u0131ran AWS S3 kovas\u0131d\u0131r. Geli\u015ftirme ekibinden birinin, bir temizlik \u00e7al\u0131\u015fmas\u0131 s\u0131ras\u0131nda yanl\u0131\u015fl\u0131kla bu S3 kovas\u0131n\u0131 Terraform kodundan \u00e7\u0131kard\u0131\u011f\u0131n\u0131 ve <code>terraform apply<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmak \u00fczere oldu\u011funu d\u00fc\u015f\u00fcnelim. E\u011fer <code>prevent_destroy = true<\/code> kural\u0131 uygulanmam\u0131\u015f olsayd\u0131, bu komut \u00fcr\u00fcn g\u00f6rsellerinin bulundu\u011fu S3 kovas\u0131n\u0131 silecekti. Sonu\u00e7? Milyonlarca \u00fcr\u00fcne ait g\u00f6rselin kaybolmas\u0131, sitenin i\u015flevselli\u011finin durmas\u0131 ve b\u00fcy\u00fck bir gelir kayb\u0131. Ancak, bu kural sayesinde Terraform i\u015flemi durdurdu, ekibe hatay\u0131 bildirdi ve potansiyel bir felaketin \u00f6n\u00fcne ge\u00e7ildi. Bu \u00f6rnek, k\u00fc\u00e7\u00fck bir lifecycle kural\u0131n\u0131n bile ne kadar b\u00fcy\u00fck bir etki yaratabilece\u011fini a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Bu t\u00fcr bir koruma, sadece veri kayb\u0131n\u0131 \u00f6nlemekle kalmaz, ayn\u0131 zamanda operasyonel stresi azalt\u0131r ve ekiplerin daha g\u00fcvenle \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2><code>ignore_changes<\/code>: Terraform'\u0131n \u0130zlemesini \u0130stemedi\u011finiz De\u011fi\u015fiklikler Nelerdir?<\/h2>\n<p>Bazen altyap\u0131n\u0131zdaki baz\u0131 kaynaklar\u0131n belirli \u00f6zelliklerinin Terraform d\u0131\u015f\u0131nda y\u00f6netilmesini isteyebilirsiniz. \u00d6rne\u011fin, bir sanal makinenin etiketleri manuel olarak g\u00fcncellenebilir veya bir veritaban\u0131n\u0131n performans ayarlar\u0131 otomatik izleme sistemleri taraf\u0131ndan optimize edilebilir. Bu gibi durumlarda, Terraform'un bu manuel veya harici de\u011fi\u015fiklikleri alg\u0131lay\u0131p kendi state dosyas\u0131na kaydetmeye \u00e7al\u0131\u015fmas\u0131, istenmeyen durumlara yol a\u00e7abilir. \u0130\u015fte <code>ignore_changes<\/code> lifecycle arg\u00fcman\u0131 tam da bu noktada devreye girer. Bu arg\u00fcman, Terraform'a belirli bir kayna\u011f\u0131n hangi \u00f6zelliklerini g\u00f6z ard\u0131 etmesi gerekti\u011fini bildirerek, istenmeyen \"drift\" alg\u0131lamalar\u0131n\u0131 ve d\u00fczeltme giri\u015fimlerini engeller.<\/p>\n<p><code>ignore_changes<\/code>, bir kayna\u011f\u0131n belirli niteliklerini bir listesi olarak al\u0131r. Terraform, <code>plan<\/code> veya <code>apply<\/code> komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, bu listedeki niteliklerdeki de\u011fi\u015fiklikleri tamamen g\u00f6z ard\u0131 eder. Bu, kaynak \u00fczerinde yap\u0131lan manuel de\u011fi\u015fikliklerin Terraform taraf\u0131ndan \u00fczerine yaz\u0131lmas\u0131n\u0131 veya Terraform'un s\u00fcrekli olarak bu de\u011fi\u015fiklikleri geri almaya \u00e7al\u0131\u015fmas\u0131n\u0131 \u00f6nler. Bu durum, \u00f6zellikle \u00e7oklu y\u00f6netim ara\u00e7lar\u0131n\u0131n veya ekiplerin ayn\u0131 kaynak \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 hibrit y\u00f6netim senaryolar\u0131nda \u00e7ok de\u011ferlidir. \u00d6rne\u011fin, bir g\u00fcvenlik ekibi belirli bir sunucuya g\u00fcvenlik denetim etiketleri eklerken, bir otomasyon arac\u0131 sunucunun di\u011fer \u00f6zelliklerini y\u00f6netebilir. E\u011fer <code>ignore_changes<\/code> kullan\u0131lmazsa, Terraform s\u00fcrekli olarak g\u00fcvenlik etiketlerini silmeye veya eski haline d\u00f6nd\u00fcrmeye \u00e7al\u0131\u015facakt\u0131r, bu da bir \u00e7at\u0131\u015fma yarat\u0131r.<\/p>\n<p><strong>Uygulama \u00d6rne\u011fi: EC2 Etiketlerini G\u00f6z Ard\u0131 Etmek<\/strong><\/p>\n<p>Bir AWS EC2 \u00f6rne\u011finin <code>Name<\/code> etiketi Terraform taraf\u0131ndan y\u00f6netilirken, <code>CostCenter<\/code> ve <code>Owner<\/code> gibi etiketlerin manuel olarak veya ba\u015fka bir sistem taraf\u0131ndan g\u00fcncellendi\u011fini varsayal\u0131m. Bu etiketlerdeki de\u011fi\u015fiklikleri Terraform'un g\u00f6z ard\u0131 etmesini sa\u011flamak i\u00e7in <code>ignore_changes<\/code> kullanabiliriz:<\/p>\n<pre><code>\nresource \"aws_instance\" \"web_server\" {\n  ami           = \"ami-0abcdef1234567890\" # \u00d6rnek AMI ID\n  instance_type = \"t2.micro\"\n  \n  tags = {\n    Name        = \"WebServerProd\"\n    ManagedBy   = \"Terraform\"\n    CostCenter  = \"DevOps\" # Bu ba\u015flang\u0131\u00e7 de\u011feri, sonra manuel de\u011fi\u015febilir\n    Owner       = \"Operations\" # Bu da de\u011fi\u015febilir\n  }\n\n  lifecycle {\n    ignore_changes = [\n      tags[\"CostCenter\"],\n      tags[\"Owner\"],\n    ]\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, e\u011fer EC2 \u00f6rne\u011finin <code>CostCenter<\/code> veya <code>Owner<\/code> etiketleri AWS konsolu \u00fczerinden manuel olarak de\u011fi\u015ftirilirse, bir sonraki <code>terraform plan<\/code> veya <code>terraform apply<\/code> komutu bu de\u011fi\u015fiklikleri \"drift\" olarak alg\u0131lamayacak ve \u00fczerine yazmayacakt\u0131r. Yaln\u0131zca Terraform taraf\u0131ndan y\u00f6netilen di\u011fer etiketler veya \u00f6zellikler ele al\u0131nacakt\u0131r. Bu sayede, farkl\u0131 y\u00f6netim katmanlar\u0131 aras\u0131nda uyumlu bir \u00e7al\u0131\u015fma ortam\u0131 sa\u011flanm\u0131\u015f olur. Ayr\u0131ca, bu \u00f6zellik, kaynaklar\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn belirli y\u00f6nlerini farkl\u0131 ara\u00e7lara veya s\u00fcre\u00e7lere devretmek istedi\u011finizde esneklik sa\u011flar. Bu, \u00f6zellikle karma\u015f\u0131k ve \u00e7ok katmanl\u0131 operasyonel modellerde vazge\u00e7ilmezdir.<\/p>\n<p><strong>Vaka Analizi: G\u00fcvenlik Ekibinin Dinamik Etiketleme Politikas\u0131<\/strong><\/p>\n<p>Finans sekt\u00f6r\u00fcnde faaliyet g\u00f6steren bir \u015firket, s\u0131k\u0131 g\u00fcvenlik ve denetim gereksinimlerine sahiptir. G\u00fcvenlik ekibi, yeni ke\u015ffedilen zafiyetlere veya i\u00e7 denetim bulgular\u0131na g\u00f6re sunuculara dinamik olarak etiketler (\u00f6rne\u011fin, <code>SecurityRiskLevel: High<\/code>, <code>PatchRequired: true<\/code>) eklemektedir. Bu etiketler, otomatik tarama ara\u00e7lar\u0131 taraf\u0131ndan okunur ve h\u0131zl\u0131 yan\u0131t s\u00fcre\u00e7lerini tetikler. Ancak, Terraform, bu sunucular\u0131n ana altyap\u0131 bile\u015fenlerini y\u00f6netmektedir. E\u011fer <code>ignore_changes<\/code> kullan\u0131lmasayd\u0131, g\u00fcvenlik ekibinin ekledi\u011fi etiketler her <code>terraform apply<\/code> \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda silinecek ve g\u00fcvenlik protokolleri bozulacakt\u0131. \u015eirket, EC2, RDS ve di\u011fer kaynaklar i\u00e7in <code>tags<\/code> niteli\u011finin bir k\u0131sm\u0131n\u0131 <code>ignore_changes<\/code> listesine ekleyerek bu sorunu \u00e7\u00f6zd\u00fc. B\u00f6ylece Terraform, temel altyap\u0131 \u00f6zelliklerini tutarl\u0131 bir \u015fekilde y\u00f6netirken, g\u00fcvenlik ekibi de kendi \u00f6zel etiketlerini ba\u011f\u0131ms\u0131z olarak uygulayabildi. Bu durum, farkl\u0131 disiplinlerin ayn\u0131 altyap\u0131 \u00fczerinde \u00e7at\u0131\u015fmadan \u00e7al\u0131\u015fabilmesini sa\u011flayan m\u00fckemmel bir \u00f6rnektir.<\/p>\n<h2><code>create_before_destroy<\/code>: Kesintisiz G\u00fcncellemeler Nas\u0131l Sa\u011flan\u0131r?<\/h2>\n<p>Altyap\u0131 g\u00fcncellemeleri, \u00f6zellikle y\u00fcksek kullan\u0131labilirlik gerektiren sistemlerde hassas bir s\u00fcre\u00e7tir. Geleneksel olarak, bir kayna\u011f\u0131 g\u00fcncellemek genellikle mevcut kayna\u011f\u0131 durdurmay\u0131 veya silmeyi, ard\u0131ndan yeni s\u00fcr\u00fcm\u00fc da\u011f\u0131tmay\u0131 i\u00e7erir. Bu s\u00fcre\u00e7, \u00f6zellikle tek bir kaynak s\u00f6z konusu oldu\u011funda, k\u0131sa s\u00fcreli de olsa bir kesintiye yol a\u00e7abilir. Ancak, bir\u00e7ok uygulama i\u00e7in bu t\u00fcr bir kesinti kabul edilemezdir. \u0130\u015fte burada <code>create_before_destroy<\/code> lifecycle arg\u00fcman\u0131 devreye girer. Bu arg\u00fcman, Terraform'a bir kayna\u011f\u0131 g\u00fcncelleme s\u0131ras\u0131nda, eski kayna\u011f\u0131 silmeden \u00f6nce yeni kayna\u011f\u0131 olu\u015fturmas\u0131 talimat\u0131n\u0131 verir.<\/p>\n<p><code>create_before_destroy = true<\/code> olarak ayarland\u0131\u011f\u0131nda, Terraform bir kayna\u011f\u0131n \u00fczerinde \"in-place\" g\u00fcncellenemeyen bir de\u011fi\u015fiklik alg\u0131lad\u0131\u011f\u0131nda (\u00f6rne\u011fin, bir EC2 \u00f6rne\u011finin <code>instance_type<\/code>'\u0131 de\u011fi\u015ftirildi\u011finde), \u00f6nce yeni konfig\u00fcrasyona sahip yeni bir kaynak olu\u015fturur. Yeni kaynak ba\u015far\u0131yla olu\u015fturulup haz\u0131r hale geldikten sonra, Terraform eski kayna\u011f\u0131 siler. Bu yakla\u015f\u0131m, ge\u00e7i\u015f s\u0131ras\u0131nda en az bir \u00e7al\u0131\u015f\u0131r durumda kayna\u011f\u0131n her zaman mevcut olmas\u0131n\u0131 sa\u011flayarak, hizmet kesintisi riskini en aza indirir veya tamamen ortadan kald\u0131r\u0131r. Bu \u00f6zellikle y\u00fck dengeleyiciler arkas\u0131ndaki sunucu gruplar\u0131, veritabanlar\u0131 veya di\u011fer kritik servisler i\u00e7in hayati \u00f6neme sahiptir. Y\u00fcksek trafikli web siteleri, API servisleri ve mikroservis mimarileri gibi s\u00fcrekli eri\u015filebilir olmas\u0131 gereken uygulamalar i\u00e7in bu \u00f6zellik vazge\u00e7ilmezdir.<\/p>\n<p><strong>Uygulama \u00d6rne\u011fi: AWS EC2 Instance Tipi G\u00fcncelleme<\/strong><\/p>\n<p>Bir web sunucunuz var ve performans iyile\u015ftirmesi i\u00e7in instance tipini <code>t2.micro<\/code>'dan <code>t2.medium<\/code>'a y\u00fckseltmeniz gerekiyor. Bu, genellikle mevcut instance'\u0131n sonland\u0131r\u0131l\u0131p yenisinin olu\u015fturulmas\u0131n\u0131 gerektiren bir de\u011fi\u015fikliktir. Kesintisiz bir g\u00fcncelleme sa\u011flamak i\u00e7in <code>create_before_destroy<\/code> kullanabiliriz:<\/p>\n<pre><code>\nresource \"aws_instance\" \"web_server_prod\" {\n  ami           = \"ami-0abcdef1234567890\" # \u00d6rnek AMI ID\n  instance_type = \"t2.medium\" # Eskiden t2.micro idi, \u015fimdi t2.medium\n\n  tags = {\n    Name        = \"ProductionWebServer\"\n    Environment = \"Production\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod blo\u011funu uygulad\u0131\u011f\u0131n\u0131zda, Terraform \u00f6nce yeni bir <code>t2.medium<\/code> EC2 instance olu\u015fturacak, bu instance tamamen haz\u0131r oldu\u011funda (sa\u011flay\u0131c\u0131n\u0131n kaynak olu\u015fturma mant\u0131\u011f\u0131na ba\u011fl\u0131 olarak), eski <code>t2.micro<\/code> instance'\u0131 sonland\u0131racakt\u0131r. Bu s\u00fcre\u00e7, uygulaman\u0131z\u0131n kesintisiz hizmet vermeye devam etmesini sa\u011flar. Y\u00fck dengeleyicilerle birlikte kullan\u0131ld\u0131\u011f\u0131nda, trafik yeni instance'a y\u00f6nlendirilirken eski instance g\u00fcvenle kald\u0131r\u0131labilir. Bu, bir t\u00fcr \"mavi\/ye\u015fil da\u011f\u0131t\u0131m\" stratejisinin basitle\u015ftirilmi\u015f bir formudur ve hizmet kalitesini art\u0131r\u0131r. Bu \u00f6zellik, altyap\u0131 g\u00fcncellemelerinin daha az riskli ve daha \u00f6ng\u00f6r\u00fclebilir olmas\u0131n\u0131 sa\u011flar, bu da DevOps ekipleri i\u00e7in b\u00fcy\u00fck bir kolayl\u0131kt\u0131r.<\/p>\n<p><strong>Vaka Analizi: Mikroservis G\u00fcncelleme ve S\u0131f\u0131r Kesinti<\/strong><\/p>\n<p>B\u00fcy\u00fck bir SaaS \u015firketi, y\u00fczlerce mikroservis kullanarak bulut tabanl\u0131 bir platform sunmaktad\u0131r. S\u00fcrekli geli\u015ftirme ve da\u011f\u0131t\u0131m d\u00f6ng\u00fcs\u00fcnde, her hafta birden fazla mikroservis g\u00fcncellenmektedir. Bu g\u00fcncellemelerin her biri, ilgili servis kaynaklar\u0131n\u0131n (\u00f6rne\u011fin, AWS ECS Fargate servisleri, EC2 auto-scaling gruplar\u0131) yeni versiyonlar\u0131yla de\u011fi\u015ftirilmesini gerektirir. \u015eirket, t\u00fcm mikroservis da\u011f\u0131t\u0131mlar\u0131nda <code>create_before_destroy<\/code> kural\u0131n\u0131 aktif olarak kullanmaktad\u0131r. \u00d6rne\u011fin, bir API gateway hizmetinin temel ald\u0131\u011f\u0131 EC2 instance'lar\u0131n\u0131n AMI'si veya instance tipi g\u00fcncellenmesi gerekti\u011finde, Terraform \u00f6nce yeni konfig\u00fcrasyona sahip instance'lar\u0131 olu\u015fturur. Bu yeni instance'lar, y\u00fck dengeleyicinin arkas\u0131nda sa\u011fl\u0131kl\u0131 bir \u015fekilde \u00e7al\u0131\u015fmaya ba\u015flad\u0131\u011f\u0131nda, eski instance'lar otomatik olarak sonland\u0131r\u0131l\u0131r. Bu sayede, hi\u00e7bir zaman serviste bir kesinti ya\u015fanmaz, kullan\u0131c\u0131lar g\u00fcncelleme s\u00fcre\u00e7lerinden etkilenmez ve \u015firket, s\u0131f\u0131r kesinti hedefini ba\u015far\u0131yla s\u00fcrd\u00fcr\u00fcr. Bu vaka, <code>create_before_destroy<\/code>'un modern, y\u00fcksek \u00f6l\u00e7ekli ve s\u00fcrekli da\u011f\u0131t\u0131m yap\u0131lan ortamlardaki kritik rol\u00fcn\u00fc m\u00fckemmel bir \u015fekilde \u00f6zetlemektedir.<\/p>\n<h2>Geli\u015fmi\u015f Terraform Lifecycle Senaryolar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>Terraform lifecycle kurallar\u0131, sadece tek ba\u015f\u0131na kullan\u0131ld\u0131\u011f\u0131nda de\u011fil, ayn\u0131 zamanda bir araya getirildi\u011finde ve dikkatli bir \u015fekilde uyguland\u0131\u011f\u0131nda ger\u00e7ek potansiyelini ortaya koyar. Geli\u015fmi\u015f senaryolar, karma\u015f\u0131k altyap\u0131 gereksinimlerini kar\u015f\u0131lamak ve daha esnek, dayan\u0131kl\u0131 sistemler kurmak i\u00e7in bu kurallar\u0131n nas\u0131l birle\u015ftirilebilece\u011fini g\u00f6sterir. Bu b\u00f6l\u00fcmde, lifecycle kurallar\u0131n\u0131 daha etkin kullanmak i\u00e7in baz\u0131 ileri d\u00fczey teknikleri ve en iyi uygulamalar\u0131 ele alaca\u011f\u0131z.<\/p>\n<p><strong>Lifecycle Kurallar\u0131n\u0131 Birle\u015ftirmek: G\u00fcvenlik ve S\u00fcreklilik<\/strong><\/p>\n<p>Bir kaynak i\u00e7in birden fazla lifecycle kural\u0131n\u0131 birle\u015ftirmek olduk\u00e7a yayg\u0131n bir senaryodur. \u00d6rne\u011fin, kritik bir veritaban\u0131n\u0131n hem yanl\u0131\u015fl\u0131kla silinmesini \u00f6nlemek hem de g\u00fcncellemeleri kesintisiz yapmak isteyebilirsiniz. Bu durumda, <code>prevent_destroy<\/code> ve <code>create_before_destroy<\/code> arg\u00fcmanlar\u0131n\u0131 ayn\u0131 kaynak blo\u011fu i\u00e7inde kullanabilirsiniz:<\/p>\n<pre><code>\nresource \"aws_rds_instance\" \"production_db\" {\n  allocated_storage    = 20\n  engine               = \"mysql\"\n  engine_version       = \"8.0\"\n  instance_class       = \"db.t3.medium\"\n  name                 = \"mydb\"\n  username             = \"admin\"\n  password             = \"MyStrongPassword123\" # Ger\u00e7ek projelerde Vault gibi bir ara\u00e7 kullan\u0131n!\n  skip_final_snapshot  = true\n  publicly_accessible  = false\n\n  lifecycle {\n    prevent_destroy       = true\n    create_before_destroy = true\n    ignore_changes = [\n      password, # \u015eifrelerin Terraform d\u0131\u015f\u0131nda y\u00f6netildi\u011fi senaryolar i\u00e7in\n    ]\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>production_db<\/code> hem silinmeye kar\u015f\u0131 korunur hem de instance_class gibi in-place g\u00fcncellenemeyen \u00f6zellikler de\u011fi\u015ftirildi\u011finde kesintisiz bir g\u00fcncelleme sa\u011flan\u0131r. Ayr\u0131ca, \u015fifre de\u011fi\u015fikli\u011fi gibi harici y\u00f6netim s\u00fcre\u00e7lerine b\u0131rak\u0131lan nitelikler de Terraform taraf\u0131ndan g\u00f6z ard\u0131 edilir. Bu kombinasyon, hem g\u00fcvenli\u011fi hem de operasyonel s\u00fcreklili\u011fi ayn\u0131 anda sa\u011flaman\u0131n g\u00fc\u00e7l\u00fc bir yoludur. Ancak, bu t\u00fcr bir kombinasyonun her zaman dikkatli bir \u015fekilde test edilmesi gerekti\u011fini unutmamak \u00f6nemlidir, \u00e7\u00fcnk\u00fc farkl\u0131 kurallar aras\u0131ndaki etkile\u015fimler bazen beklenmedik sonu\u00e7lar do\u011furabilir. \u00d6zellikle <code>ignore_changes<\/code> ile birlikte kullan\u0131ld\u0131\u011f\u0131nda, Terraform'un neyi izleyip neyi izlemedi\u011fini net bir \u015fekilde anlamak kritik \u00f6neme sahiptir. Karma\u015f\u0131k altyap\u0131larda, bu t\u00fcr ince ayarlar, sistemin genel istikrar\u0131n\u0131 ve y\u00f6netim kolayl\u0131\u011f\u0131n\u0131 do\u011frudan etkiler.<\/p>\n<p><strong>Ko\u015fullu Lifecycle Bloklar\u0131 ve Dinamik Y\u00f6netim<\/strong><\/p>\n<p><code>count<\/code> veya <code>for_each<\/code> gibi meta-arg\u00fcmanlarla birlikte lifecycle bloklar\u0131n\u0131 kullanarak kaynaklar\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc dinamik olarak kontrol edebilirsiniz. \u00d6rne\u011fin, sadece \u00fcretim ortam\u0131ndaki kaynaklar\u0131 silinmeye kar\u015f\u0131 korumak isteyebilirsiniz:<\/p>\n<pre><code>\nvariable \"environment\" {\n  description = \"Da\u011f\u0131t\u0131m ortam\u0131 (dev, staging, prod)\"\n  type        = string\n  default     = \"dev\"\n}\n\nresource \"aws_s3_bucket\" \"my_bucket\" {\n  bucket = \"${var.environment}-my-unique-bucket-name\"\n  acl    = \"private\"\n\n  lifecycle {\n    prevent_destroy = var.environment == \"prod\" ? true : false\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>my_bucket<\/code> kayna\u011f\u0131 yaln\u0131zca <code>environment<\/code> de\u011fi\u015fkeni \"prod\" oldu\u011funda <code>prevent_destroy<\/code> korumas\u0131na sahip olacakt\u0131r. Bu yakla\u015f\u0131m, farkl\u0131 ortamlar i\u00e7in farkl\u0131 g\u00fcvenlik politikalar\u0131 uygulamak istedi\u011finizde olduk\u00e7a esneklik sa\u011flar. Geli\u015ftirme veya test ortamlar\u0131nda kaynaklar\u0131 serbest\u00e7e silerken, \u00fcretim ortam\u0131nda kat\u0131 kurallar uygulayabilirsiniz. Bu t\u00fcr dinamik yap\u0131land\u0131rmalar, kod taban\u0131n\u0131z\u0131 daha mod\u00fcler ve yeniden kullan\u0131labilir hale getirir.<\/p>\n<p><strong><code>replace_triggered_by<\/code> Kullan\u0131m\u0131<\/strong><\/p>\n<p>Terraform 1.2 ve sonras\u0131 s\u00fcr\u00fcmlerde tan\u0131t\u0131lan <code>replace_triggered_by<\/code> arg\u00fcman\u0131, dolayl\u0131 ba\u011f\u0131ml\u0131l\u0131klar nedeniyle bir kayna\u011f\u0131n yenilenmesini (create-before-destroy veya destroy-then-create) a\u00e7\u0131k\u00e7a tetiklemek i\u00e7in kullan\u0131l\u0131r. Bu, \u00f6zellikle bir kaynak \u00fczerinde yap\u0131lan bir de\u011fi\u015fikli\u011fin, onunla do\u011frudan ba\u011f\u0131ml\u0131 olmayan ancak yap\u0131land\u0131rmas\u0131n\u0131 etkileyen ba\u015fka bir kayna\u011f\u0131n yeniden olu\u015fturulmas\u0131n\u0131 gerektirdi\u011fi senaryolarda faydal\u0131d\u0131r.<\/p>\n<pre><code>\nresource \"aws_ami_from_instance\" \"example\" {\n  source_instance_id = aws_instance.example.id\n}\n\nresource \"aws_launch_configuration\" \"example\" {\n  image_id        = aws_ami_from_instance.example.id\n  instance_type   = \"t2.micro\"\n  \n  lifecycle {\n    create_before_destroy = true\n    replace_triggered_by = [\n      aws_ami_from_instance.example.id\n    ]\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Burada, yeni bir AMI olu\u015fturuldu\u011funda, <code>aws_launch_configuration.example<\/code>'\u0131n da yenilenmesi gerekti\u011fini belirtiyoruz, b\u00f6ylece oto-scaling grubu yeni AMI ile yeni instance'lar ba\u015flatabilir. Bu, g\u00fcncellemeler s\u0131ras\u0131nda do\u011fru s\u0131ralaman\u0131n ve tutarl\u0131l\u0131\u011f\u0131n sa\u011flanmas\u0131 i\u00e7in \u00f6nemlidir.<\/p>\n<h3>Mobil Uyumlu Altyap\u0131 Y\u00f6netimi: Responsive Terraform \u00c7\u0131kt\u0131lar\u0131 Nas\u0131l G\u00f6r\u00fcn\u00fcr?<\/h3>\n<p>Terraform do\u011frudan mobil uyumlu \u00e7\u0131kt\u0131lar \u00fcretmese de, Terraform'un y\u00f6netti\u011fi altyap\u0131 bilgilerini g\u00f6steren dashboard'lar veya raporlar mobil uyumlu olabilir. Bu, HTML \u00e7\u0131kt\u0131lar\u0131n veya web aray\u00fczlerinin responsive tasar\u0131m prensipleriyle olu\u015fturulmas\u0131 anlam\u0131na gelir. \u00d6rne\u011fin, Terraform plan \u00e7\u0131kt\u0131lar\u0131n\u0131n, state bilgilerinin veya altyap\u0131 envanterlerinin g\u00f6r\u00fcnt\u00fclendi\u011fi bir web paneli i\u00e7in CSS medya sorgular\u0131 kullan\u0131labilir:<\/p>\n<pre><code class=\"language-html\">\n<style>\n  \/* Genel stiller *\/\n  body { font-family: Arial, sans-serif; margin: 20px; }\n  .container { max-width: 1200px; margin: auto; padding: 0 15px; }\n  pre {\n    background-color: #f4f4f4;\n    padding: 15px;\n    border-radius: 8px;\n    overflow-x: auto; \/* Yatay kayd\u0131rma i\u00e7in *\/\n  }\n  table {\n    width: 100%;\n    border-collapse: collapse;\n    margin-top: 20px;\n  }\n  th, td {\n    border: 1px solid #ddd;\n    padding: 8px;\n    text-align: left;\n  }\n  th {\n    background-color: #f2f2f2;\n  }\n\n  \/* Mobil uyumluluk i\u00e7in medya sorgular\u0131 *\/\n  @media (max-width: 768px) {\n    .container {\n      padding: 0 10px;\n    }\n    pre {\n      font-size: 0.9em;\n      white-space: pre-wrap; \/* Uzun kod sat\u0131rlar\u0131n\u0131 sar *\/\n      word-wrap: break-word;\n    }\n    table, thead, tbody, th, td, tr {\n      display: block; \/* Tablo h\u00fccrelerini blok olarak g\u00f6ster *\/\n    }\n    thead tr {\n      position: absolute;\n      top: -9999px;\n      left: -9999px; \/* Ba\u015fl\u0131klar\u0131 gizle *\/\n    }\n    tr { border: 1px solid #ccc; margin-bottom: 10px; }\n    td {\n      border: none;\n      border-bottom: 1px solid #eee;\n      position: relative;\n      padding-left: 50%;\n      text-align: right;\n    }\n    td:before {\n      position: absolute;\n      left: 6px;\n      content: attr(data-label); \/* data-label niteli\u011fini ba\u015fl\u0131k olarak kullan *\/\n      font-weight: bold;\n    }\n  }\n<\/style>\n\n<div class=\"container\">\n  <h3>\u00d6rnek Terraform Kaynak Tablosu<\/h3>\n  <table>\n    <thead>\n      <tr>\n        <th>Kaynak Ad\u0131<\/th>\n        <th>Tipi<\/th>\n        <th>Durum<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr>\n        <td data-label=\"Kaynak Ad\u0131\">aws_s3_bucket.product_images<\/td>\n        <td data-label=\"Tipi\">S3 Bucket<\/td>\n        <td data-label=\"Durum\">Aktif<\/td>\n      <\/tr>\n      <tr>\n        <td data-label=\"Kaynak Ad\u0131\">aws_instance.web_server<\/td>\n        <td data-label=\"Tipi\">EC2 Instance<\/td>\n        <td data-label=\"Durum\">\u00c7al\u0131\u015f\u0131yor<\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS \u00f6rne\u011fi, tablolar\u0131n ve kod bloklar\u0131n\u0131n mobil cihazlarda daha iyi g\u00f6r\u00fcnmesini sa\u011flayan temel bir responsive tasar\u0131m yakla\u015f\u0131m\u0131n\u0131 g\u00f6stermektedir. Terraform \u00e7\u0131kt\u0131lar\u0131n\u0131n kendisi metin tabanl\u0131 olsa da, bu \u00e7\u0131kt\u0131lar\u0131 g\u00f6rselle\u015ftiren ara\u00e7lar\u0131n veya web aray\u00fczlerinin responsive olmas\u0131, altyap\u0131 y\u00f6neticilerinin mobil cihazlardan da kolayca bilgi almas\u0131n\u0131 ve aksiyon almas\u0131n\u0131 sa\u011flar. Bu, modern DevOps ara\u00e7lar\u0131n\u0131n ve s\u00fcre\u00e7lerinin \u00f6nemli bir uzant\u0131s\u0131d\u0131r.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Terraform'un lifecycle y\u00f6netim kurallar\u0131, altyap\u0131 y\u00f6netiminde sadece bir \u00f6zellik olman\u0131n \u00f6tesinde, bir felsefedir. Bu kurallar, altyap\u0131 kodunuzun istenmeyen sonu\u00e7lar do\u011furmas\u0131n\u0131 engelleyen g\u00fc\u00e7l\u00fc bir g\u00fcvenlik a\u011f\u0131 g\u00f6revi g\u00f6r\u00fcrken, ayn\u0131 zamanda operasyonel s\u00fcre\u00e7lerinizi daha \u00f6ng\u00f6r\u00fclebilir, daha g\u00fcvenli ve daha verimli hale getirir. <code>prevent_destroy<\/code> ile kritik kaynaklar\u0131n\u0131z\u0131 kazara silinmelerden koruyabilir, <code>ignore_changes<\/code> ile Terraform d\u0131\u015f\u0131ndaki de\u011fi\u015fiklikleri esnek bir \u015fekilde y\u00f6netebilir ve <code>create_before_destroy<\/code> ile hizmet kesintisi olmadan g\u00fcncellemeler yapabilirsiniz. Bu yetenekler, modern DevOps ekiplerinin s\u00fcrekli de\u011fi\u015fen ve b\u00fcy\u00fcyen bulut altyap\u0131lar\u0131n\u0131 g\u00fcvenle y\u00f6netmelerine olanak tan\u0131r.<\/p>\n<p>Bu makale boyunca ele ald\u0131\u011f\u0131m\u0131z kavramlar ve \u00f6rnekler, Terraform lifecycle kurallar\u0131n\u0131n temelden ileri d\u00fczeye kadar nas\u0131l kullan\u0131labilece\u011fini a\u00e7\u0131k\u00e7a ortaya koymaktad\u0131r. Her bir arg\u00fcman\u0131n arkas\u0131ndaki mant\u0131\u011f\u0131 anlamak ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l uyguland\u0131\u011f\u0131n\u0131 g\u00f6rmek, kendi altyap\u0131 projelerinizde bu g\u00fc\u00e7l\u00fc ara\u00e7tan tam anlam\u0131yla yararlanman\u0131z\u0131 sa\u011flayacakt\u0131r. Unutmay\u0131n, iyi y\u00f6netilmi\u015f bir altyap\u0131, sadece do\u011fru ara\u00e7lar\u0131 kullanmakla kalmaz, ayn\u0131 zamanda bu ara\u00e7lar\u0131n sundu\u011fu t\u00fcm g\u00fcvenlik ve esneklik \u00f6zelliklerinden faydalanmay\u0131 da gerektirir. Terraform lifecycle kurallar\u0131, bu hedefe ula\u015fman\u0131z i\u00e7in size sa\u011flam bir temel sunar.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<h3>1. Terraform lifecycle bloklar\u0131 t\u00fcm kaynak tipleri i\u00e7in kullan\u0131labilir mi?<\/h3>\n<p>Evet, <code>lifecycle<\/code> blo\u011fu Terraform'da tan\u0131mlanan hemen hemen t\u00fcm kaynak tipleri i\u00e7in kullan\u0131labilir. Ancak, baz\u0131 arg\u00fcmanlar\u0131n (\u00f6rne\u011fin <code>create_before_destroy<\/code>) belirli kaynak t\u00fcrlerinde veya bulut sa\u011flay\u0131c\u0131lar\u0131n\u0131n API davran\u0131\u015flar\u0131nda farkl\u0131 etkileri olabilir. Her zaman ilgili sa\u011flay\u0131c\u0131n\u0131n dok\u00fcmantasyonunu kontrol etmek en iyisidir.<\/p>\n<h3>2. <code>prevent_destroy<\/code> ayarl\u0131 bir kayna\u011f\u0131 nas\u0131l silebilirim?<\/h3>\n<p>E\u011fer bir kayna\u011f\u0131 <code>prevent_destroy = true<\/code> olarak i\u015faretlediyseniz, onu silmek i\u00e7in \u00f6ncelikle bu kural\u0131 <code>prevent_destroy = false<\/code> olarak de\u011fi\u015ftirmeniz, <code>terraform apply<\/code> ile bu de\u011fi\u015fikli\u011fi uygulaman\u0131z ve ard\u0131ndan kayna\u011f\u0131 Terraform kodunuzdan kald\u0131r\u0131p tekrar <code>terraform apply<\/code> \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir. Bu kas\u0131tl\u0131 bir dizi ad\u0131m, yanl\u0131\u015fl\u0131kla silmeleri \u00f6nlemek i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<h3>3. <code>ignore_changes<\/code> ile belirli bir etiketi (tag) nas\u0131l g\u00f6z ard\u0131 edebilirim?<\/h3>\n<p><code>ignore_changes<\/code> arg\u00fcman\u0131 i\u00e7inde, g\u00f6z ard\u0131 etmek istedi\u011finiz etiketin tam yolunu belirtmeniz gerekir. \u00d6rne\u011fin, bir EC2 \u00f6rne\u011findeki <code>Env<\/code> etiketini g\u00f6z ard\u0131 etmek i\u00e7in <code>ignore_changes = [\"tags.Env\"]<\/code> kullan\u0131rs\u0131n\u0131z. E\u011fer t\u00fcm etiketleri g\u00f6z ard\u0131 etmek isterseniz <code>ignore_changes = [\"tags\"]<\/code> kullanabilirsiniz.<\/p>\n<h3>4. <code>create_before_destroy<\/code> hangi durumlarda \u00f6nerilir?<\/h3>\n<p><code>create_before_destroy<\/code>, \u00f6zellikle y\u00fcksek kullan\u0131labilirlik gerektiren servislerde ve bir kayna\u011f\u0131n g\u00fcncellemeler s\u0131ras\u0131nda kesintiye u\u011framadan yenilenmesi gereken durumlarda (\u00f6rne\u011fin, bir veritaban\u0131 instance s\u0131n\u0131f\u0131 de\u011fi\u015fikli\u011fi, EC2 instance tipi veya AMI g\u00fcncellemesi) \u00f6nerilir. Y\u00fck dengeleyiciler arkas\u0131ndaki servisler i\u00e7in idealdir.<\/p>\n<h3>5. Terraform lifecycle kurallar\u0131 ve Terraform state y\u00f6netimi aras\u0131ndaki ili\u015fki nedir?<\/h3>\n<p>Terraform state, altyap\u0131n\u0131z\u0131n mevcut durumunu izlerken, lifecycle kurallar\u0131 bu durumun nas\u0131l ve ne zaman de\u011fi\u015febilece\u011fine dair k\u0131s\u0131tlamalar getirir. Lifecycle kurallar\u0131, Terraform'un state dosyas\u0131ndaki de\u011fi\u015fiklikleri nas\u0131l yorumlayaca\u011f\u0131n\u0131 ve bunlara nas\u0131l tepki verece\u011fini belirler. Bu ikisi birlikte, altyap\u0131n\u0131z\u0131n tutarl\u0131 ve g\u00fcvenli bir \u015fekilde y\u00f6netilmesini sa\u011flar.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Bulut altyap\u0131n\u0131z\u0131n beklenmedik de\u011fi\u015fiklikler y\u00fcz\u00fcnden kesintiye u\u011frad\u0131\u011f\u0131n\u0131 veya kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silindi\u011fini hayal edin. Bu senaryolar, modern&hellip;","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":[1],"tags":[],"class_list":{"0":"post-35727","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun<\/title>\n<meta name=\"description\" content=\"Bulut altyap\u0131n\u0131z\u0131n beklenmedik de\u011fi\u015fiklikler y\u00fcz\u00fcnden kesintiye u\u011frad\u0131\u011f\u0131n\u0131 veya kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silindi\u011fini hayal edin. Bu senaryolar, modern DevOps ekipleri i\u00e7in kabus gibidir. Neyse ki, Terraform&#039;un sundu\u011fu g\u00fc\u00e7l\u00fc lifecycle y\u00f6netim kurallar\u0131 sayesinde bu riskleri minimize edebilir ve altyap\u0131n\u0131z \u00fczerinde tam kontrol sa\u011flayabilirsiniz. Bu makale, Terraform&#039;un ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini s\u0131f\u0131rdan \u00f6\u011frenecek, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle uygulayacak ve altyap\u0131 kodunuzu daha g\u00fcvenli, daha dayan\u0131kl\u0131 hale getirme yollar\u0131n\u0131 ke\u015ffedeceksiniz.\" \/>\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\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun\" \/>\n<meta property=\"og:description\" content=\"Bulut altyap\u0131n\u0131z\u0131n beklenmedik de\u011fi\u015fiklikler y\u00fcz\u00fcnden kesintiye u\u011frad\u0131\u011f\u0131n\u0131 veya kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silindi\u011fini hayal edin. Bu senaryolar, modern DevOps ekipleri i\u00e7in kabus gibidir. Neyse ki, Terraform&#039;un sundu\u011fu g\u00fc\u00e7l\u00fc lifecycle y\u00f6netim kurallar\u0131 sayesinde bu riskleri minimize edebilir ve altyap\u0131n\u0131z \u00fczerinde tam kontrol sa\u011flayabilirsiniz. Bu makale, Terraform&#039;un ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini s\u0131f\u0131rdan \u00f6\u011frenecek, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle uygulayacak ve altyap\u0131 kodunuzu daha g\u00fcvenli, daha dayan\u0131kl\u0131 hale getirme yollar\u0131n\u0131 ke\u015ffedeceksiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-03T04:30:51+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=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun\",\"datePublished\":\"2025-12-03T04:30:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/\"},\"wordCount\":3649,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/\",\"name\":\"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-03T04:30:51+00:00\",\"description\":\"Bulut altyap\u0131n\u0131z\u0131n beklenmedik de\u011fi\u015fiklikler y\u00fcz\u00fcnden kesintiye u\u011frad\u0131\u011f\u0131n\u0131 veya kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silindi\u011fini hayal edin. Bu senaryolar, modern DevOps ekipleri i\u00e7in kabus gibidir. Neyse ki, Terraform'un sundu\u011fu g\u00fc\u00e7l\u00fc lifecycle y\u00f6netim kurallar\u0131 sayesinde bu riskleri minimize edebilir ve altyap\u0131n\u0131z \u00fczerinde tam kontrol sa\u011flayabilirsiniz. Bu makale, Terraform'un ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini s\u0131f\u0131rdan \u00f6\u011frenecek, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle uygulayacak ve altyap\u0131 kodunuzu daha g\u00fcvenli, daha dayan\u0131kl\u0131 hale getirme yollar\u0131n\u0131 ke\u015ffedeceksiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun\"}]},{\"@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":"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun","description":"Bulut altyap\u0131n\u0131z\u0131n beklenmedik de\u011fi\u015fiklikler y\u00fcz\u00fcnden kesintiye u\u011frad\u0131\u011f\u0131n\u0131 veya kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silindi\u011fini hayal edin. Bu senaryolar, modern DevOps ekipleri i\u00e7in kabus gibidir. Neyse ki, Terraform'un sundu\u011fu g\u00fc\u00e7l\u00fc lifecycle y\u00f6netim kurallar\u0131 sayesinde bu riskleri minimize edebilir ve altyap\u0131n\u0131z \u00fczerinde tam kontrol sa\u011flayabilirsiniz. Bu makale, Terraform'un ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini s\u0131f\u0131rdan \u00f6\u011frenecek, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle uygulayacak ve altyap\u0131 kodunuzu daha g\u00fcvenli, daha dayan\u0131kl\u0131 hale getirme yollar\u0131n\u0131 ke\u015ffedeceksiniz.","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\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/","og_locale":"tr_TR","og_type":"article","og_title":"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun","og_description":"Bulut altyap\u0131n\u0131z\u0131n beklenmedik de\u011fi\u015fiklikler y\u00fcz\u00fcnden kesintiye u\u011frad\u0131\u011f\u0131n\u0131 veya kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silindi\u011fini hayal edin. Bu senaryolar, modern DevOps ekipleri i\u00e7in kabus gibidir. Neyse ki, Terraform'un sundu\u011fu g\u00fc\u00e7l\u00fc lifecycle y\u00f6netim kurallar\u0131 sayesinde bu riskleri minimize edebilir ve altyap\u0131n\u0131z \u00fczerinde tam kontrol sa\u011flayabilirsiniz. Bu makale, Terraform'un ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini s\u0131f\u0131rdan \u00f6\u011frenecek, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle uygulayacak ve altyap\u0131 kodunuzu daha g\u00fcvenli, daha dayan\u0131kl\u0131 hale getirme yollar\u0131n\u0131 ke\u015ffedeceksiniz.","og_url":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-03T04:30:51+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun","datePublished":"2025-12-03T04:30:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/"},"wordCount":3649,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/","url":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/","name":"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-03T04:30:51+00:00","description":"Bulut altyap\u0131n\u0131z\u0131n beklenmedik de\u011fi\u015fiklikler y\u00fcz\u00fcnden kesintiye u\u011frad\u0131\u011f\u0131n\u0131 veya kritik bir kayna\u011f\u0131n yanl\u0131\u015fl\u0131kla silindi\u011fini hayal edin. Bu senaryolar, modern DevOps ekipleri i\u00e7in kabus gibidir. Neyse ki, Terraform'un sundu\u011fu g\u00fc\u00e7l\u00fc lifecycle y\u00f6netim kurallar\u0131 sayesinde bu riskleri minimize edebilir ve altyap\u0131n\u0131z \u00fczerinde tam kontrol sa\u011flayabilirsiniz. Bu makale, Terraform'un ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini s\u0131f\u0131rdan \u00f6\u011frenecek, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle uygulayacak ve altyap\u0131 kodunuzu daha g\u00fcvenli, daha dayan\u0131kl\u0131 hale getirme yollar\u0131n\u0131 ke\u015ffedeceksiniz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/terraform-lifecycle-yonetim-kurallari-altyapi-yasam-dongusune-hakim-olun\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Terraform Lifecycle Y\u00f6netim Kurallar\u0131: Altyap\u0131 Ya\u015fam D\u00f6ng\u00fcs\u00fcne Hakim Olun"}]},{"@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\/35727","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=35727"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35727\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}