{"id":3231,"date":"2026-08-03T09:55:37","date_gmt":"2026-08-03T09:55:37","guid":{"rendered":"https:\/\/hostligo.com\/blog\/?p=3231"},"modified":"2026-08-03T10:35:34","modified_gmt":"2026-08-03T10:35:34","slug":"iac-ve-terraforma-giris-manuel-sunucu-kurulumlarina-son-verin","status":"publish","type":"post","link":"https:\/\/hostligo.com\/blog\/iac-ve-terraforma-giris-manuel-sunucu-kurulumlarina-son-verin\/","title":{"rendered":"IaC ve Terraform'a Giri\u015f: Manuel Sunucu Kurulumlar\u0131na Son Verin"},"content":{"rendered":"<div class=\"inner-post-entry entry-content\">\n<p>Cloud teknolojileri ve DevOps pratiklerinin standart hale gelmesiyle, sunucu ve altyap\u0131 y\u00f6netim bi\u00e7imlerimiz de tamamen de\u011fi\u015fiyor. Eskiden oldu\u011fu gibi manuel olarak sunucu kurmak, IP atamak ve yap\u0131land\u0131rmak; g\u00fcn\u00fcm\u00fcz\u00fcn h\u0131z gerektiren, dinamik ve esnek sistem beklentilerini kar\u015f\u0131lamakta olduk\u00e7a yetersiz kal\u0131yor. Tam bu a\u015famada kar\u015f\u0131m\u0131za \u00e7\u0131kan \"Infrastructure as Code\" (IaC) yani \"Kod Olarak Altyap\u0131\" yakla\u015f\u0131m\u0131, donan\u0131m ve sistem y\u00f6netimini bir yaz\u0131l\u0131m geli\u015ftirme s\u00fcreci gibi ele alarak harika \u00e7\u00f6z\u00fcmler \u00fcretiyor. Bu devasa d\u00f6n\u00fc\u015f\u00fcm\u00fcn en pop\u00fcler ara\u00e7lar\u0131ndan biri olan Terraform ise, altyap\u0131 otomasyonunu anla\u015f\u0131l\u0131r, sade ve platformdan ba\u011f\u0131ms\u0131z bir yap\u0131ya kavu\u015fturarak k\u0131sa s\u00fcrede end\u00fcstri standard\u0131 olmay\u0131 ba\u015fard\u0131. Bu rehberimizde, IaC mant\u0131\u011f\u0131n\u0131 temelden ele al\u0131p Terraform'un sundu\u011fu e\u015fsiz avantajlar\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h2>Eski Usul Altyap\u0131 Y\u00f6netiminin Yaratt\u0131\u011f\u0131 Problemler<\/h2>\n<p>IaC felsefesi ortaya \u00e7\u0131kmadan \u00f6nce, yaz\u0131l\u0131m ve sistem ekipleri donan\u0131mlar\u0131 tamamen el yordam\u0131yla y\u00f6netmek zorundayd\u0131. Projeler b\u00fcy\u00fcy\u00fcp karma\u015f\u0131kla\u015ft\u0131k\u00e7a, bu eski usul y\u00f6ntemler geli\u015ftirme s\u00fcre\u00e7lerini t\u0131kayan devasa bir bariyere d\u00f6n\u00fc\u015ft\u00fc. Otomasyona ge\u00e7i\u015fin neden zorunlu oldu\u011funu anlamak i\u00e7in geleneksel y\u00f6ntemlerin zay\u0131fl\u0131klar\u0131na g\u00f6z atmak gerekir.<\/p>\n<h3>Elle Yap\u0131lan Kurulumlar ve Zaman Kayb\u0131<\/h3>\n<p>Ge\u00e7mi\u015fte sistem y\u00f6neticileri; her bir sanal makineyi, a\u011f ayar\u0131n\u0131 veya veritaban\u0131n\u0131 tek tek kendi elleriyle kuruyordu. \u0130\u015fletim sisteminin y\u00fcklenmesinden g\u00fcvenlik duvar\u0131 yap\u0131land\u0131rmalar\u0131na kadar uzanan bu zorlu s\u00fcre\u00e7, hem ciddi bir zaman kayb\u0131 hem de derin bir teknik uzmanl\u0131k gerektiriyordu. Geli\u015ftirici ekibi yeni bir test ortam\u0131na ihtiya\u00e7 duydu\u011funda, t\u00fcm bu ayarlar\u0131n s\u0131f\u0131rdan yap\u0131lmas\u0131 g\u00fcnleri hatta haftalar\u0131 bulabiliyordu.<\/p>\n<h3>\"Configuration Drift\" (Yap\u0131land\u0131rma Kaymas\u0131) Nedir?<\/h3>\n<p>Sistemler manuel olarak y\u00f6netildi\u011finde zaman i\u00e7inde \"Configuration Drift\" denilen yap\u0131land\u0131rma kaymalar\u0131 meydana gelir. Ba\u015flang\u0131\u00e7ta birebir ayn\u0131 konfig\u00fcrasyonla kurulan sunucular, zamanla uygulanan acil g\u00fcvenlik yamalar\u0131, yaz\u0131l\u0131m s\u00fcr\u00fcm g\u00fcncellemeleri veya anl\u0131k manuel m\u00fcdahaleler y\u00fcz\u00fcnden birbirinden farkl\u0131la\u015fmaya ba\u015flar. Bu durum, kodlar\u0131n bir ortamda sorunsuz \u00e7al\u0131\u015f\u0131rken di\u011fer ortamda hata vermesi gibi \u00e7\u00f6z\u00fcm\u00fc saatler s\u00fcren kronik problemlere yol a\u00e7ar.<\/p>\n<h3>B\u00fcy\u00fcme Esnas\u0131nda Ya\u015fanan Tutars\u0131zl\u0131klar<\/h3>\n<p>Uygulaman\u0131z aniden pop\u00fclerle\u015fti\u011finde veya organik bir trafik patlamas\u0131 ya\u015fad\u0131\u011f\u0131nda, altyap\u0131n\u0131z\u0131 h\u0131zl\u0131ca b\u00fcy\u00fctmeniz hayati \u00f6nem ta\u015f\u0131r. Eski y\u00f6ntemlerle onlarca yeni sunucuyu hatas\u0131z, eksiksiz ve ilk sunucuyla birebir ayn\u0131 ayarlarda aya\u011fa kald\u0131rmak imkans\u0131za yak\u0131nd\u0131r. Manuel yap\u0131lan her kurulumda ufak tefek p\u00fcr\u00fczler olu\u015fur ve bu durum sitenin genelinde bir karars\u0131zl\u0131k yarat\u0131r.<\/p>\n<h3>\u0130nsan Kaynakl\u0131 Hatalar ve Riskler<\/h3>\n<p>S\u00fcrekli tekrarlanan manuel i\u015flemler her zaman insan hatas\u0131na (human error) gebedir. Yanl\u0131\u015f yaz\u0131lan ufak bir IP adresi, g\u00f6zden ka\u00e7an bir port izni veya hatal\u0131 girilen bir sistem komutu, telafisi zor g\u00fcvenlik a\u00e7\u0131klar\u0131na ve kal\u0131c\u0131 veri kay\u0131plar\u0131na sebep olabilir. Canl\u0131 sistemlerde el yordam\u0131yla yap\u0131lan m\u00fcdahaleler, geri d\u00f6n\u00fc\u015f\u00fc olduk\u00e7a maliyetli krizlere davetiye \u00e7\u0131kar\u0131r.<\/p>\n<h2>Infrastructure as Code (IaC) Nedir ve Temel Mant\u0131\u011f\u0131 Nas\u0131ld\u0131r?<\/h2>\n<p>Geleneksel sistem y\u00f6netiminin hantall\u0131\u011f\u0131na ve risklerine kar\u015f\u0131 geli\u015ftirilen IaC, donan\u0131m kaynaklar\u0131n\u0131n manuel aray\u00fcz m\u00fcdahaleleri yerine tamamen kod bloklar\u0131yla tan\u0131mlanmas\u0131 ve y\u00f6netilmesidir. T\u0131pk\u0131 bir web sitesi veya uygulama geli\u015ftiriyormu\u015f gibi, sunucu altyap\u0131n\u0131z da versiyon kontrol sistemlerinde (\u00f6rne\u011fin Git \u00fczerinde) g\u00fcvenle saklan\u0131r, test edilir ve tek t\u0131kla otomatik olarak \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. B\u00f6ylece altyap\u0131n\u0131z saniyeler i\u00e7inde in\u015fa edilir.<\/p>\n<h3>Kod Olarak Altyap\u0131 (IaC) Kavram\u0131<\/h3>\n<p>IaC felsefesinde \"sunucuya ba\u011flan\u0131p program kurma\" devri kapan\u0131r. Bunun yerine, altyap\u0131n\u0131n \"nas\u0131l g\u00f6r\u00fcnmesi gerekti\u011fini\" anlatan okunabilir metin dosyalar\u0131 yaz\u0131l\u0131r. Terraform gibi geli\u015fmi\u015f otomasyon ara\u00e7lar\u0131 bu dosyalar\u0131 okur, analiz eder ve donan\u0131m kaynaklar\u0131n\u0131z\u0131 tam da kodda belirtti\u011finiz gibi hatas\u0131z bir \u015fekilde yap\u0131land\u0131r\u0131r.<\/p>\n<h3>IaC'yi G\u00fc\u00e7l\u00fc K\u0131lan Ana \u0130lkeler<\/h3>\n<p>Bu yakla\u015f\u0131m\u0131n teknoloji d\u00fcnyas\u0131nda bu kadar \u00e7abuk benimsenmesinin arkas\u0131nda iki sars\u0131lmaz prensip yatar.<\/p>\n<h4>Idempotence (Ayn\u0131 Sonucu \u00dcretme)<\/h4>\n<p>Idempotence kavram\u0131, bir i\u015flemi defalarca \u00e7al\u0131\u015ft\u0131rsan\u0131z bile her zaman ayn\u0131 stabil sonucu elde etmeniz anlam\u0131na gelir. IaC d\u00fcnyas\u0131nda bu, yazd\u0131\u011f\u0131n\u0131z bir konfig\u00fcrasyon dosyas\u0131n\u0131 y\u00fcz defa \u00e7al\u0131\u015ft\u0131rsan\u0131z da sistemin sadece \"olmas\u0131 gereken\" hedefe getirilece\u011fi, e\u011fer zaten o hedeftesiyse hi\u00e7bir de\u011fi\u015fiklik yap\u0131lmayaca\u011f\u0131 anlam\u0131na gelir. Ayarlar\u0131n\u0131zdan biri bozuldu\u011funda, kodu tekrar \u00e7al\u0131\u015ft\u0131rarak sistemi an\u0131nda eski sa\u011fl\u0131kl\u0131 haline \u00e7evirebilirsiniz.<\/p>\n<h4>Immutable (De\u011fi\u015ftirilemez) Altyap\u0131<\/h4>\n<p>De\u011fi\u015ftirilemez altyap\u0131 prensibi, bir sunucu kurulduktan sonra \u00fczerinde asla manuel g\u00fcncelleme veya yama yap\u0131lmamas\u0131 gerekti\u011fi mant\u0131\u011f\u0131na dayan\u0131r. Sistemde bir versiyon y\u00fckseltmesi gerekti\u011finde mevcut sunucuya dokunulmaz; bunun yerine yeni ayarlar\u0131 bar\u0131nd\u0131ran yepyeni bir sunucu imaj\u0131 yarat\u0131l\u0131r. Yeni sunucu canl\u0131ya al\u0131n\u0131nca, eskisi tamamen silinir. Bu sayede sistemde \u00e7\u00f6p dosyalar birikmez ve altyap\u0131 her zaman temiz kal\u0131r.<\/p>\n<h3>Deklaratif (Declarative) ve Emperatif (Imperative) Y\u00f6ntemler<\/h3>\n<p>IaC ara\u00e7lar\u0131, sistemleri in\u015fa ederken genel olarak iki farkl\u0131 yakla\u015f\u0131m kullan\u0131r. Bu ayr\u0131m\u0131 anlamak, projenize en uygun arac\u0131 se\u00e7menizi sa\u011flar.<\/p>\n<ul>\n<li><b>Deklaratif Yakla\u015f\u0131m:<\/b> Bu y\u00f6ntemde araca sadece \"ne istedi\u011finizi\" s\u00f6ylersiniz, arka plandaki i\u015fleyi\u015fe kar\u0131\u015fmazs\u0131n\u0131z. \u00d6rne\u011fin \"Bana 4 adet web sunucusu ve 1 adet y\u00fck dengeleyici ver\" \u015feklinde kod yazars\u0131n\u0131z. Terraform bu y\u00f6ntemi kullan\u0131r ve o hedefe ula\u015fmak i\u00e7in gereken i\u015flemleri kendi zekas\u0131yla planlar.<\/li>\n<li><b>Emperatif Yakla\u015f\u0131m:<\/b> Burada ise sonu\u00e7tan ziyade hedefe giden yol haritas\u0131n\u0131 siz belirlersiniz. \"Sanal a\u011f\u0131 kur, sonra klas\u00f6r olu\u015ftur, i\u00e7ine \u015fu dosyay\u0131 indir ve \u00e7al\u0131\u015ft\u0131r\" gibi direktifler verirsiniz. Kontrol\u00fcn tamam\u0131 sizde olsa da kod takibi daha zordur.<\/li>\n<\/ul>\n<div class=\"karsilastirma\">\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>Deklaratif (Ne \u0130stiyorum?)<\/th>\n<th>Emperatif (Nas\u0131l Yapmal\u0131y\u0131m?)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><b>Odak Noktas\u0131<\/b><\/td>\n<td>\u0130stenilen nihai sistem durumu<\/td>\n<td>\u0130\u015flem ad\u0131mlar\u0131 ve \u00e7al\u0131\u015fma s\u00fcreci<\/td>\n<\/tr>\n<tr>\n<td><b>Kullan\u0131lan Ara\u00e7lar<\/b><\/td>\n<td>Terraform, AWS CloudFormation<\/td>\n<td>Ansible, Chef, Shell Betikleri<\/td>\n<\/tr>\n<tr>\n<td><b>Kullan\u0131m Zorlu\u011fu<\/b><\/td>\n<td>D\u00fc\u015f\u00fck, daha soyut ve anla\u015f\u0131l\u0131r<\/td>\n<td>Y\u00fcksek, detayl\u0131 i\u015flem komutlar\u0131 gerektirir<\/td>\n<\/tr>\n<tr>\n<td><b>Durum Kontrol\u00fc<\/b><\/td>\n<td>Ara\u00e7 kendisi otomatik takip eder<\/td>\n<td>Kullan\u0131c\u0131 manuel takip etmek zorundad\u0131r<\/td>\n<\/tr>\n<tr>\n<td><b>Esneklik<\/b><\/td>\n<td>Arac\u0131n plan\u0131na g\u00fcvenir, hedefe odakl\u0131d\u0131r<\/td>\n<td>S\u00fcrecin her an\u0131na manuel m\u00fcdahale edilebilir<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Kod ile Altyap\u0131 Y\u00f6netmenin Faydalar\u0131<\/h3>\n<p>Infrastructure as Code felsefesine ge\u00e7i\u015f yapmak, \u015firketlere muazzam bir h\u0131z ve operasyonel esneklik kazand\u0131r\u0131r. Kurulum s\u00fcrelerinin haftalardan dakikalara inmesi, maliyetlerin optimize edilmesi, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n kod seviyesinde tespit edilebilmesi ve yaz\u0131l\u0131mc\u0131 ekipler aras\u0131 uyumun artmas\u0131 en belirgin faydalard\u0131r. Hosting ortamlar\u0131ndan sanal sunuculara kadar her \u015feyi standart bir metin dosyas\u0131yla y\u00f6netmek operasyonel y\u00fck\u00fc s\u0131f\u0131ra indirir.<\/p>\n<h2>Terraform Nedir? Modern Altyap\u0131 Otomasyonuna Giri\u015f<\/h2>\n<p>Bulut otomasyon ara\u00e7lar\u0131 aras\u0131nda \u00f6ne \u00e7\u0131kan HashiCorp imzal\u0131 Terraform, esnek yap\u0131s\u0131 ve geni\u015f platform deste\u011fi ile IaC d\u00fcnyas\u0131n\u0131n parlayan y\u0131ld\u0131z\u0131d\u0131r. Herhangi bir sisteme ba\u011f\u0131ml\u0131 kalmadan, sade bir dille altyap\u0131 mimarinizi olu\u015fturman\u0131za imkan tan\u0131r.<\/p>\n<h3>Terraform Kavram\u0131<\/h3>\n<p>A\u00e7\u0131k kaynak kodlu bir IaC yaz\u0131l\u0131m\u0131 olan Terraform, HashiCorp Configuration Language (HCL) isimli \u00f6zel ve okumas\u0131 \u00e7ok kolay bir dil kullan\u0131r. Sisteminizin ula\u015fmas\u0131n\u0131 istedi\u011finiz son durumu (desired state) bu dil ile tan\u0131mlars\u0131n\u0131z. Sadece b\u00fcy\u00fck bulut platformlar\u0131nda de\u011fil, ofisinizdeki on-premise donan\u0131mlarda bile m\u00fckemmel \u00e7al\u0131\u015farak altyap\u0131n\u0131z\u0131 saniyeler i\u00e7inde aya\u011fa kald\u0131r\u0131r.<\/p>\n<h3>Terraform Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>Sistemin i\u015fleyi\u015f mant\u0131\u011f\u0131 son derece g\u00fcvenli \u00fc\u00e7 temel ad\u0131mdan olu\u015fur: Yaz, Planla, Uygula.<\/p>\n<ul>\n<li><b>Yaz (Write):<\/b> Sistemin sahip olmas\u0131n\u0131 istedi\u011finiz donan\u0131m ve a\u011f \u00f6zelliklerini HCL dilinde, <code>.tf<\/code> uzant\u0131l\u0131 metin dosyalar\u0131na yazars\u0131n\u0131z.<\/li>\n<li><b>Planla (Plan):<\/b> Yazd\u0131\u011f\u0131n\u0131z bu kodlar\u0131n, sistemin mevcut durumu \u00fczerinde ne gibi de\u011fi\u015fiklikler yapaca\u011f\u0131 bir \u00f6nizleme \u015feklinde size sunulur. Hata yapman\u0131z\u0131 engelleyen bir sigorta mekanizmas\u0131d\u0131r.<\/li>\n<li><b>Uygula (Apply):<\/b> \u00c7\u0131kan plana onay verdi\u011finizde Terraform, sa\u011flay\u0131c\u0131n\u0131n API'leri ile do\u011frudan ileti\u015fime ge\u00e7er ve kaynaklar\u0131n\u0131z\u0131 fiziksel veya sanal olarak an\u0131nda olu\u015fturur.<\/li>\n<\/ul>\n<h3>Ansible, Chef ve Puppet Gibi Ara\u00e7lardan Fark\u0131 Ne?<\/h3>\n<p>Sekt\u00f6rde Terraform s\u0131kl\u0131kla Ansible veya Chef gibi ara\u00e7larla k\u0131yaslan\u0131r. Ancak aralar\u0131ndaki belirgin \u00e7izgi, \"Altyap\u0131 Kurulumu\" (Provisioning) ile \"Yap\u0131land\u0131rma Y\u00f6netimi\" (Configuration Management) aras\u0131ndaki farkt\u0131r.<\/p>\n<div class=\"karsilastirma\">\n<table>\n<thead>\n<tr>\n<th>Kriter<\/th>\n<th>Terraform<\/th>\n<th>Ansible \/ Chef \/ Puppet<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><b>Temel Amac\u0131<\/b><\/td>\n<td>S\u0131f\u0131rdan Altyap\u0131 \u0130n\u015fas\u0131 (Provisioning)<\/td>\n<td>Mevcut Sistemlerin \u0130\u00e7 Yap\u0131land\u0131rmas\u0131<\/td>\n<\/tr>\n<tr>\n<td><b>\u00c7al\u0131\u015fma Mant\u0131\u011f\u0131<\/b><\/td>\n<td>Tamamen Deklaratif<\/td>\n<td>Genellikle Emperatif \/ Prosed\u00fcrel a\u011f\u0131rl\u0131kl\u0131<\/td>\n<\/tr>\n<tr>\n<td><b>Durum Y\u00f6netimi<\/b><\/td>\n<td>Durum dosyas\u0131 (state file) \u00fczerinden takip eder<\/td>\n<td>Hedef sunucuya ba\u011flan\u0131p anl\u0131k durum okur<\/td>\n<\/tr>\n<tr>\n<td><b>Kullan\u0131m Alan\u0131<\/b><\/td>\n<td>Bo\u015f bir araziye binan\u0131n temelini atmak<\/td>\n<td>Kurulu binan\u0131n i\u00e7 dekorasyonunu yapmak<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u00d6zetle; Terraform sunucuyu ve a\u011f donan\u0131mlar\u0131n\u0131 var eder, Ansible ise var olan o sunucunun i\u00e7ine girerek gerekli yaz\u0131l\u0131mlar\u0131 kurar. Birbirlerinin rakibi de\u011fil, ek\u00fcrisidirler.<\/p>\n<h3>\u00c7oklu Bulut (Multi-Cloud) ve Hibrit Destek<\/h3>\n<p>Terraform'un rakipsiz olmas\u0131n\u0131n en b\u00fcy\u00fck sebebi \"Provider\" (Sa\u011flay\u0131c\u0131) eklentileridir. Bu yap\u0131 sayesinde tek bir marka veya platforma hapsolmazs\u0131n\u0131z. Ayn\u0131 proje klas\u00f6r\u00fc i\u00e7erisinde; veritaban\u0131n\u0131z\u0131 bir platformdan, web sunucular\u0131n\u0131z\u0131 ba\u015fka bir platformdan, yedekleme alan\u0131n\u0131z\u0131 ise yerel sunucunuzdan kurgulayabilirsiniz. Bu \u00f6zellik size devasa bir manevra alan\u0131 sa\u011flar.<\/p>\n<h2>Terraform Kurulumu ve Kullan\u0131lan Temel Komutlar<\/h2>\n<p>Terraform arka planda bilgisayar\u0131n\u0131z\u0131 yoran a\u011f\u0131r servisler \u00e7al\u0131\u015ft\u0131rmaz, sadece tek bir y\u00fcr\u00fct\u00fclebilir dosyadan ibarettir. Bu nedenle kurulumu saniyeler s\u00fcrer.<\/p>\n<h3>Windows, macOS ve Linux \u0130\u00e7in Y\u00fckleme Ad\u0131mlar\u0131<\/h3>\n<p>\u0130\u015fletim sisteminize uygun olan\u0131 saniyeler i\u00e7inde sisteminize tan\u0131tabilirsiniz.<\/p>\n<ul>\n<li><b>Windows:<\/b> HashiCorp resmi sitesinden Windows ZIP paketini indirin. \u0130\u00e7indeki <code>terraform.exe<\/code> dosyas\u0131n\u0131 \u00e7\u0131kar\u0131n ve sisteminizin ortam de\u011fi\u015fkenlerinde (PATH) yer alan bir klas\u00f6re yap\u0131\u015ft\u0131r\u0131n.<\/li>\n<li><b>macOS:<\/b> Terminal \u00fczerinden Homebrew paket y\u00f6neticisini a\u00e7arak sadece <code>brew install terraform<\/code> komutunu girmeniz yeterlidir.<\/li>\n<li><b>Linux:<\/b> Kulland\u0131\u011f\u0131n\u0131z da\u011f\u0131t\u0131m\u0131n paket y\u00f6neticisiyle (apt, yum vb.) do\u011frudan kurabilir ya da manuel olarak dosyay\u0131 indirip <code>\/usr\/local\/bin<\/code> klas\u00f6r\u00fcne ta\u015f\u0131yabilirsiniz.<\/li>\n<\/ul>\n<p>Kurulumu test etmek i\u00e7in terminalinize <code>terraform --version<\/code> komutunu g\u00f6nderin, versiyon numaras\u0131 d\u00f6n\u00fcyorsa i\u015flem tamamd\u0131r.<\/p>\n<h3>En S\u0131k Kullan\u0131lan Terraform Komutlar\u0131<\/h3>\n<p>Terraform'u komut sat\u0131r\u0131 aray\u00fcz\u00fcnden (CLI) y\u00f6netirsiniz. Altyap\u0131n\u0131z\u0131 \u015fekillendirmek i\u00e7in \u015fu temel komutlar\u0131 bilmeniz yeterlidir:<\/p>\n<ul>\n<li><b>terraform init:<\/b> Projeyi ba\u015flatt\u0131\u011f\u0131n\u0131z komuttur. Klas\u00f6r\u00fc analiz eder ve kullanaca\u011f\u0131n\u0131z sistem sa\u011flay\u0131c\u0131lar\u0131na ait gerekli eklentileri (plugin) internetten indirip ortam\u0131 haz\u0131rlar.<\/li>\n<li><b>terraform plan:<\/b> Kodlar\u0131n\u0131z\u0131n canl\u0131 sistemde tam olarak neleri silece\u011fini, neleri g\u00fcncelleyece\u011fini ve neleri yeni ekleyece\u011fini bir liste halinde g\u00f6sterir. Sistemi bozmadan \u00f6nceki son \u00e7\u0131k\u0131\u015ft\u0131r.<\/li>\n<li><b>terraform apply:<\/b> Yapt\u0131\u011f\u0131n\u0131z plan\u0131 fiiliyata d\u00f6ker. Altyap\u0131 kaynaklar\u0131n\u0131z\u0131n fiziksel veya sanal olarak yarat\u0131ld\u0131\u011f\u0131, ger\u00e7ek kodun ko\u015fuldu\u011fu komuttur.<\/li>\n<li><b>terraform destroy:<\/b> Kodunuzla yaratt\u0131\u011f\u0131n\u0131z t\u00fcm sunucu ve veritaban\u0131 altyap\u0131s\u0131n\u0131 tamamen siler. Ge\u00e7ici olarak olu\u015fturdu\u011funuz test ortamlar\u0131n\u0131 kapatmak ve gereksiz fatura \u00f6demekten kurtulmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<h3>HCL (HashiCorp Configuration Language) Yap\u0131s\u0131<\/h3>\n<p>Terraform'un dili olan HCL, JSON format\u0131na \u00e7ok benzese de okunabilirli\u011fi art\u0131r\u0131lm\u0131\u015f, sadele\u015ftirilmi\u015f bir dildir. Temel olarak \"bloklar\" ve i\u00e7lerindeki \"parametrelerden\" (arg\u00fcmanlar) olu\u015fur. Sunucu, veritaban\u0131 veya IP adresi fark etmeksizin her \u015fey bir blok yap\u0131s\u0131 i\u00e7ine yaz\u0131l\u0131r.<\/p>\n<h2>Terraform'un Temel Bile\u015fenleri (Yap\u0131 Ta\u015flar\u0131)<\/h2>\n<p>Terraform kodlar\u0131n\u0131n arkas\u0131ndaki g\u00fcc\u00fc anlamak i\u00e7in projeyi olu\u015fturan par\u00e7alar\u0131 (bile\u015fenleri) kavramak gerekir. Etkili bir IaC projesi bu bile\u015fenlerin uyumlu \u00e7al\u0131\u015fmas\u0131yla in\u015fa edilir.<\/p>\n<h3>Providers (Platform Sa\u011flay\u0131c\u0131lar)<\/h3>\n<p>Terraform'un kullanaca\u011f\u0131n\u0131z bulut altyap\u0131s\u0131yla veya sunucunuzla konu\u015fmas\u0131n\u0131 sa\u011flayan API eklentileridir. Kodunuzun en ba\u015f\u0131nda, hangi firmayla \u00e7al\u0131\u015faca\u011f\u0131n\u0131z\u0131 bu blok ile belirtirsiniz.<\/p>\n<h3>Resources (Sistem Kaynaklar\u0131)<\/h3>\n<p>Projenin yap\u0131 ta\u015flar\u0131d\u0131r. Yaratmak istedi\u011finiz bir sanal sunucu, bir depolama alan\u0131 veya bir a\u011f kural\u0131 <code>resource<\/code> blo\u011fu ile tan\u0131mlan\u0131r. T\u00fcr\u00fcn\u00fc ve ona verece\u011finiz yerel ismi siz belirlersiniz.<\/p>\n<h3>Variables (Dinamik De\u011fi\u015fkenler)<\/h3>\n<p>Kodlar\u0131n\u0131z\u0131 statik de\u011ferlerden kurtararak yeniden kullan\u0131labilir hale getiren de\u011fi\u015fkenlerdir. \u00d6rne\u011fin sunucu boyutunu sabit bir metin olarak yazmak yerine bir de\u011fi\u015fkene atarsan\u0131z, ayn\u0131 kod dosyas\u0131n\u0131 hi\u00e7 bozmadan hem ufak test sunucular\u0131 hem de devasa canl\u0131 sunucular a\u00e7mak i\u00e7in kullanabilirsiniz.<\/p>\n<h3>Outputs (Ekran \u00c7\u0131kt\u0131lar\u0131)<\/h3>\n<p>Sunucunuz saniyeler i\u00e7inde yarat\u0131ld\u0131ktan sonra, onun sisteme atanan rastgele IP adresini veya olu\u015fturulan veritaban\u0131n\u0131n otomatik \u015fifresini bilmeniz gerekir. \u0130\u015fte <code>output<\/code> bloklar\u0131 bu bilgileri yakalay\u0131p do\u011frudan ekran\u0131n\u0131za yazd\u0131r\u0131r.<\/p>\n<h3>State File (Sistem Durum Dosyas\u0131)<\/h3>\n<p>Terraform'un sahip oldu\u011fu en kritik par\u00e7ad\u0131r. Genelde <code>terraform.tfstate<\/code> ismiyle saklanan bu dosya, yazd\u0131\u011f\u0131n\u0131z kod ile ger\u00e7ekte yarat\u0131lan donan\u0131m aras\u0131ndaki k\u00f6pr\u00fcd\u00fcr. Siz koda yeni bir sat\u0131r ekledi\u011finizde Terraform \u00f6nce bu dosyaya bakar, sistemin anl\u0131k foto\u011fraf\u0131n\u0131 g\u00f6r\u00fcr ve sadece aradaki eksik k\u0131sm\u0131 in\u015fa eder.<\/p>\n<h2>Ad\u0131m Ad\u0131m \u0130lk Terraform Projemizi Olu\u015ftural\u0131m<\/h2>\n<p>T\u00fcm bu teorik bilgileri prati\u011fe d\u00f6kmek i\u00e7in basit bir sunucu aya\u011fa kald\u0131rma projesi haz\u0131rlayal\u0131m. Bu \u00f6rnek, Terraform par\u00e7alar\u0131n\u0131n birbiriyle nas\u0131l konu\u015ftu\u011funu somutla\u015ft\u0131racakt\u0131r.<\/p>\n<h3>Proje Klas\u00f6r\u00fcn\u00fcn Haz\u0131rlanmas\u0131<\/h3>\n<p>Bilgisayar\u0131n\u0131zda <code>ilk-terraform-projem<\/code> ad\u0131nda bo\u015f bir dizin yarat\u0131n ve komut istemcinizle bu dizinin i\u00e7ine girin. Farkl\u0131 ama\u00e7lara hizmet eden kodlar\u0131 ayn\u0131 dosyaya t\u0131k\u0131\u015ft\u0131rmak yerine ayr\u0131 dosyalara b\u00f6lmek en do\u011fru yakla\u015f\u0131md\u0131r.<\/p>\n<h3>Ana Dosyan\u0131n (main.tf) Kodlanmas\u0131<\/h3>\n<p>Projenin g\u00f6vdesini olu\u015fturacak <code>main.tf<\/code> isimli bir dosya yarat\u0131p i\u00e7ine ba\u011flant\u0131 kuraca\u011f\u0131m\u0131z platformu ve sunucu niteliklerini giriyoruz.<\/p>\n<p><code>terraform {<br \/>\nrequired_providers {<br \/>\naws = {<br \/>\nsource = \"hashicorp\/aws\"<br \/>\nversion = \"~&gt; 5.0\"<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>provider \"aws\" {<br \/>\nregion = var.sunucu_bolgesi<br \/>\n}<\/p>\n<p>resource \"aws_instance\" \"hostligo_ornek_sunucu\" {<br \/>\nami           = \"ami-0c55b159cbfafe1f0\"<br \/>\ninstance_type = var.sunucu_tipi<\/p>\n<p>tags = {<br \/>\nName = \"Otomatik-Kurulan-Sunucu\"<br \/>\n}<br \/>\n}<\/code><\/p>\n<h3>De\u011fi\u015fken (variables.tf) Dosyas\u0131<\/h3>\n<p>Ana kodumuzdaki <code>var.<\/code> ibarelerini doldurmak i\u00e7in <code>variables.tf<\/code> ad\u0131nda yeni bir dosya a\u00e7arak dinamik de\u011fi\u015fkenlerimizi tan\u0131ml\u0131yoruz.<\/p>\n<p><code>variable \"sunucu_bolgesi\" {<br \/>\ndescription = \"Sunucunun bar\u0131naca\u011f\u0131 fiziksel b\u00f6lge\"<br \/>\ntype        = string<br \/>\ndefault     = \"us-east-1\"<br \/>\n}<\/p>\n<p>variable \"sunucu_tipi\" {<br \/>\ndescription = \"Ayr\u0131lacak donan\u0131m kapasitesi\"<br \/>\ntype        = string<br \/>\ndefault     = \"t2.micro\"<br \/>\n}<\/code><\/p>\n<h3>\u00c7\u0131kt\u0131 (outputs.tf) Dosyas\u0131<\/h3>\n<p>Kurulum bitince IP adresini ekranda g\u00f6rmek i\u00e7in <code>outputs.tf<\/code> isimli bir dosya daha yarat\u0131p \u015fu blo\u011fu ekliyoruz.<\/p>\n<p><code>output \"sunucu_genel_ip\" {<br \/>\ndescription = \"Olu\u015fturulan sunucunun d\u0131\u015far\u0131ya a\u00e7\u0131k IP adresi\"<br \/>\nvalue       = aws_instance.hostligo_ornek_sunucu.public_ip<br \/>\n}<\/code><\/p>\n<h3>Projeyi Aya\u011fa Kald\u0131rma A\u015famalar\u0131<\/h3>\n<p>Kodlar\u0131m\u0131z haz\u0131r oldu\u011funa g\u00f6re terminalden in\u015fa s\u00fcrecini ba\u015flatabiliriz:<\/p>\n<ol>\n<li><b>terraform init:<\/b> Klas\u00f6r i\u00e7indeyken \u00e7al\u0131\u015ft\u0131r\u0131n. Eksik API eklentileri indirilecektir.<\/li>\n<li><b>terraform plan:<\/b> \u00c7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, kodlar\u0131n\u0131z taran\u0131r ve 1 adet sunucunun sisteme eklenece\u011fi raporu \u00f6n\u00fcn\u00fcze gelir.<\/li>\n<li><b>terraform apply:<\/b> Komutu girin. Sistem sizden son bir kez <code>yes<\/code> yazarak onay vermenizi isteyecek. Onaylad\u0131\u011f\u0131n\u0131z an sunucunuz saniyeler i\u00e7inde yarat\u0131l\u0131r ve ekran\u0131n\u0131za IP adresi d\u00fc\u015fer.<\/li>\n<\/ol>\n<h3>Sistemleri Geri Silmek (Destroy)<\/h3>\n<p>Test amac\u0131yla kurdu\u011funuz bu sunucunun bo\u015funa maliyet yaratmamas\u0131 i\u00e7in terminale <code>terraform destroy<\/code> yaz\u0131p <code>yes<\/code> ile onaylay\u0131n. Olu\u015fturulan t\u00fcm donan\u0131m altyap\u0131s\u0131 kal\u0131c\u0131 olarak silinecektir.<\/p>\n<h2>\u0130leri Seviye Terraform \u0130pu\u00e7lar\u0131 ve En \u0130yi Pratikler<\/h2>\n<p>Temel mant\u0131\u011f\u0131 kavrad\u0131ktan sonra, kodlar\u0131n\u0131z\u0131 b\u00fcy\u00fck \u00e7apl\u0131 profesyonel ortamlara entegre edebilmeniz i\u00e7in baz\u0131 kurallara ve g\u00fcvenlik detaylar\u0131na dikkat etmeniz gerekir.<\/p>\n<h3>Mod\u00fcl Yap\u0131s\u0131yla Kod Tekrar\u0131n\u0131 \u00d6nlemek<\/h3>\n<p>Kodunuz b\u00fcy\u00fcd\u00fck\u00e7e y\u00fczlerce sat\u0131r\u0131 tek dosyada tutmak projeyi y\u00f6netilemez hale getirir. \"Modules\" \u00f6zelli\u011fi ile \u00f6rne\u011fin bir web sunucusu kurulum standartlar\u0131n\u0131z\u0131 ayr\u0131 bir klas\u00f6re \u015fablon olarak koyabilirsiniz. Sonras\u0131nda farkl\u0131 projelerinizden sadece bir sat\u0131r kod ile bu \u015fablonu \u00e7a\u011f\u0131r\u0131p y\u00fczlerce kez tekrar tekrar kullanabilirsiniz.<\/p>\n<h3>Uzak Durum (Remote State) Dosyas\u0131 Y\u00f6netimi<\/h3>\n<p>Terraform'un beyni olan <code>terraform.tfstate<\/code> dosyas\u0131 varsay\u0131lan olarak sizin bilgisayar\u0131n\u0131zda tutulur. Ancak bir yaz\u0131l\u0131m ekibiyle \u00e7al\u0131\u015f\u0131yorsan\u0131z, bu dosya herkeste g\u00fcncel olmak zorundad\u0131r. \"Remote State\" \u00f6zelli\u011fi ile bu durumu yerel disk yerine ortak bir bulut depolama alan\u0131na ta\u015f\u0131rs\u0131n\u0131z. \u0130\u00e7erdi\u011fi kilit mekanizmas\u0131 sayesinde iki ki\u015fi ayn\u0131 anda altyap\u0131y\u0131 de\u011fi\u015ftirmeye kalkt\u0131\u011f\u0131nda sistemi kitleyerek felaketleri \u00f6nler.<\/p>\n<h3>Provisioner Mant\u0131\u011f\u0131 ve Uyar\u0131lar<\/h3>\n<p>Provisioner mod\u00fclleri, sunucuyu yaratt\u0131ktan hemen sonra i\u00e7ine girip baz\u0131 betikler (script) \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 veya dosya y\u00fcklemenizi sa\u011flar. Ancak HashiCorp, bu y\u00f6ntemin mecbur kal\u0131nmad\u0131k\u00e7a kullan\u0131lmamas\u0131n\u0131, yaz\u0131l\u0131m gereksinimlerinin sunucu aya\u011fa kalkarken de\u011fil, \u00f6ncesinde haz\u0131rlanm\u0131\u015f imaj kal\u0131plar\u0131yla \u00e7\u00f6z\u00fclmesini \u015fiddetle tavsiye eder.<\/p>\n<h3>\u00c7al\u0131\u015fma Alanlar\u0131 (Workspaces) Kullan\u0131m\u0131<\/h3>\n<p>Ayn\u0131 Terraform kodlar\u0131n\u0131 kullanarak hem <code>test<\/code>, hem <code>geli\u015ftirme<\/code>, hem de <code>canl\u0131<\/code> sistemler kurmak istiyorsan\u0131z Workspace \u00f6zelli\u011fi kurtar\u0131c\u0131n\u0131zd\u0131r. Her bir ortam i\u00e7in ayr\u0131 bir sanal durum dosyas\u0131 (state) yarat\u0131l\u0131r. B\u00f6ylece test ortam\u0131n\u0131zda yapt\u0131\u011f\u0131n\u0131z bir sunucu silme hatas\u0131, kesinlikle canl\u0131 ortam\u0131n\u0131za s\u0131\u00e7ramaz.<\/p>\n<h3>\u015eifrelerin ve Gizli Verilerin Korunmas\u0131<\/h3>\n<p>Veritaban\u0131 ba\u011flant\u0131 \u015fifrelerini, gizli API anahtarlar\u0131n\u0131 veya \u00f6zel g\u00fcvenlik sertifikalar\u0131n\u0131 <code>.tf<\/code> kod dosyalar\u0131n\u0131n i\u00e7ine d\u00fcz metin olarak yazmak b\u00fcy\u00fck bir acemiliktir. Bu sorunu \u00e7\u00f6zmek i\u00e7in HashiCorp Vault gibi harici kasa yaz\u0131l\u0131mlar\u0131 kullan\u0131larak, Terraform'un \u015fifreleri gerekti\u011fi an sadece bu g\u00fcvenli kasadan okuyup i\u015flemi tamamlamas\u0131 sa\u011flanmal\u0131d\u0131r.<\/p>\n<h2>Terraform ile Altyap\u0131 Y\u00f6netiminde Neden HostLigo'yu Tercih Etmelisiniz?<\/h2>\n<p>IaC felsefesi ve Terraform size inan\u0131lmaz bir otomasyon kolayl\u0131\u011f\u0131 sa\u011flasa da, yazd\u0131\u011f\u0131n\u0131z bu kodlar\u0131n \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131 fiziksel donan\u0131mlar yetersizse t\u00fcm projeleriniz h\u00fcsranla sonu\u00e7lan\u0131r. HostLigo, Terraform ile kodlayaca\u011f\u0131n\u0131z t\u00fcm projeler i\u00e7in en g\u00fc\u00e7l\u00fc donan\u0131m zeminini ve kesintisiz internet eri\u015fimini sunar. \u0130ster basit web projeleri, ister y\u00fcksek kapasiteli \u00f6zel sunucular y\u00f6netiyor olun; HostLigo'nun optimize edilmi\u015f modern sistemleri kodlar\u0131n\u0131z\u0131n an\u0131nda fiziksel bir g\u00fcce d\u00f6n\u00fc\u015fmesini garanti eder. Y\u00fcksek verimlilik sa\u011flayan paketleri ve her an yard\u0131ma haz\u0131r uzman teknik destek kadrosuyla HostLigo, otomasyon yolculu\u011funuzdaki en sa\u011flam ve g\u00fcvenilir yol arkada\u015f\u0131n\u0131zd\u0131r.<\/p>\n<p>    <div class=\"oli-post-faq-accordion\">\r\n        <button class=\"accordion\"><i class=\"fa-solid fa-question\"><\/i>Infrastructure as Code (IaC) ne anlama gelir?<\/button>\r\n        <div class=\"opfa-panel\">\r\n            <div class=\"oli-text\">IaC, sunucu ve donan\u0131m bile\u015fenlerinin manuel olarak fare ve klavye t\u0131klamalar\u0131yla de\u011fil, t\u0131pk\u0131 bir yaz\u0131l\u0131m geli\u015ftirir gibi metin tabanl\u0131 kod bloklar\u0131yla olu\u015fturulmas\u0131 ve y\u00f6netilmesidir.<\/div>\r\n        <\/div>\r\n    <\/div>\r\n    <br \/>\n    <div class=\"oli-post-faq-accordion\">\r\n        <button class=\"accordion\"><i class=\"fa-solid fa-question\"><\/i>Terraform kullanman\u0131n geleneksel y\u00f6ntemlere g\u00f6re avantaj\u0131 nedir?<\/button>\r\n        <div class=\"opfa-panel\">\r\n            <div class=\"oli-text\">Terraform, insan hatas\u0131n\u0131 ortadan kald\u0131r\u0131r. Manuel olarak saatler s\u00fcren sunucu kurulum ve yap\u0131land\u0131rma s\u00fcre\u00e7lerini tamamen otomatikle\u015ftirerek saniyeler i\u00e7inde hatas\u0131z ve tekrar edilebilir bir \u015fekilde tamamlar.<\/div>\r\n        <\/div>\r\n    <\/div>\r\n    <br \/>\n    <div class=\"oli-post-faq-accordion\">\r\n        <button class=\"accordion\"><i class=\"fa-solid fa-question\"><\/i>Terraform&#039;da State (Durum) dosyas\u0131 neden bu kadar kritiktir?<\/button>\r\n        <div class=\"opfa-panel\">\r\n            <div class=\"oli-text\">Durum dosyas\u0131 (state file), yazd\u0131\u011f\u0131n\u0131z kodlar ile ger\u00e7ek hayatta \u00e7al\u0131\u015fan sunucular\u0131n\u0131z aras\u0131ndaki haritad\u0131r. Terraform bu dosyaya bakarak mevcut durumu analiz eder ve yaln\u0131zca yap\u0131lmas\u0131 gereken yeni de\u011fi\u015fiklikleri i\u015fleme al\u0131r.<\/div>\r\n        <\/div>\r\n    <\/div>\r\n    <br \/>\n    <div class=\"oli-post-faq-accordion\">\r\n        <button class=\"accordion\"><i class=\"fa-solid fa-question\"><\/i>Terraform sadece bulut platformlar\u0131nda m\u0131 \u00e7al\u0131\u015f\u0131r?<\/button>\r\n        <div class=\"opfa-panel\">\r\n            <div class=\"oli-text\">Hay\u0131r, Terraform \"Provider\" (Sa\u011flay\u0131c\u0131) ad\u0131 verilen eklenti mimarisi sayesinde sadece b\u00fcy\u00fck bulut platformlar\u0131nda de\u011fil, ayn\u0131 zamanda ofisinizde \u00e7al\u0131\u015fan yerel (on-premise) VMware gibi sanalla\u015ft\u0131rma sistemlerinde de sorunsuz \u00e7al\u0131\u015f\u0131r.<\/div>\r\n        <\/div>\r\n    <\/div>\r\n    <br \/>\n    <div class=\"oli-post-faq-accordion\">\r\n        <button class=\"accordion\"><i class=\"fa-solid fa-question\"><\/i>HostLigo sunucular\u0131 Terraform altyap\u0131 otomasyonlar\u0131na uygun mudur?<\/button>\r\n        <div class=\"opfa-panel\">\r\n            <div class=\"oli-text\">Kesinlikle. HostLigo'nun sundu\u011fu y\u00fcksek performansl\u0131 altyap\u0131 ve geni\u015f kapasiteli kaynak limitleri sayesinde, Terraform ile kurgulad\u0131\u011f\u0131n\u0131z t\u00fcm otomasyon senaryolar\u0131n\u0131 kesinti veya yava\u015flama ya\u015famadan stabil bir \u015fekilde \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/div>\r\n        <\/div>\r\n    <\/div>\r\n    <\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Cloud teknolojileri ve DevOps pratiklerinin standart hale gelmesiyle, sunucu ve altyap\u0131 y\u00f6netim bi\u00e7imlerimiz de tamamen de\u011fi\u015fiyor. Eskiden oldu\u011fu gibi manuel olarak sunucu kurmak, IP atamak ve yap\u0131land\u0131rmak; g\u00fcn\u00fcm\u00fcz\u00fcn h\u0131z gerektiren, dinamik ve esnek sistem beklentilerini kar\u015f\u0131lamakta olduk\u00e7a yetersiz kal\u0131yor. Tam bu a\u015famada kar\u015f\u0131m\u0131za \u00e7\u0131kan \"Infrastructure as Code\" (IaC) yani \"Kod Olarak Altyap\u0131\" yakla\u015f\u0131m\u0131, donan\u0131m ve [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":3234,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[235,233],"tags":[495,496,446,491,490,290,492,494,493],"class_list":["post-3231","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sunucu-yonetimi","category-vds-sanal-sunucu-rehberi","tag-altyapi-otomasyonu","tag-devops","tag-hostligo","tag-iac-nedir","tag-infrastructure-as-code","tag-sunucu-yonetimi","tag-terraform","tag-terraform-kullanimi","tag-terraform-kurulumu"],"_links":{"self":[{"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/posts\/3231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/comments?post=3231"}],"version-history":[{"count":2,"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/posts\/3231\/revisions"}],"predecessor-version":[{"id":3236,"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/posts\/3231\/revisions\/3236"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/media\/3234"}],"wp:attachment":[{"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/media?parent=3231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/categories?post=3231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hostligo.com\/blog\/wp-json\/wp\/v2\/tags?post=3231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}