{"id":36339,"date":"2025-12-14T00:40:55","date_gmt":"2025-12-13T21:40:55","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36339"},"modified":"2025-12-14T00:40:55","modified_gmt":"2025-12-13T21:40:55","slug":"packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/","title":{"rendered":"Packer&#8217;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Packer&#8217;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi<\/h2>\n<h3>Giri\u015f: Packer ve Neden \u00d6nemli?<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz modern altyap\u0131 y\u00f6netiminde, sunucu imajlar\u0131n\u0131n tutarl\u0131, tekrarlanabilir ve otomatik bir \u015fekilde olu\u015fturulmas\u0131 kritik bir \u00f6neme sahiptir. \u0130\u015fte tam bu noktada HashiCorp taraf\u0131ndan geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir ara\u00e7 olan Packer devreye girer. Packer, tek bir kaynak yap\u0131land\u0131rma dosyas\u0131 kullanarak \u00e7e\u015fitli platformlar (AWS, Azure, Google Cloud, VMware, VirtualBox, Docker vb.) i\u00e7in ayn\u0131 makine imajlar\u0131n\u0131 (AMI&#8217;ler, ISO&#8217;lar, VMDK&#8217;lar, Docker imajlar\u0131) olu\u015fturman\u0131za olanak tan\u0131r. Bu, &#8220;de\u011fi\u015fmez altyap\u0131&#8221; (immutable infrastructure) prensibini benimseyen organizasyonlar i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r.<\/p>\n<p>De\u011fi\u015fmez altyap\u0131, bir sunucu da\u011f\u0131t\u0131ld\u0131ktan sonra asla de\u011fi\u015ftirilmemesi gerekti\u011fi fikrine dayan\u0131r. E\u011fer bir sunucuda bir de\u011fi\u015fiklik yap\u0131lmas\u0131 gerekiyorsa (\u00f6rne\u011fin, bir g\u00fcvenlik yamas\u0131 veya yeni bir yaz\u0131l\u0131m kurulumu), mevcut sunucu g\u00fcncellenmek yerine, yeni bir imajdan tamamen yeni bir sunucu da\u011f\u0131t\u0131l\u0131r ve eski sunucu sonland\u0131r\u0131l\u0131r. Bu yakla\u015f\u0131m, yap\u0131land\u0131rma kaymalar\u0131n\u0131 (configuration drift) \u00f6nler, da\u011f\u0131t\u0131mlar\u0131 daha g\u00fcvenilir hale getirir ve felaket kurtarma senaryolar\u0131n\u0131 basitle\u015ftirir. Packer, bu s\u00fcreci otomatize ederek, her zaman ayn\u0131 temelden ba\u015flayan, \u00f6nceden yap\u0131land\u0131r\u0131lm\u0131\u015f ve test edilmi\u015f imajlar olu\u015fturman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<p>Bu makalede, o d\u00f6nemde pop\u00fcler bir VPS i\u015fletim sistemi olan Ubuntu 12.04 LTS (Precise Pangolin) \u00fczerinde Packer&#8217;\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve temel d\u00fczeyde nas\u0131l kullanmaya ba\u015flayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Ubuntu 12.04, uzun s\u00fcreli destek (LTS) s\u00fcr\u00fcm\u00fc olmas\u0131 ve bir\u00e7ok VPS sa\u011flay\u0131c\u0131s\u0131 taraf\u0131ndan yayg\u0131n olarak sunulmas\u0131 nedeniyle bu rehber i\u00e7in iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Her ne kadar g\u00fcncel bir i\u015fletim sistemi olmasa da, temel kurulum ve kullan\u0131m prensipleri modern Ubuntu s\u00fcr\u00fcmlerinde de benzer \u015fekilde uygulanabilir. Amac\u0131m\u0131z, Packer&#8217;\u0131n g\u00fcc\u00fcn\u00fc anlaman\u0131za ve kendi altyap\u0131 otomasyon s\u00fcre\u00e7lerinize entegre etmeye ba\u015flaman\u0131za yard\u0131mc\u0131 olmakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Packer kurulumuna ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki maddelerin haz\u0131r oldu\u011fundan emin olmal\u0131s\u0131n\u0131z:<\/p>\n<p>*   <strong>Ubuntu 12.04 VPS:<\/strong> Bu rehberde Ubuntu 12.04 kullanaca\u011f\u0131m\u0131z i\u00e7in, bu i\u015fletim sistemine sahip \u00e7al\u0131\u015fan bir Sanal \u00d6zel Sunucuya (VPS) ihtiyac\u0131n\u0131z olacakt\u0131r. Sunucuya root eri\u015fimi veya <code>sudo<\/code> yetkisine sahip bir kullan\u0131c\u0131 hesab\u0131n\u0131z olmal\u0131d\u0131r.<br \/>\n*   <strong>SSH Eri\u015fimi:<\/strong> VPS&#8217;inize SSH \u00fczerinden ba\u011flanabilmeniz gerekmektedir. Bunun i\u00e7in bir SSH istemcisi (Linux\/macOS i\u00e7in terminal, Windows i\u00e7in PuTTY veya WSL) kullanabilirsiniz.<br \/>\n*   <strong>Temel Linux Komut Bilgisi:<\/strong> <code>apt-get<\/code>, <code>wget<\/code>, <code>unzip<\/code>, <code>mv<\/code> gibi temel Linux komutlar\u0131na a\u015fina olman\u0131z gerekmektedir.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Packer&#8217;\u0131 indirmek ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 kurmak i\u00e7in VPS&#8217;inizin internet ba\u011flant\u0131s\u0131na sahip olmas\u0131 \u015fartt\u0131r.<br \/>\n*   <strong>Opsiyonel: Bir Bulut Sa\u011flay\u0131c\u0131 Hesab\u0131:<\/strong> Packer ile bir bulut platformunda (AWS, DigitalOcean vb.) bir imaj olu\u015fturmak istiyorsan\u0131z, ilgili bulut sa\u011flay\u0131c\u0131s\u0131nda bir hesab\u0131n\u0131z\u0131n olmas\u0131 ve API anahtarlar\u0131n\u0131z\u0131n (credentials) haz\u0131r olmas\u0131 gerekecektir. Bu rehberde hem lokal VirtualBox \u00f6rne\u011fi hem de AWS \u00f6rne\u011fi sunulacakt\u0131r.<\/p>\n<h3>Ad\u0131m 1: Sistemi G\u00fcncelleme<\/h3>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce, sistem paket listelerini g\u00fcncellemek ve mevcut paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, potansiyel ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nlemeye yard\u0131mc\u0131 olur ve sisteminizin g\u00fcvenli\u011fini art\u0131r\u0131r.<\/p>\n<p>VPS&#8217;inize SSH ile ba\u011fland\u0131ktan sonra a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y<\/code><\/pre>\n<p>*   <code>sudo apt-get update<\/code>: Paket depolar\u0131ndaki mevcut paket listelerini g\u00fcnceller.<br \/>\n*   <code>sudo apt-get upgrade -y<\/code>: Sisteminizdeki t\u00fcm y\u00fckl\u00fc paketleri g\u00fcncel s\u00fcr\u00fcmlerine y\u00fckseltir. <code>-y<\/code> bayra\u011f\u0131, t\u00fcm onay sorular\u0131na otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 verir.<\/p>\n<p>Bu i\u015flem, internet ba\u011flant\u0131n\u0131z\u0131n h\u0131z\u0131na ve g\u00fcncellenecek paketlerin say\u0131s\u0131na ba\u011fl\u0131 olarak birka\u00e7 dakika s\u00fcrebilir.<\/p>\n<h3>Ad\u0131m 2: Gerekli Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00fckleme<\/h3>\n<p>Packer&#8217;\u0131 indirmek ve kurmak i\u00e7in baz\u0131 temel ara\u00e7lara ihtiyac\u0131m\u0131z olacak: <code>wget<\/code> (dosya indirmek i\u00e7in) ve <code>unzip<\/code> (indirilen ar\u015fivi a\u00e7mak i\u00e7in). Bu ara\u00e7lar genellikle Ubuntu sistemlerinde \u00f6n y\u00fckl\u00fc olarak gelir, ancak yine de mevcut olduklar\u0131ndan emin olmak ve eksikse kurmak faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y wget unzip curl<\/code><\/pre>\n<p>*   <code>wget<\/code>: Packer&#8217;\u0131n s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyas\u0131n\u0131 HashiCorp web sitesinden indirmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>unzip<\/code>: \u0130ndirilen ZIP ar\u015fivini a\u00e7mak i\u00e7in gereklidir.<br \/>\n*   <code>curl<\/code>: Bazen HTTP istekleri yapmak veya web i\u00e7eri\u011fini indirmek i\u00e7in kullan\u0131labilir, genel bir ba\u011f\u0131ml\u0131l\u0131kt\u0131r.<\/p>\n<p>Bu komut, belirtilen paketlerin kurulu olup olmad\u0131\u011f\u0131n\u0131 kontrol eder ve eksik olanlar\u0131 y\u00fckler.<\/p>\n<h3>Ad\u0131m 3: Packer&#8217;\u0131 \u0130ndirme<\/h3>\n<p>Packer&#8217;\u0131 do\u011frudan HashiCorp&#8217;un resmi web sitesinden indirece\u011fiz. Packer&#8217;\u0131n Ubuntu 12.04 \u00fczerinde sorunsuz \u00e7al\u0131\u015fmas\u0131 i\u00e7in uyumlu bir s\u00fcr\u00fcm se\u00e7mek \u00f6nemlidir. Genellikle, en son kararl\u0131 s\u00fcr\u00fcm sorunsuz \u00e7al\u0131\u015facakt\u0131r, ancak eski bir i\u015fletim sistemi kulland\u0131\u011f\u0131m\u0131z\u0131 unutmamak gerekir.<\/p>\n<p>\u00d6ncelikle, HashiCorp Packer indirme sayfas\u0131na (releases.hashicorp.com\/packer\/) giderek Linux 64-bit s\u00fcr\u00fcm\u00fc i\u00e7in en son stabil s\u00fcr\u00fcm\u00fcn indirme ba\u011flant\u0131s\u0131n\u0131 bulman\u0131z gerekmektedir. Bu rehber yaz\u0131ld\u0131\u011f\u0131 s\u0131rada varsay\u0131msal olarak bir URL kullanaca\u011f\u0131z, ancak siz kendi zaman\u0131n\u0131zda g\u00fcncel olan\u0131 kullanmal\u0131s\u0131n\u0131z.<\/p>\n<p>\u00d6rnek bir indirme ba\u011flant\u0131s\u0131 (bu ba\u011flant\u0131 zamanla de\u011fi\u015febilir, l\u00fctfen g\u00fcncel olan\u0131 kontrol edin):<\/p>\n<pre><code class=\"language-bash\">wget https:\/\/releases.hashicorp.com\/packer\/1.7.10\/packer_1.7.10_linux_amd64.zip<\/code><\/pre>\n<p>Yukar\u0131daki komut, Packer&#8217;\u0131n belirli bir s\u00fcr\u00fcm\u00fcn\u00fc (bu \u00f6rnekte 1.7.10) Linux AMD64 mimarisi i\u00e7in VPS&#8217;inize indirecektir. \u0130ndirme tamamland\u0131ktan sonra, indirilen ZIP dosyas\u0131n\u0131 a\u00e7man\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">unzip packer_1.7.10_linux_amd64.zip<\/code><\/pre>\n<p>Bu komut, <code>packer<\/code> ad\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131labilir bir dosya olu\u015fturacakt\u0131r.<\/p>\n<h3>Ad\u0131m 4: Packer&#8217;\u0131 PATH&#8217;e Ta\u015f\u0131ma ve Do\u011frulama<\/h3>\n<p>\u0130ndirdi\u011finiz ve a\u00e7t\u0131\u011f\u0131n\u0131z <code>packer<\/code> \u00e7al\u0131\u015ft\u0131r\u0131labilir dosyas\u0131n\u0131, sisteminizin PATH de\u011fi\u015fkeninde bulunan bir dizine ta\u015f\u0131man\u0131z gerekir. Bu, <code>packer<\/code> komutunu herhangi bir dizinden do\u011frudan \u00e7al\u0131\u015ft\u0131rabilmenizi sa\u011flar. <code>\/usr\/local\/bin\/<\/code> dizini, bu t\u00fcr \u00fc\u00e7\u00fcnc\u00fc taraf \u00e7al\u0131\u015ft\u0131r\u0131labilir dosyalar i\u00e7in yayg\u0131n olarak kullan\u0131lan bir yerdir.<\/p>\n<pre><code class=\"language-bash\">sudo mv packer \/usr\/local\/bin\/<\/code><\/pre>\n<p>\u015eimdi, Packer&#8217;\u0131n ba\u015far\u0131yla kuruldu\u011funu ve sistem PATH&#8217;inde eri\u015filebilir oldu\u011funu do\u011frulamak i\u00e7in <code>packer version<\/code> komutunu \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">packer version<\/code><\/pre>\n<p>E\u011fer kurulum ba\u015far\u0131l\u0131 olduysa, terminalinizde y\u00fckl\u00fc Packer s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6rmelisiniz:<\/p>\n<pre><code class=\"language-\">Packer v1.7.10<\/code><\/pre>\n<p>Bu \u00e7\u0131kt\u0131, Packer&#8217;\u0131n Ubuntu 12.04 VPS&#8217;inize ba\u015far\u0131yla kuruldu\u011funu g\u00f6sterir. Art\u0131k Packer komutlar\u0131n\u0131 kullanmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<h3>Ad\u0131m 5: Temel Packer Kavramlar\u0131<\/h3>\n<p>Packer ile \u00e7al\u0131\u015fmaya ba\u015flamadan \u00f6nce, temel yap\u0131 ta\u015flar\u0131n\u0131 anlamak \u00f6nemlidir. Packer, i\u015fini JSON veya HCL (HashiCorp Configuration Language) format\u0131ndaki \u015fablon dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla yapar. Bu \u015fablonlar, makine imaj\u0131n\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131, hangi platformda olu\u015fturulaca\u011f\u0131n\u0131 ve i\u00e7ine nelerin kurulaca\u011f\u0131n\u0131 tan\u0131mlar.<\/p>\n<p>Bir Packer \u015fablonu genellikle a\u015fa\u011f\u0131daki ana bloklardan olu\u015fur:<\/p>\n<p>*   <strong>Builders (Olu\u015fturucular):<\/strong> Bu blok, makine imaj\u0131n\u0131n hangi platformda olu\u015fturulaca\u011f\u0131n\u0131 tan\u0131mlar. Her builder tipi, belirli bir platforma \u00f6zg\u00fcd\u00fcr ve o platformun API&#8217;si veya ara\u00e7lar\u0131yla etkile\u015fime girer. \u00d6rnek builder&#8217;lar:<br \/>\n    *   <code>amazon-ebs<\/code>: AWS EC2 AMI&#8217;leri olu\u015fturmak i\u00e7in.<br \/>\n    *   <code>googlecompute<\/code>: Google Cloud imajlar\u0131 olu\u015fturmak i\u00e7in.<br \/>\n    *   <code>azure-arm<\/code>: Azure sanal makine imajlar\u0131 olu\u015fturmak i\u00e7in.<br \/>\n    *   <code>virtualbox-iso<\/code>: VirtualBox VM&#8217;lerinden ISO tabanl\u0131 imajlar olu\u015fturmak i\u00e7in.<br \/>\n    *   <code>docker<\/code>: Docker imajlar\u0131 olu\u015fturmak i\u00e7in.<br \/>\n*   <strong>Provisioners (Sa\u011flay\u0131c\u0131lar):<\/strong> Bir builder taraf\u0131ndan olu\u015fturulan temel imaj\u0131n i\u00e7ine yaz\u0131l\u0131m kurmak, yap\u0131land\u0131rma dosyalar\u0131n\u0131 kopyalamak veya komut dosyalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r. Provisioner&#8217;lar, imaj\u0131n nihai durumunu tan\u0131mlar. \u00d6rnek provisioner&#8217;lar:<br \/>\n    *   <code>shell<\/code>: Kabuk komut dosyalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in.<br \/>\n    *   <code>ansible<\/code>: Ansible playbook&#8217;lar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in.<br \/>\n    *   <code>chef<\/code>: Chef tariflerini uygulamak i\u00e7in.<br \/>\n    *   <code>file<\/code>: Yerel dosyalar\u0131 imaj\u0131n i\u00e7ine kopyalamak i\u00e7in.<br \/>\n*   <strong>Post-Processors (Son \u0130\u015fleyiciler):<\/strong> \u0130maj olu\u015fturulduktan sonra ek i\u015flemler yapmak i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, olu\u015fturulan bir VMDK dosyas\u0131n\u0131 s\u0131k\u0131\u015ft\u0131rmak, bir Vagrant kutusu olu\u015fturmak veya olu\u015fturulan imaj hakk\u0131nda bir bildirim g\u00f6ndermek i\u00e7in kullan\u0131labilir. \u00d6rnek post-processor&#8217;lar:<br \/>\n    *   <code>manifest<\/code>: Olu\u015fturulan kaynaklar\u0131n bir JSON manifest dosyas\u0131n\u0131 olu\u015fturur.<br \/>\n    *   <code>vagrant<\/code>: Bir VirtualBox imaj\u0131ndan Vagrant kutusu olu\u015fturur.<br \/>\n    *   <code>compress<\/code>: \u0130maj dosyas\u0131n\u0131 s\u0131k\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Variables (De\u011fi\u015fkenler):<\/strong> \u015eablonunuzu daha esnek ve yeniden kullan\u0131labilir hale getirmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, b\u00f6lge adlar\u0131, AMI ID&#8217;leri veya kullan\u0131c\u0131 adlar\u0131 gibi de\u011ferleri de\u011fi\u015fken olarak tan\u0131mlayabilirsiniz.<\/p>\n<h3>Ad\u0131m 6: \u0130lk Packer \u015eablonunuzu Olu\u015fturma<\/h3>\n<p>\u015eimdi, Packer&#8217;\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6stermek i\u00e7in iki farkl\u0131 senaryo i\u00e7in \u015fablonlar olu\u015ftural\u0131m: biri lokal VirtualBox ortam\u0131nda basit bir VM imaj\u0131, di\u011feri ise AWS EC2 \u00fczerinde bir AMI.<\/p>\n<h4>Senaryo 1: Basit bir Shell Provisioner ile VirtualBox VM Olu\u015fturma (Lokal Test \u0130\u00e7in)<\/h4>\n<p>Bu senaryo, Packer&#8217;\u0131 yerel makinenizde (veya bir VPS \u00fczerinde VirtualBox kurulu ise) test etmek i\u00e7in idealdir. Bir VirtualBox sanal makinesi olu\u015fturacak ve i\u00e7ine basit bir komut \u00e7al\u0131\u015ft\u0131raca\u011f\u0131z.<\/p>\n<p><strong>Not:<\/strong> Ubuntu 12.04 VPS&#8217;inizde VirtualBox kurulu olmayabilir. Bu \u00f6rnek, genellikle yerel geli\u015ftirme ortam\u0131n\u0131zda veya VirtualBox kurulu bir sunucuda denenebilir. Ancak Packer&#8217;\u0131n \u015fablon yap\u0131s\u0131n\u0131 anlamak i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<p>\u00d6ncelikle <code>ubuntu-vbox.json<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-json\">{\n  \"variables\": {\n    \"iso_url\": \"http:\/\/releases.ubuntu.com\/16.04\/ubuntu-16.04.7-server-amd64.iso\",\n    \"iso_checksum\": \"sha256:d87870a256a735623f954005b76c8c9a3b5a1b3261763134304892c578051a37\",\n    \"vm_name\": \"packer-ubuntu-vbox-test\"\n  },\n  \"builders\": [\n    {\n      \"type\": \"virtualbox-iso\",\n      \"iso_url\": \"{{user <code>iso_url<\/code>}}\",\n      \"iso_checksum\": \"{{user <code>iso_checksum<\/code>}}\",\n      \"guest_os_type\": \"Ubuntu_64\",\n      \"disk_size\": \"20480\",\n      \"memory\": 1024,\n      \"cpus\": 1,\n      \"headless\": true,\n      \"ssh_username\": \"packer\",\n      \"ssh_password\": \"packer\",\n      \"ssh_wait_timeout\": \"20m\",\n      \"boot_command\": [\n        \"<enter><wait>\",\n        \"<esc><wait>\",\n        \"\/install\/vmlinuz noapic preseed\/url=http:\/\/{{ .HTTPIP }}:{{ .HTTPPort }}\/preseed.cfg \",\n        \"debian-installer=en_US auto locale=en_US kbd-chooser\/method=us \",\n        \"hostname={{user <code>vm_name<\/code>}} \",\n        \"fb=false debconf\/frontend=noninteractive \",\n        \"keyboard-configuration\/modelcode=pc105 keyboard-configuration\/layout=us keyboard-configuration\/variant=us console-setup\/ask_detect=false \",\n        \"initrd=\/install\/initrd.gz -- <enter>\"\n      ],\n      \"http_directory\": \"http\"\n    }\n  ],\n  \"provisioners\": [\n    {\n      \"type\": \"shell\",\n      \"inline\": [\n        \"sudo apt-get update\",\n        \"sudo apt-get install -y nginx\",\n        \"echo 'Merhaba Packer! Bu bir VirtualBox VM.' | sudo tee \/var\/www\/html\/index.nginx-debian.html\",\n        \"sudo systemctl enable nginx\",\n        \"sudo systemctl start nginx\"\n      ]\n    }\n  ],\n  \"post-processors\": [\n    {\n      \"type\": \"manifest\",\n      \"output\": \"manifest-vbox.json\",\n      \"pretty\": true\n    }\n  ]\n}<\/code><\/pre>\n<p><strong>A\u00e7\u0131klamalar:<\/strong><\/p>\n<p>*   <strong><code>variables<\/code><\/strong>: ISO URL&#8217;si, checksum ve VM ad\u0131 gibi de\u011ferleri tan\u0131mlar\u0131z. Bu, \u015fablonu daha esnek hale getirir.<br \/>\n*   <strong><code>builders<\/code><\/strong>: <code>virtualbox-iso<\/code> tipinde bir builder kullan\u0131r\u0131z. Bu, bir ISO dosyas\u0131ndan yeni bir VirtualBox VM olu\u015fturur.<br \/>\n    *   <code>iso_url<\/code> ve <code>iso_checksum<\/code>: Ubuntu 16.04 sunucu ISO&#8217;sunun indirme URL&#8217;si ve SHA256 kontrol toplam\u0131. (Ubuntu 12.04 yerine 16.04 kullan\u0131yorum \u00e7\u00fcnk\u00fc 12.04&#8217;\u00fcn resmi ISO&#8217;su bulmak ve preseed ile otomatik kurulum yapmak daha zor olabilir, ancak prensip ayn\u0131d\u0131r.)<br \/>\n    *   <code>guest_os_type<\/code>: Sanal makinenin i\u015fletim sistemi tipi.<br \/>\n    *   <code>disk_size<\/code>, <code>memory<\/code>, <code>cpus<\/code>: Sanal makinenin donan\u0131m \u00f6zellikleri.<br \/>\n    *   <code>headless<\/code>: VM&#8217;nin arka planda (GUI&#8217;siz) \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<br \/>\n    *   <code>ssh_username<\/code>, <code>ssh_password<\/code>: Packer&#8217;\u0131n SSH \u00fczerinden VM&#8217;ye ba\u011flanmak i\u00e7in kullanaca\u011f\u0131 kimlik bilgileri.<br \/>\n    *   <code>boot_command<\/code>: Otomatik kurulum i\u00e7in gerekli komutlar. Bu, Ubuntu&#8217;nun &#8220;preseed&#8221; \u00f6zelli\u011fini kullanarak kurulumu otomatikle\u015ftirir.<br \/>\n    *   <code>http_directory<\/code>: Preseed dosyas\u0131n\u0131n bulunaca\u011f\u0131 dizin. Bu dizinde <code>preseed.cfg<\/code> ad\u0131nda bir dosya olu\u015fturman\u0131z gerekecektir.<br \/>\n*   <strong><code>provisioners<\/code><\/strong>: <code>shell<\/code> tipinde bir provisioner kullan\u0131r\u0131z.<br \/>\n    *   <code>inline<\/code>: Do\u011frudan \u00e7al\u0131\u015ft\u0131r\u0131lacak kabuk komutlar\u0131n\u0131 i\u00e7erir. Bu \u00f6rnekte, <code>apt-get update<\/code> yapar, <code>nginx<\/code> web sunucusunu kurar ve varsay\u0131lan HTML sayfas\u0131n\u0131 de\u011fi\u015ftiririz.<br \/>\n*   <strong><code>post-processors<\/code><\/strong>: <code>manifest<\/code> post-processor&#8217;\u0131, olu\u015fturulan imaj hakk\u0131nda bilgileri i\u00e7eren bir JSON dosyas\u0131 olu\u015fturur.<\/p>\n<p>Bu \u015fablonu \u00e7al\u0131\u015ft\u0131rabilmek i\u00e7in, <code>http<\/code> ad\u0131nda bir dizin olu\u015fturman\u0131z ve i\u00e7ine basit bir <code>preseed.cfg<\/code> dosyas\u0131 koyman\u0131z gerekir. \u00d6rnek bir <code>preseed.cfg<\/code> dosyas\u0131 (detayl\u0131 bir preseed dosyas\u0131 olduk\u00e7a uzun olabilir, bu sadece minimal bir \u00f6rnek):<\/p>\n<pre><code class=\"language-\"># D-I config version 2.0\nd-i debian-installer\/locale string en_US\nd-i keyboard-configuration\/xkb-keymap select us\nd-i netcfg\/get_hostname string {{user <code>vm_name<\/code>}}\nd-i netcfg\/get_domain string unassigned-domain\nd-i hw-detect\/load_media boolean false\nd-i clock-setup\/utc boolean true\nd-i time\/zone string Europe\/Istanbul\nd-i clock-setup\/ntp boolean true\nd-i partman-auto\/disk string \/dev\/sda\nd-i partman-auto\/method string lvm\nd-i partman-lvm\/confirm boolean true\nd-i partman-auto\/choose_recipe select atomic\nd-i partman-partitioning\/confirm_write_new_label boolean true\nd-i partman\/confirm_write_new_label boolean true\nd-i partman\/confirm boolean true\nd-i passwd\/user-fullname string Packer User\nd-i passwd\/username string packer\nd-i passwd\/user-password password packer\nd-i passwd\/user-password-again password packer\nd-i user-setup\/allow-password-weak boolean true\nd-i user-setup\/encrypt-home boolean false\nd-i base-installer\/install-recommends boolean false\nd-i apt-setup\/restricted boolean true\nd-i apt-setup\/universe boolean true\nd-i apt-setup\/backports boolean true\nd-i apt-setup\/services-select multiselect security, updates\nd-i pkgsel\/language-pack-patterns string\nd-i pkgsel\/install-pattern string openssh-server build-essential\nd-i grub-installer\/only_debian boolean true\nd-i grub-installer\/with_other_os boolean true\nd-i finish-install\/reboot_into_live boolean false\nd-i cdrom-detect\/eject boolean true<\/code><\/pre>\n<p>\u015eimdi \u015fablonu \u00e7al\u0131\u015ft\u0131ral\u0131m:<\/p>\n<pre><code class=\"language-bash\">packer build ubuntu-vbox.json<\/code><\/pre>\n<p>Bu komut, VirtualBox&#8217;\u0131 kullanarak bir VM olu\u015fturacak, Ubuntu&#8217;yu otomatik olarak kuracak, Nginx&#8217;i y\u00fckleyecek ve sonunda bir <code>.ova<\/code> veya <code>.vmdk<\/code> dosyas\u0131 olarak d\u0131\u015fa aktaracakt\u0131r. Bu i\u015flem olduk\u00e7a uzun s\u00fcrebilir.<\/p>\n<h4>Senaryo 2: Cloud Provider \u00dczerinde \u0130lk AMI Olu\u015fturma (\u00d6rnek: AWS EC2)<\/h4>\n<p>Bu senaryo, Packer&#8217;\u0131n bir bulut ortam\u0131nda nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6sterir. AWS EC2 \u00fczerinde bir Amazon Machine Image (AMI) olu\u015fturaca\u011f\u0131z.<\/p>\n<p>AWS ile \u00e7al\u0131\u015fmak i\u00e7in, AWS kimlik bilgilerinizi (Access Key ID ve Secret Access Key) ayarlaman\u0131z gerekmektedir. Bunu ortam de\u011fi\u015fkenleri olarak veya <code>~\/.aws\/credentials<\/code> dosyas\u0131na yazarak yapabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">export AWS_ACCESS_KEY_ID=\"YOUR_AWS_ACCESS_KEY_ID\"\nexport AWS_SECRET_ACCESS_KEY=\"YOUR_AWS_SECRET_ACCESS_KEY\"<\/code><\/pre>\n<p>\u015eimdi <code>aws-ami.json<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-json\">{\n  \"variables\": {\n    \"aws_region\": \"eu-west-1\",\n    \"source_ami\": \"ami-0abcdef1234567890\", \/\/ \u00d6rnek AMI ID, l\u00fctfen kendi b\u00f6lgenizdeki g\u00fcncel bir Ubuntu 18.04 LTS AMI ID'si ile de\u011fi\u015ftirin\n    \"instance_type\": \"t2.micro\",\n    \"ssh_username\": \"ubuntu\",\n    \"ami_name_prefix\": \"packer-ubuntu-webserver\",\n    \"tag_owner\": \"devops-team\"\n  },\n  \"builders\": [\n    {\n      \"type\": \"amazon-ebs\",\n      \"region\": \"{{user <code>aws_region<\/code>}}\",\n      \"source_ami\": \"{{user <code>source_ami<\/code>}}\",\n      \"instance_type\": \"{{user <code>instance_type<\/code>}}\",\n      \"ssh_username\": \"{{user <code>ssh_username<\/code>}}\",\n      \"ami_name\": \"{{user <code>ami_name_prefix<\/code>}}-{{timestamp}}\",\n      \"tags\": {\n        \"Owner\": \"{{user <code>tag_owner<\/code>}}\",\n        \"Purpose\": \"WebServer\",\n        \"CreatedBy\": \"Packer\"\n      },\n      \"run_tags\": {\n        \"Name\": \"{{user <code>ami_name_prefix<\/code>}}-build-instance\"\n      },\n      \"force_deregister\": true,\n      \"force_delete_snapshots\": true\n    }\n  ],\n  \"provisioners\": [\n    {\n      \"type\": \"shell\",\n      \"inline\": [\n        \"echo 'Updating system...'\",\n        \"sudo apt-get update -y\",\n        \"sudo apt-get upgrade -y\",\n        \"echo 'Installing Nginx...'\",\n        \"sudo apt-get install -y nginx\",\n        \"echo 'Setting up Nginx default page...'\",\n        \"echo '' | sudo tee \/var\/www\/html\/index.nginx-debian.html\",\n        \"echo 'Enabling Nginx service...'\",\n        \"sudo systemctl enable nginx\",\n        \"sudo systemctl start nginx\",\n        \"echo 'Cleaning up apt cache...'\",\n        \"sudo apt-get clean\",\n        \"sudo rm -rf \/var\/lib\/apt\/lists\/*\"\n      ]\n    }\n  ],\n  \"post-processors\": [\n    {\n      \"type\": \"manifest\",\n      \"output\": \"manifest-aws.json\",\n      \"pretty\": true\n    }\n  ]\n}<\/code><\/pre>\n<p><strong>A\u00e7\u0131klamalar:<\/strong><\/p>\n<p>*   <strong><code>variables<\/code><\/strong>: AWS b\u00f6lgesi, kaynak AMI ID&#8217;si, instance tipi, SSH kullan\u0131c\u0131 ad\u0131 ve AMI ad\u0131 i\u00e7in \u00f6n ek gibi de\u011ferleri tan\u0131mlar\u0131z.<br \/>\n    *   <strong>\u00d6NEML\u0130:<\/strong> <code>source_ami<\/code> de\u011ferini kendi AWS b\u00f6lgenizdeki g\u00fcncel bir Ubuntu AMI ID&#8217;si ile de\u011fi\u015ftirmelisiniz. \u00d6rne\u011fin, <code>eu-west-1<\/code> b\u00f6lgesinde Ubuntu 18.04 LTS i\u00e7in <code>ami-0abcdef1234567890<\/code> yerine <code>ami-07d2f9d6c753b0e3e<\/code> gibi bir de\u011fer kullanabilirsiniz. G\u00fcncel AMI ID&#8217;lerini AWS konsolundan veya AWS CLI ile bulabilirsiniz.<br \/>\n*   <strong><code>builders<\/code><\/strong>: <code>amazon-ebs<\/code> tipinde bir builder kullan\u0131r\u0131z. Bu, bir EBS destekli AMI olu\u015fturur.<br \/>\n    *   <code>region<\/code>: AMI&#8217;nin olu\u015fturulaca\u011f\u0131 AWS b\u00f6lgesi.<br \/>\n    *   <code>source_ami<\/code>: Packer&#8217;\u0131n \u00fczerine yaz\u0131l\u0131m kurmak i\u00e7in kullanaca\u011f\u0131 temel AMI.<br \/>\n    *   <code>instance_type<\/code>: Packer&#8217;\u0131n ge\u00e7ici olarak imaj\u0131 olu\u015fturmak i\u00e7in ba\u015flataca\u011f\u0131 EC2 instance tipi.<br \/>\n    *   <code>ssh_username<\/code>: Packer&#8217;\u0131n ge\u00e7ici instance&#8217;a SSH ile ba\u011flanmak i\u00e7in kullanaca\u011f\u0131 kullan\u0131c\u0131 ad\u0131 (Ubuntu AMI&#8217;lerinde genellikle <code>ubuntu<\/code>&#8216;dur).<br \/>\n    *   <code>ami_name<\/code>: Olu\u015fturulacak AMI&#8217;nin ad\u0131. <code>{{timestamp}}<\/code> de\u011fi\u015fkeni, her \u00e7al\u0131\u015ft\u0131rmada benzersiz bir ad olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<br \/>\n    *   <code>tags<\/code>: Olu\u015fturulan AMI&#8217;ye eklenecek AWS etiketleri.<br \/>\n    *   <code>run_tags<\/code>: Packer&#8217;\u0131n ge\u00e7ici olarak ba\u015flatt\u0131\u011f\u0131 EC2 instance&#8217;\u0131na eklenecek etiketler.<br \/>\n    *   <code>force_deregister<\/code> ve <code>force_delete_snapshots<\/code>: Eski AMI&#8217;leri ve anl\u0131k g\u00f6r\u00fcnt\u00fcleri temizlemeyi sa\u011flar.<br \/>\n*   <strong><code>provisioners<\/code><\/strong>: <code>shell<\/code> tipinde bir provisioner kullan\u0131r\u0131z. AWS instance&#8217;\u0131na ba\u011fland\u0131ktan sonra \u00e7al\u0131\u015ft\u0131r\u0131lacak komutlar\u0131 i\u00e7erir. Bu \u00f6rnekte, sistemi g\u00fcnceller, Nginx&#8217;i kurar, varsay\u0131lan web sayfas\u0131n\u0131 de\u011fi\u015ftirir ve apt cache&#8217;ini temizleriz.<br \/>\n*   <strong><code>post-processors<\/code><\/strong>: Yine <code>manifest<\/code> post-processor&#8217;\u0131, olu\u015fturulan AMI hakk\u0131nda bilgileri i\u00e7eren bir JSON dosyas\u0131 olu\u015fturur.<\/p>\n<p>\u015eimdi \u015fablonu \u00e7al\u0131\u015ft\u0131ral\u0131m:<\/p>\n<pre><code class=\"language-bash\">packer build aws-ami.json<\/code><\/pre>\n<p>Bu komut, AWS&#8217;de ge\u00e7ici bir EC2 instance&#8217;\u0131 ba\u015flatacak, provisioner komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131racak, ard\u0131ndan bu instance&#8217;tan bir AMI olu\u015fturacak ve son olarak ge\u00e7ici instance&#8217;\u0131 sonland\u0131racakt\u0131r. \u0130\u015flem tamamland\u0131\u011f\u0131nda, AWS konsolunuzda yeni olu\u015fturulan AMI&#8217;yi g\u00f6rebilirsiniz.<\/p>\n<h3>Packer \u015eablonlar\u0131n\u0131n Detayland\u0131r\u0131lmas\u0131<\/h3>\n<p>\u015eimdiye kadar temel bir \u015fablon olu\u015fturduk. Packer&#8217;\u0131n g\u00fcc\u00fcn\u00fc tam olarak kullanmak i\u00e7in \u015fablonlar\u0131n\u0131z\u0131 daha da detayland\u0131rabilirsiniz.<\/p>\n<h4>De\u011fi\u015fken Kullan\u0131m\u0131<\/h4>\n<p>\u015eablonlar\u0131n\u0131zdaki tekrar eden de\u011ferleri veya hassas bilgileri de\u011fi\u015fkenler arac\u0131l\u0131\u011f\u0131yla y\u00f6netmek, \u015fablonlar\u0131n\u0131z\u0131 daha esnek, okunabilir ve g\u00fcvenli hale getirir.<\/p>\n<p><code>variables<\/code> blo\u011funda tan\u0131mlad\u0131\u011f\u0131n\u0131z de\u011fi\u015fkenleri, \u015fablon i\u00e7inde <code>{{user <\/code>variable_name<code>}}<\/code> s\u00f6zdizimi ile kullan\u0131rs\u0131n\u0131z. De\u011fi\u015fkenlere de\u011fer ataman\u0131n birka\u00e7 yolu vard\u0131r:<\/p>\n<p>1.  <strong>\u015eablon i\u00e7inde varsay\u0131lan de\u011ferler:<\/strong> <code>variables<\/code> blo\u011funda <code>default<\/code> anahtar\u0131 ile.<br \/>\n2.  <strong>Komut sat\u0131r\u0131ndan:<\/strong> <code>packer build -var 'key=value' template.json<\/code><br \/>\n3.  <strong>De\u011fi\u015fken dosyalar\u0131ndan:<\/strong> <code>packer build -var-file=vars.json template.json<\/code>. <code>vars.json<\/code> dosyas\u0131 <code>{ \"key\": \"value\" }<\/code> format\u0131nda olmal\u0131d\u0131r.<br \/>\n4.  <strong>Ortam de\u011fi\u015fkenleri:<\/strong> <code>PACKER_VAR_key=value packer build template.json<\/code><\/p>\n<p>\u00d6rne\u011fin, <code>aws-ami.json<\/code> dosyas\u0131ndaki <code>aws_region<\/code> de\u011fi\u015fkenini komut sat\u0131r\u0131ndan ge\u00e7irmek isteyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">packer build -var 'aws_region=us-east-1' aws-ami.json<\/code><\/pre>\n<p>Bu, \u015fablonunuzu farkl\u0131 AWS b\u00f6lgelerinde yeniden kullanman\u0131z\u0131 sa\u011flar.<\/p>\n<h4>Birden Fazla Provisioner ve Harici Komut Dosyalar\u0131<\/h4>\n<p>Yukar\u0131daki \u00f6rneklerde <code>inline<\/code> komutlar kulland\u0131k. Ancak daha karma\u015f\u0131k kurulumlar i\u00e7in komut dosyalar\u0131n\u0131 harici dosyalarda tutmak ve <code>script<\/code> anahtar\u0131n\u0131 kullanarak bunlar\u0131 \u00e7a\u011f\u0131rmak daha iyi bir yakla\u015f\u0131md\u0131r.<\/p>\n<p>\u00d6rne\u011fin, Nginx kurulum komutlar\u0131n\u0131 <code>scripts\/install_nginx.sh<\/code> ad\u0131nda bir dosyaya ta\u015f\u0131yal\u0131m:<\/p>\n<p><strong><code>scripts\/install_nginx.sh<\/code>:<\/strong><\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\nset -e # Herhangi bir komut ba\u015far\u0131s\u0131z olursa beti\u011fi durdur\n\necho \"Updating system...\"\nsudo apt-get update -y\nsudo apt-get upgrade -y\n\necho \"Installing Nginx...\"\nsudo apt-get install -y nginx\n\necho \"Setting up Nginx default page...\"\necho '' | sudo tee \/var\/www\/html\/index.nginx-debian.html\n\necho \"Enabling Nginx service...\"\nsudo systemctl enable nginx\nsudo systemctl start nginx\n\necho \"Cleaning up apt cache...\"\nsudo apt-get clean\nsudo rm -rf \/var\/lib\/apt\/lists\/*<\/code><\/pre>\n<p>\u015eimdi <code>aws-ami.json<\/code> dosyas\u0131ndaki provisioner blo\u011funu g\u00fcncelleyebiliriz:<\/p>\n<pre><code class=\"language-json\">\"provisioners\": [\n    {\n      \"type\": \"shell\",\n      \"script\": \"scripts\/install_nginx.sh\"\n    }\n  ],<\/code><\/pre>\n<p>Ayr\u0131ca, <code>file<\/code> provisioner&#8217;\u0131 kullanarak yerel makinenizdeki dosyalar\u0131 olu\u015fturulan imaj\u0131n i\u00e7ine kopyalayabilirsiniz. \u00d6rne\u011fin, \u00f6zel bir yap\u0131land\u0131rma dosyas\u0131n\u0131 kopyalamak i\u00e7in:<\/p>\n<pre><code class=\"language-json\">\"provisioners\": [\n    {\n      \"type\": \"file\",\n      \"source\": \"configs\/nginx.conf\",\n      \"destination\": \"\/tmp\/nginx.conf\"\n    },\n    {\n      \"type\": \"shell\",\n      \"inline\": [\n        \"sudo mv \/tmp\/nginx.conf \/etc\/nginx\/nginx.conf\",\n        \"sudo systemctl restart nginx\"\n      ]\n    }\n  ],<\/code><\/pre>\n<p>Bu, \u015fablonlar\u0131n\u0131z\u0131 daha mod\u00fcler ve y\u00f6netilebilir hale getirir.<\/p>\n<h4>Post-Processors ile Ek \u0130\u015flemler<\/h4>\n<p><code>manifest<\/code> post-processor&#8217;\u0131, olu\u015fturulan imaj hakk\u0131nda meta verileri (ID, ad\u0131, b\u00f6lge vb.) i\u00e7eren bir JSON dosyas\u0131 \u00e7\u0131kt\u0131s\u0131 verir. Bu, CI\/CD pipeline&#8217;lar\u0131nda veya otomasyon betiklerinde olu\u015fturulan imaj\u0131n ID&#8217;sini programatik olarak almak i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>Di\u011fer pop\u00fcler post-processor&#8217;lar aras\u0131nda <code>vagrant<\/code> (VirtualBox imaj\u0131ndan Vagrant kutusu olu\u015fturmak i\u00e7in) veya <code>compress<\/code> (VM imajlar\u0131n\u0131 s\u0131k\u0131\u015ft\u0131rmak i\u00e7in) bulunur.<\/p>\n<h3>\u0130leri Seviye Kullan\u0131m \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p>Packer ile \u00e7al\u0131\u015f\u0131rken verimlili\u011fi ve g\u00fcvenilirli\u011fi art\u0131rmak i\u00e7in baz\u0131 en iyi uygulamalar\u0131 takip etmek \u00f6nemlidir:<\/p>\n<p>*   <strong>Versiyon Kontrol\u00fc:<\/strong> T\u00fcm Packer \u015fablonlar\u0131n\u0131z\u0131 (JSON\/HCL dosyalar\u0131, provisioner betikleri, preseed dosyalar\u0131 vb.) bir versiyon kontrol sisteminde (\u00f6rne\u011fin Git) saklay\u0131n. Bu, de\u011fi\u015fiklikleri takip etmenizi, geri alman\u0131z\u0131 ve i\u015fbirli\u011fi yapman\u0131z\u0131 sa\u011flar.<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> Hassas bilgileri (API anahtarlar\u0131, parolalar) do\u011frudan \u015fablon dosyalar\u0131na yazmaktan ka\u00e7\u0131n\u0131n. Bunun yerine, ortam de\u011fi\u015fkenlerini, <code>packer build<\/code> komutunun <code>-var<\/code> veya <code>-var-file<\/code> se\u00e7eneklerini, ya da Vault gibi bir gizli y\u00f6netim \u00e7\u00f6z\u00fcm\u00fcn\u00fc kullan\u0131n.<br \/>\n*   <strong>\u0130dempotent Provisioning:<\/strong> Provisioner betiklerinizin &#8220;idempotent&#8221; oldu\u011fundan emin olun. Yani, beti\u011fi birden fazla kez \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda her zaman ayn\u0131 sonucu vermeli ve mevcut kurulumu bozmamal\u0131d\u0131r. \u00d6rne\u011fin, <code>apt-get install -y<\/code> komutu zaten kurulu olan bir paketi tekrar kurmaya \u00e7al\u0131\u015fmaz. Ansible veya Chef gibi yap\u0131land\u0131rma y\u00f6netimi ara\u00e7lar\u0131 bu konuda do\u011fal olarak daha iyidir.<br \/>\n*   <strong>K\u00fc\u00e7\u00fck ve Odakl\u0131 \u0130majlar:<\/strong> Olu\u015fturdu\u011funuz imajlar\u0131 olabildi\u011fince k\u00fc\u00e7\u00fck ve minimalist tutun. Yaln\u0131zca ihtiyac\u0131n\u0131z olan yaz\u0131l\u0131mlar\u0131 ve hizmetleri kurun. Bu, da\u011f\u0131t\u0131m s\u00fcrelerini k\u0131salt\u0131r, g\u00fcvenlik y\u00fczeyini azalt\u0131r ve kaynak t\u00fcketimini d\u00fc\u015f\u00fcr\u00fcr.<br \/>\n*   <strong>Test Etme:<\/strong> Olu\u015fturdu\u011funuz imajlar\u0131 da\u011f\u0131tmadan \u00f6nce test edin. Serverspec veya InSpec gibi ara\u00e7lar, imaj\u0131n beklendi\u011fi gibi yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in kullan\u0131labilir. Packer, test a\u015famas\u0131n\u0131 da otomatize etmek i\u00e7in \u00e7e\u015fitli entegrasyonlar sunar.<br \/>\n*   <strong>S\u00fcrekli Entegrasyon (CI):<\/strong> Packer&#8217;\u0131 bir CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) pipeline&#8217;\u0131na entegre edin. Her kod de\u011fi\u015fikli\u011finde yeni imajlar\u0131n otomatik olarak olu\u015fturulmas\u0131n\u0131 ve test edilmesini sa\u011flay\u0131n. Bu, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc h\u0131zland\u0131r\u0131r ve hatalar\u0131 erken yakalaman\u0131za yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Temizlik:<\/strong> Packer, ge\u00e7ici olarak ba\u015flatt\u0131\u011f\u0131 kaynaklar\u0131 (EC2 instance&#8217;lar\u0131, VirtualBox VM&#8217;leri) genellikle otomatik olarak temizler. Ancak bazen bir hata durumunda bu kaynaklar kalabilir. Packer&#8217;\u0131n <code>force_deregister<\/code> ve <code>force_delete_snapshots<\/code> gibi se\u00e7eneklerini kullanarak temizli\u011fi otomatikle\u015ftirebilirsiniz. Ayr\u0131ca, d\u00fczenli olarak bulut sa\u011flay\u0131c\u0131n\u0131z\u0131n konsolunu kontrol ederek gereksiz kaynaklar\u0131n olmad\u0131\u011f\u0131ndan emin olun.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Packer ile \u00e7al\u0131\u015f\u0131rken sorunlarla kar\u015f\u0131la\u015fabilirsiniz. \u0130\u015fte baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>SSH Ba\u011flant\u0131 Sorunlar\u0131:<\/strong><br \/>\n    *   <strong>G\u00fcvenlik Gruplar\u0131\/Firewall:<\/strong> Bulut sa\u011flay\u0131c\u0131n\u0131zda (AWS Security Groups, Azure Network Security Groups) SSH (port 22) trafi\u011fine izin verdi\u011finizden emin olun.<br \/>\n    *   <strong>Kullan\u0131c\u0131 Ad\u0131\/Parola:<\/strong> <code>ssh_username<\/code> ve <code>ssh_password<\/code> (veya SSH anahtar\u0131) bilgilerinin do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   <strong><code>ssh_wait_timeout<\/code>:<\/strong> Packer&#8217;\u0131n VM&#8217;nin ba\u015flat\u0131lmas\u0131n\u0131 ve SSH&#8217;in eri\u015filebilir olmas\u0131n\u0131 beklemesi i\u00e7in yeterli s\u00fcre tan\u0131y\u0131n. \u00d6zellikle yava\u015f sistemlerde bu s\u00fcreyi art\u0131rmak gerekebilir.<br \/>\n*   <strong>Provisioner Hatalar\u0131:<\/strong><br \/>\n    *   <strong>Komut Hatalar\u0131:<\/strong> Provisioner betiklerinizdeki veya <code>inline<\/code> komutlar\u0131n\u0131zdaki s\u00f6zdizimi hatalar\u0131n\u0131 veya eksik ba\u011f\u0131ml\u0131l\u0131klar\u0131 kontrol edin. <code>set -e<\/code> komutunu betiklerinizin ba\u015f\u0131na eklemek, hatan\u0131n nerede meydana geldi\u011fini anlaman\u0131za yard\u0131mc\u0131 olabilir.<br \/>\n    *   <strong><code>sudo<\/code> Kullan\u0131m\u0131:<\/strong> \u00c7o\u011fu kurulum komutu <code>sudo<\/code> yetkisi gerektirir. Komutlar\u0131n\u0131z\u0131n <code>sudo<\/code> ile \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>Builder Hatalar\u0131:<\/strong><br \/>\n    *   <strong>Kaynak AMI\/ISO Bulunamad\u0131:<\/strong> <code>source_ami<\/code> veya <code>iso_url<\/code> de\u011ferlerinin do\u011fru ve eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n    *   <strong>Kimlik Bilgileri:<\/strong> Bulut sa\u011flay\u0131c\u0131n\u0131z i\u00e7in API kimlik bilgilerinizin do\u011fru ve yeterli yetkilere sahip oldu\u011fundan emin olun.<br \/>\n*   <strong>Hata Ay\u0131klama (Debugging):<\/strong><br \/>\n    *   <code>packer build -debug template.json<\/code>: Bu komut, Packer&#8217;\u0131n her ad\u0131m\u0131 duraklatmas\u0131na ve manuel olarak devam etmenize olanak tan\u0131r. Bu, SSH ba\u011flant\u0131lar\u0131n\u0131 veya provisioner ad\u0131mlar\u0131n\u0131 manuel olarak kontrol etmek i\u00e7in \u00e7ok faydal\u0131d\u0131r.<br \/>\n    *   <code>packer build -on-error=cleanup\/abort\/run-provisioner<\/code>: Hata durumunda Packer&#8217;\u0131n ne yapaca\u011f\u0131n\u0131 belirler. <code>cleanup<\/code> varsay\u0131land\u0131r, <code>abort<\/code> hatada durur ve kaynaklar\u0131 b\u0131rak\u0131r (sorunu incelemek i\u00e7in), <code>run-provisioner<\/code> hata olsa bile provisioner&#8217;lar\u0131 \u00e7al\u0131\u015ft\u0131rmaya devam eder.<br \/>\n    *   Packer&#8217;\u0131n terminal \u00e7\u0131kt\u0131s\u0131n\u0131 dikkatlice okuyun. Genellikle hatan\u0131n nedenini veya nerede meydana geldi\u011fini g\u00f6steren ipu\u00e7lar\u0131 i\u00e7erir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Packer&#8217;\u0131 Ubuntu 12.04 VPS \u00fczerine nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve temel d\u00fczeyde nas\u0131l kullanmaya ba\u015flayaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde ele ald\u0131k. Packer&#8217;\u0131n, de\u011fi\u015fmez altyap\u0131 prensiplerini benimseyerek sunucu imaj\u0131 olu\u015fturma s\u00fcre\u00e7lerinizi otomatikle\u015ftirmedeki ve tutarl\u0131l\u0131\u011f\u0131 sa\u011flamadaki kritik rol\u00fcn\u00fc vurgulad\u0131k.<\/p>\n<p>Kurulum ad\u0131mlar\u0131ndan sonra, VirtualBox ve AWS EC2 \u00fczerinde iki farkl\u0131 senaryo i\u00e7in basit Packer \u015fablonlar\u0131 olu\u015fturduk. Bu \u015fablonlar, <code>builders<\/code>, <code>provisioners<\/code> ve <code>post-processors<\/code> gibi temel Packer kavramlar\u0131n\u0131 pratik \u00f6rneklerle anlaman\u0131za yard\u0131mc\u0131 oldu. Ayr\u0131ca, de\u011fi\u015fken kullan\u0131m\u0131, harici komut dosyalar\u0131 ve ileri seviye kullan\u0131m ipu\u00e7lar\u0131 ile \u015fablonlar\u0131n\u0131z\u0131 nas\u0131l daha g\u00fc\u00e7l\u00fc ve y\u00f6netilebilir hale getirebilece\u011finizi g\u00f6sterdik.<\/p>\n<p>Packer, DevOps ve altyap\u0131 otomasyonu d\u00fcnyas\u0131nda paha bi\u00e7ilmez bir ara\u00e7t\u0131r. Temel kurulum ve kullan\u0131m ad\u0131mlar\u0131n\u0131 \u00f6\u011frendikten sonra, Packer&#8217;\u0131 kendi \u00f6zel ihtiya\u00e7lar\u0131n\u0131za g\u00f6re uyarlayabilir, daha karma\u015f\u0131k imajlar olu\u015fturabilir ve farkl\u0131 bulut sa\u011flay\u0131c\u0131lar\u0131 veya sanalla\u015ft\u0131rma platformlar\u0131 ile entegre edebilirsiniz. Unutmay\u0131n, iyi bir altyap\u0131 otomasyonu, h\u0131zl\u0131, g\u00fcvenilir ve \u00f6l\u00e7eklenebilir sistemlerin temelini olu\u015fturur. Packer ile bu temeli sa\u011flam bir \u015fekilde atabilirsiniz. Gelecekte, olu\u015fturdu\u011funuz bu temel imajlar\u0131 Terraform, Ansible veya di\u011fer ara\u00e7larla birle\u015ftirerek u\u00e7tan uca altyap\u0131 da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizi tamamen otomatikle\u015ftirebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Packer&#8217;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi\nGiri\u015f: Packer ve Neden \u00d6nemli?\nG\u00fcn\u00fcm\u00fcz modern altyap\u0131 y\u00f6netiminde","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":[1468],"tags":[],"class_list":{"0":"post-36339","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","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>Packer&#039;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi - 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\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Packer&#039;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi\" \/>\n<meta property=\"og:description\" content=\"Packer&#039;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi Giri\u015f: Packer ve Neden \u00d6nemli? G\u00fcn\u00fcm\u00fcz modern altyap\u0131 y\u00f6netiminde\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-13T21:40:55+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=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Packer&#8217;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi\",\"datePublished\":\"2025-12-13T21:40:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/\"},\"wordCount\":3447,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/\",\"name\":\"Packer'\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-13T21:40:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Packer&#8217;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi\"}]},{\"@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":"Packer'\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi - 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\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Packer'\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi","og_description":"Packer'\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi Giri\u015f: Packer ve Neden \u00d6nemli? G\u00fcn\u00fcm\u00fcz modern altyap\u0131 y\u00f6netiminde","og_url":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-13T21:40:55+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Packer&#8217;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi","datePublished":"2025-12-13T21:40:55+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/"},"wordCount":3447,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/","name":"Packer'\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-13T21:40:55+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/packeri-ubuntu-12-04-vps-uzerine-kurulumu-ve-kullanmaya-baslama-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Packer&#8217;\u0131 Ubuntu 12.04 VPS \u00dczerine Kurulumu ve Kullanmaya Ba\u015flama Rehberi"}]},{"@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\/36339","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=36339"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36339\/revisions"}],"predecessor-version":[{"id":36340,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36339\/revisions\/36340"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}