{"id":41746,"date":"2026-05-13T14:02:36","date_gmt":"2026-05-13T11:02:36","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/"},"modified":"2026-05-13T14:02:36","modified_gmt":"2026-05-13T11:02:36","slug":"neden-ansible-ile-docker-kurulumu-yapmaliyiz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/","title":{"rendered":"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?"},"content":{"rendered":"<p>Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde otomasyon, hem zaman tasarrufu hem de tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir rol oynar. Bu kapsaml\u0131 rehberde, pop\u00fcler otomasyon arac\u0131 Ansible&#8217;\u0131 kullanarak Ubuntu sunucular\u0131na Docker&#8217;\u0131 nas\u0131l h\u0131zl\u0131, verimli ve tekrarlanabilir bir \u015fekilde kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Manuel kurulumun getirdi\u011fi zorluklar\u0131 a\u015farak, altyap\u0131 y\u00f6netim s\u00fcre\u00e7lerinizi kolayla\u015ft\u0131rmak ve modern yaz\u0131l\u0131m mimarilerine sorunsuz bir ge\u00e7i\u015f yapmak i\u00e7in gerekli t\u00fcm pratik bilgileri ve kod \u00f6rneklerini bu makalede bulacaks\u0131n\u0131z.<\/p>\n<h2>Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen teknoloji d\u00fcnyas\u0131nda, yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri hi\u00e7 olmad\u0131\u011f\u0131 kadar dinamik hale gelmi\u015ftir. Uygulamalar\u0131m\u0131z\u0131 konteynerize ederek daha izole, ta\u015f\u0131nabilir ve \u00f6l\u00e7eklenebilir hale getirmek, sekt\u00f6rde standart bir yakla\u015f\u0131m haline gelmi\u015ftir. Bu noktada Docker, konteyner teknolojisinin \u00f6nc\u00fcs\u00fc olarak kar\u015f\u0131m\u0131za \u00e7\u0131kar. Ancak Docker&#8217;\u0131 tek bir sunucuya manuel olarak kurmak nispeten basit olsa da, birden fazla sunucuya veya s\u00fcrekli de\u011fi\u015fen ortamlara tutarl\u0131 bir \u015fekilde da\u011f\u0131tmak, karma\u015f\u0131k ve hataya a\u00e7\u0131k bir s\u00fcre\u00e7 olabilir. \u0130\u015fte tam da bu noktada Ansible gibi bir otomasyon arac\u0131 devreye girer ve manuel s\u00fcre\u00e7lerin getirdi\u011fi t\u00fcm zorluklar\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<p>Manuel kurulumlar, her sunucuda farkl\u0131 ad\u0131mlar\u0131n uygulanmas\u0131na veya g\u00f6zden ka\u00e7an detaylara yol a\u00e7arak ortamlar aras\u0131nda tutars\u0131zl\u0131klar yaratabilir. Bu tutars\u0131zl\u0131klar, geli\u015ftirme, test ve \u00fcretim ortamlar\u0131nda beklenmedik davran\u0131\u015flara, hata ay\u0131klama s\u00fcre\u00e7lerinin uzamas\u0131na ve en \u00f6nemlisi zaman kayb\u0131na neden olabilir. Ayr\u0131ca, g\u00fcvenlik g\u00fcncellemeleri veya yeni s\u00fcr\u00fcmler \u00e7\u0131kt\u0131\u011f\u0131nda, her sunucuya tek tek ba\u011flan\u0131p ayn\u0131 i\u015flemleri tekrarlamak, \u00f6zellikle b\u00fcy\u00fck altyap\u0131larda ciddi bir i\u015f y\u00fck\u00fc olu\u015fturur. Bu durum, hem operasyonel maliyetleri art\u0131r\u0131r hem de insan hatas\u0131 riskini y\u00fckseltir. Dahas\u0131, el ile yap\u0131lan i\u015flemler genellikle belgelenmesi zor oldu\u011fundan, ekip \u00fcyeleri aras\u0131nda bilgi aktar\u0131m\u0131 da zorla\u015f\u0131r.<\/p>\n<p>Ansible, bu sorunlara zarif ve etkili bir \u00e7\u00f6z\u00fcm sunar. Agent-less (arac\u0131 gerektirmeyen) mimarisi sayesinde y\u00f6netilen sunuculara herhangi bir yaz\u0131l\u0131m y\u00fcklemeye gerek kalmadan SSH \u00fczerinden ileti\u015fim kurar. Bu \u00f6zellik, kurulum ve yap\u0131land\u0131rma s\u00fcre\u00e7lerini basitle\u015ftirir ve g\u00fcvenlik risklerini azalt\u0131r. Ansible playbook&#8217;lar\u0131, YAML format\u0131nda yaz\u0131lm\u0131\u015f basit ve okunabilir dosyalard\u0131r. Bu playbook&#8217;lar, belirli bir g\u00f6revi (\u00f6rne\u011fin Docker kurulumu) tan\u0131mlayan bir dizi ad\u0131mdan olu\u015fur. Bu sayede, t\u00fcm kurulum ad\u0131mlar\u0131 kod olarak belgelenmi\u015f olur ve tekrarlanabilirlik garanti alt\u0131na al\u0131n\u0131r. Bir playbook&#8217;u defalarca \u00e7al\u0131\u015ft\u0131rmak, her zaman ayn\u0131 sonucu verir, \u00e7\u00fcnk\u00fc Ansible&#8217;\u0131n idempotent (etkisiz tekrarlama) yap\u0131s\u0131, bir g\u00f6revin yaln\u0131zca gerekli oldu\u011funda uygulanmas\u0131n\u0131 sa\u011flar. Yani Docker zaten kuruluysa, Ansible yeniden kurmaya \u00e7al\u0131\u015fmaz, sadece mevcut durumu do\u011frular.<\/p>\n<p>Ansible&#8217;\u0131n \u00f6l\u00e7eklenebilirlik yetene\u011fi de g\u00f6z ard\u0131 edilemez. \u0130ster tek bir sunucuya, ister y\u00fczlerce sunucuya Docker kurman\u0131z gereksin, ayn\u0131 playbook&#8217;u kullanarak t\u00fcm ortam\u0131n\u0131z\u0131 saniyeler i\u00e7inde yap\u0131land\u0131rabilirsiniz. Bu, \u00f6zellikle bulut ortamlar\u0131nda dinamik olarak b\u00fcy\u00fcyen altyap\u0131lar i\u00e7in paha bi\u00e7ilmez bir avantajd\u0131r. Yeni bir sunucuya ihtiyac\u0131n\u0131z oldu\u011funda, Ansible playbook&#8217;unuzu \u00e7al\u0131\u015ft\u0131rarak saniyeler i\u00e7inde Docker kurulu, \u00fcretime haz\u0131r bir makine elde edebilirsiniz. B\u00f6ylece, geli\u015ftiriciler ve operasyon ekipleri, altyap\u0131 kurulumuyla u\u011fra\u015fmak yerine, as\u0131l i\u015flerine, yani uygulama geli\u015ftirmeye ve da\u011f\u0131tmaya odaklanabilirler. \u00d6zetle, Ansible ile Docker kurulumu, hem verimlili\u011fi art\u0131ran hem de olas\u0131 hatalar\u0131 minimize eden modern bir yakla\u015f\u0131md\u0131r. Bu makale boyunca, bu g\u00fc\u00e7l\u00fc ikilinin nas\u0131l bir araya getirilece\u011fini detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h2>Temel Kavramlar: Ansible ve Docker&#8217;\u0131 Yak\u0131ndan Tan\u0131yal\u0131m<\/h2>\n<p>Otomasyon ve konteynerle\u015fme d\u00fcnyas\u0131na ad\u0131m atmadan \u00f6nce, bu iki temel teknolojinin ne anlama geldi\u011fini ve nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. Ansible, altyap\u0131 otomasyonu i\u00e7in tasarlanm\u0131\u015f bir ara\u00e7ken, Docker uygulama konteynerle\u015fmesi i\u00e7in bir platformdur. Her ikisi de modern DevOps pratiklerinin vazge\u00e7ilmez bile\u015fenleridir ve birlikte kullan\u0131ld\u0131klar\u0131nda muazzam bir sinerji yarat\u0131rlar. Bu b\u00f6l\u00fcmde, bu iki teknolojinin temel prensiplerini ve neden bu kadar pop\u00fcler olduklar\u0131n\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.<\/p>\n<h3>Ansible Nedir ve Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>Ansible, Red Hat taraf\u0131ndan geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir BT otomasyon motorudur. Konfig\u00fcrasyon y\u00f6netimi, uygulama da\u011f\u0131t\u0131m\u0131, g\u00f6rev otomasyonu gibi \u00e7e\u015fitli alanlarda kullan\u0131l\u0131r. Ansible&#8217;\u0131 di\u011fer otomasyon ara\u00e7lar\u0131ndan ay\u0131ran en \u00f6nemli \u00f6zelliklerden biri, &#8220;agent-less&#8221; mimarisidir. Yani, y\u00f6netilen sunuculara herhangi bir \u00f6zel yaz\u0131l\u0131m veya &#8220;agent&#8221; y\u00fcklemenize gerek kalmaz. Bunun yerine, SSH protokol\u00fc \u00fczerinden uzaktan ba\u011flant\u0131 kurar ve Python tabanl\u0131 mod\u00fcller arac\u0131l\u0131\u011f\u0131yla g\u00f6revleri yerine getirir. Bu, kurulumu ve bak\u0131m\u0131 olduk\u00e7a basitle\u015ftirir, \u00e7\u00fcnk\u00fc ek bir ba\u011f\u0131ml\u0131l\u0131k veya servis y\u00f6netimi y\u00fck\u00fc getirmez.<\/p>\n<p>Ansible, bir &#8220;kontrol d\u00fc\u011f\u00fcm\u00fc&#8221; (control node) \u00fczerinden \u00e7al\u0131\u015f\u0131r. Bu kontrol d\u00fc\u011f\u00fcm\u00fc, Ansible&#8217;\u0131n kurulu oldu\u011fu ve playbook&#8217;lar\u0131n \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131 makinedir. Y\u00f6netilen sunuculara ise &#8220;y\u00f6netilen d\u00fc\u011f\u00fcmler&#8221; (managed nodes) veya &#8220;hedef makineler&#8221; denir. Ansible, bu d\u00fc\u011f\u00fcmleri bir &#8220;envanter dosyas\u0131&#8221; (inventory file) arac\u0131l\u0131\u011f\u0131yla tan\u0131mlar. Bu dosya, y\u00f6netilecek sunucular\u0131n IP adreslerini, ana bilgisayar adlar\u0131n\u0131 ve ba\u011flant\u0131 bilgilerini i\u00e7erir. Playbook&#8217;lar ise, YAML format\u0131nda yaz\u0131lm\u0131\u015f, okunmas\u0131 kolay dosyalard\u0131r ve belirli bir g\u00f6revi ger\u00e7ekle\u015ftirmek i\u00e7in ad\u0131m ad\u0131m talimatlar\u0131 bar\u0131nd\u0131r\u0131r. Her bir ad\u0131m, bir &#8220;g\u00f6rev&#8221; (task) olarak adland\u0131r\u0131l\u0131r ve Ansible&#8217;\u0131n yerle\u015fik mod\u00fcllerinden birini kullanarak belirli bir i\u015flemi (\u00f6rne\u011fin paket y\u00fckleme, servis ba\u015flatma, dosya kopyalama) ger\u00e7ekle\u015ftirir. Ansible&#8217;\u0131n &#8220;idempotent&#8221; yap\u0131s\u0131, bir playbook&#8217;u birden fazla kez \u00e7al\u0131\u015ft\u0131rsan\u0131z bile, sistemin istenen duruma gelmesini ve bu durum zaten mevcutsa herhangi bir de\u011fi\u015fiklik yapmamas\u0131n\u0131 sa\u011flar. Bu \u00f6zellik, \u00f6zellikle altyap\u0131 y\u00f6netimi ve tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan \u00e7ok de\u011ferlidir.<\/p>\n<h3>Docker Nedir ve Konteynerle\u015fme Neden \u00d6nemli?<\/h3>\n<p>Docker, uygulamalar\u0131 &#8220;konteyner&#8221; ad\u0131 verilen izole edilmi\u015f ve ta\u015f\u0131nabilir birimler i\u00e7inde paketlemek i\u00e7in kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir platformdur. Konteynerler, uygulamay\u0131 ve t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (k\u00fct\u00fcphaneler, ayarlar vb.) bir araya getirerek, farkl\u0131 ortamlarda tutarl\u0131 bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Geleneksel sanal makineler (VM&#8217;ler) ile kar\u015f\u0131la\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, konteynerler \u00e7ok daha hafif ve h\u0131zl\u0131d\u0131r. Bir VM, kendi i\u015fletim sistemini i\u00e7erirken, konteynerler ana bilgisayar\u0131n i\u015fletim sistemi \u00e7ekirde\u011fini payla\u015f\u0131r. Bu, konteynerlerin saniyeler i\u00e7inde ba\u015flat\u0131labilmesini ve \u00e7ok daha az kaynak t\u00fcketmesini sa\u011flar.<\/p>\n<p>Konteynerle\u015fmenin \u00f6nemi birka\u00e7 temel noktada toplan\u0131r. Birincisi, &#8220;\u00e7al\u0131\u015f\u0131rsa, her yerde \u00e7al\u0131\u015f\u0131r&#8221; prensibini m\u00fcmk\u00fcn k\u0131lar. Geli\u015ftirme ortam\u0131n\u0131zda \u00e7al\u0131\u015fan bir uygulama, test ve \u00fcretim ortamlar\u0131nda da ayn\u0131 \u015fekilde \u00e7al\u0131\u015facakt\u0131r, \u00e7\u00fcnk\u00fc t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 konteyner i\u00e7inde paketlenmi\u015ftir. Bu, &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; sendromunu ortadan kald\u0131r\u0131r ve geli\u015ftirme ile operasyon ekipleri aras\u0131ndaki s\u00fcrt\u00fc\u015fmeyi azalt\u0131r. \u0130kincisi, izolasyon sa\u011flar. Her konteyner, kendi kaynaklar\u0131na (CPU, bellek, a\u011f) sahip ayr\u0131 bir i\u015flem olarak \u00e7al\u0131\u015f\u0131r ve di\u011fer konteynerlerden izole edilmi\u015ftir. Bu, bir uygulaman\u0131n di\u011ferini etkilemesini engeller ve g\u00fcvenlik risklerini azalt\u0131r. \u00dc\u00e7\u00fcnc\u00fcs\u00fc, h\u0131zl\u0131 da\u011f\u0131t\u0131m ve \u00f6l\u00e7eklenebilirlik sunar. Konteynerler h\u0131zla ba\u015flat\u0131l\u0131p durdurulabildi\u011fi i\u00e7in, uygulamalar\u0131n da\u011f\u0131t\u0131m\u0131 ve yatay \u00f6l\u00e7eklenmesi \u00e7ok daha kolay hale gelir. Bu da modern mikroservis mimarileri ve bulut tabanl\u0131 uygulamalar i\u00e7in ideal bir \u00e7\u00f6z\u00fcm sunar. Docker, bu avantajlar\u0131 sa\u011flayarak yaz\u0131l\u0131m geli\u015ftirme, test etme ve da\u011f\u0131tma \u015feklimizi k\u00f6kten de\u011fi\u015ftirmi\u015ftir. Ansible ile Docker&#8217;\u0131 bir araya getirmek, bu avantajlar\u0131 otomatikle\u015ftirilmi\u015f ve tekrarlanabilir bir s\u00fcre\u00e7le elde etmemizi sa\u011flar.<\/p>\n<h2>Ansible Ortam\u0131n\u0131 Haz\u0131rlama: Kontrol D\u00fc\u011f\u00fcm\u00fcn\u00fcz\u00fc Kurma<\/h2>\n<p>Ansible ile Docker kurulumuna ba\u015flamadan \u00f6nce, otomasyon s\u00fcrecini y\u00f6netecek olan kontrol d\u00fc\u011f\u00fcm\u00fcn\u00fc (control node) do\u011fru bir \u015fekilde yap\u0131land\u0131rmam\u0131z gerekiyor. Bu kontrol d\u00fc\u011f\u00fcm\u00fc, Ansible&#8217;\u0131n kurulu oldu\u011fu ve t\u00fcm playbook&#8217;lar\u0131 \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z makinedir. Y\u00f6netilen sunucumuz olarak da Ubuntu i\u015fletim sistemine sahip bir makineye ihtiyac\u0131m\u0131z olacak. Bu b\u00f6l\u00fcm, kontrol d\u00fc\u011f\u00fcm\u00fcn\u00fcz\u00fc nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve y\u00f6netilen sunucuyla g\u00fcvenli bir ba\u011flant\u0131 kurmak i\u00e7in gerekli ad\u0131mlar\u0131 detayland\u0131racakt\u0131r.<\/p>\n<h3>Ubuntu \u00dczerinde Ansible Kurulumu<\/h3>\n<p>Kontrol d\u00fc\u011f\u00fcm\u00fc olarak kullanaca\u011f\u0131m\u0131z Ubuntu makinesine Ansible&#8217;\u0131 kurman\u0131n birka\u00e7 yolu vard\u0131r. En yayg\u0131n ve \u00f6nerilen y\u00f6ntemlerden biri, i\u015fletim sisteminin paket y\u00f6neticisi olan APT&#8217;yi kullanmakt\u0131r. Bu y\u00f6ntem, Ansible&#8217;\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131yla birlikte kolayca kurulmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>\u0130lk olarak, sisteminizin paket listesini g\u00fcncelleyerek ba\u015flay\u0131n:<\/p>\n<pre><code>\nsudo apt update\nsudo apt upgrade -y\n<\/code><\/pre>\n<p>Ard\u0131ndan, Ansible&#8217;\u0131 a\u015fa\u011f\u0131daki komutla kurabilirsiniz:<\/p>\n<pre><code>\nsudo apt install ansible -y\n<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Ansible&#8217;\u0131n do\u011fru bir \u015fekilde kuruldu\u011fundan emin olmak i\u00e7in s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code>\nansible --version\n<\/code><\/pre>\n<p>Bu komut, Ansible s\u00fcr\u00fcm\u00fcn\u00fc, Python s\u00fcr\u00fcm\u00fcn\u00fc ve di\u011fer yap\u0131land\u0131rma bilgilerini g\u00f6sterecektir. E\u011fer pip (Python paket y\u00f6neticisi) ile kurulumu tercih ediyorsan\u0131z, \u00f6ncelikle pip&#8217;i kurman\u0131z gerekebilir:<\/p>\n<pre><code>\nsudo apt install python3-pip -y\npip3 install ansible\n<\/code><\/pre>\n<p>Her iki y\u00f6ntem de ge\u00e7erlidir, ancak APT ile kurulum genellikle daha kolayd\u0131r ve sisteminizle daha iyi entegre olur.<\/p>\n<h3>SSH Anahtar \u00c7ifti Olu\u015fturma ve Y\u00f6netilen Sunucuya Kopyalama<\/h3>\n<p>Ansible, y\u00f6netilen sunuculara SSH \u00fczerinden ba\u011flan\u0131r. Bu ba\u011flant\u0131n\u0131n g\u00fcvenli ve parola gerektirmeyen bir \u015fekilde ger\u00e7ekle\u015fmesi i\u00e7in SSH anahtar \u00e7ifti kullanmak en iyi pratiktir. Kontrol d\u00fc\u011f\u00fcm\u00fcn\u00fczde bir SSH anahtar \u00e7ifti olu\u015fturman\u0131z ve genel anahtar\u0131n\u0131z\u0131 y\u00f6netilen Ubuntu sunucunuza kopyalaman\u0131z gerekecektir.<\/p>\n<p>Kontrol d\u00fc\u011f\u00fcm\u00fcn\u00fczde SSH anahtar \u00e7ifti olu\u015fturmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code>\nssh-keygen -t rsa -b 4096\n<\/code><\/pre>\n<p>Bu komut, size anahtar dosyas\u0131n\u0131n kaydedilece\u011fi yeri soracakt\u0131r (varsay\u0131lan olarak ~\/.ssh\/id_rsa). Bir parola (passphrase) belirlemeniz istenecektir; g\u00fcvenli\u011fi art\u0131rmak i\u00e7in bir parola belirleyebilirsiniz, ancak otomasyon senaryolar\u0131nda parola kullanmamak da yayg\u0131nd\u0131r. Parola kullanmamak i\u00e7in Enter tu\u015funa basarak bo\u015f b\u0131rakabilirsiniz. Bu i\u015flem, ~\/.ssh\/id_rsa (\u00f6zel anahtar) ve ~\/.ssh\/id_rsa.pub (genel anahtar) dosyalar\u0131n\u0131 olu\u015fturacakt\u0131r.<\/p>\n<p>\u015eimdi, genel anahtar\u0131n\u0131z\u0131 y\u00f6netilen Ubuntu sunucunuza kopyalamam\u0131z gerekiyor. Bunu <code class=\"language-\">ssh-copy-id<\/code> komutuyla kolayca yapabiliriz. Y\u00f6netilen sunucunun IP adresini veya ana bilgisayar ad\u0131n\u0131 ve kullan\u0131c\u0131 ad\u0131n\u0131 (\u00f6rne\u011fin, ubuntu kullan\u0131c\u0131s\u0131) bilmeniz gerekmektedir:<\/p>\n<pre><code>\nssh-copy-id kullan\u0131c\u0131_ad\u0131@y\u00f6netilen_sunucu_ip_adresi\n<\/code><\/pre>\n<p>\u00d6rne\u011fin, <code class=\"language-\">ssh-copy-id ubuntu@192.168.1.100<\/code>. Bu komut, ilk ba\u011flant\u0131da sizden y\u00f6netilen sunucunun parolas\u0131n\u0131 isteyecek ve genel anahtar\u0131n\u0131z\u0131 ~\/.ssh\/authorized_keys dosyas\u0131na ekleyecektir. \u0130\u015flem tamamland\u0131ktan sonra, art\u0131k parola girmeden SSH ile y\u00f6netilen sunucunuza ba\u011flanabilmelisiniz.<\/p>\n<h3>Envanter Dosyas\u0131n\u0131n (<code class=\"language-\">hosts<\/code>) Olu\u015fturulmas\u0131 ve Ba\u011flant\u0131 Testi<\/h3>\n<p>Ansible&#8217;\u0131n y\u00f6netece\u011fi sunucular\u0131 bilmesi i\u00e7in bir envanter dosyas\u0131na ihtiyac\u0131 vard\u0131r. Varsay\u0131lan olarak, Ansible \/etc\/ansible\/hosts dosyas\u0131n\u0131 kullan\u0131r, ancak genellikle proje bazl\u0131 envanter dosyalar\u0131 olu\u015fturmak daha esnektir. Projenizin k\u00f6k dizininde <code class=\"language-\">hosts<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code>\nmkdir ansible-docker\ncd ansible-docker\ntouch hosts\n<\/code><\/pre>\n<p><code class=\"language-\">hosts<\/code> dosyas\u0131n\u0131n i\u00e7ine y\u00f6netilen sunucunuzun bilgilerini ekleyin. \u00d6rne\u011fin:<\/p>\n<pre><code>\n# hosts dosyas\u0131 i\u00e7eri\u011fi\n[docker_sunuculari]\ny\u00f6netilen_sunucu_ip_adresi ansible_user=kullan\u0131c\u0131_ad\u0131 ansible_python_interpreter=\/usr\/bin\/python3\n<\/code><\/pre>\n<p>Burada <code class=\"language-\">[docker_sunuculari]<\/code> bir grup ad\u0131d\u0131r. <code class=\"language-\"><y\u00f6netilen_sunucu_ip_adresi><\/code> yerine sunucunuzun IP adresini veya ana bilgisayar ad\u0131n\u0131 yaz\u0131n. <code class=\"language-\">ansible_user<\/code> parametresi, Ansible&#8217;\u0131n SSH ile ba\u011flanmak i\u00e7in kullanaca\u011f\u0131 kullan\u0131c\u0131 ad\u0131n\u0131 belirtir (\u00f6rne\u011fin, <code class=\"language-\">ubuntu<\/code>). <code class=\"language-\">ansible_python_interpreter<\/code> ise y\u00f6netilen sunucudaki Python 3 yolunu belirtir, \u00e7\u00fcnk\u00fc bir\u00e7ok Ansible mod\u00fcl\u00fc Python&#8217;a ihtiya\u00e7 duyar.<\/p>\n<p>\u015eimdi, Ansible&#8217;\u0131n y\u00f6netilen sunucunuza ba\u015far\u0131l\u0131 bir \u015fekilde ba\u011flan\u0131p ba\u011flanmad\u0131\u011f\u0131n\u0131 test edelim. Bunun i\u00e7in <code class=\"language-\">ping<\/code> mod\u00fcl\u00fcn\u00fc kullanabiliriz:<\/p>\n<pre><code>\nansible -i hosts docker_sunuculari -m ping\n<\/code><\/pre>\n<p>E\u011fer her \u015fey yolundaysa, \u015f\u00f6yle bir \u00e7\u0131kt\u0131 almal\u0131s\u0131n\u0131z:<\/p>\n<pre><code>\ny\u00f6netilen_sunucu_ip_adresi | SUCCESS => {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python3\"\n    },\n    \"changed\": false,\n    \"ping\": \"pong\"\n}\n<\/code><\/pre>\n<p>Bu &#8220;pong&#8221; yan\u0131t\u0131, Ansible&#8217;\u0131n y\u00f6netilen sunucunuzla ba\u015far\u0131l\u0131 bir \u015fekilde ileti\u015fim kurdu\u011funu g\u00f6sterir. Art\u0131k kontrol d\u00fc\u011f\u00fcm\u00fcn\u00fcz haz\u0131r ve Docker kurulum playbook&#8217;umuzu yazmaya ba\u015flayabiliriz.<\/p>\n<h2>Ad\u0131m Ad\u0131m Docker Kurulum Playbook&#8217;u Olu\u015fturma<\/h2>\n<p>Ansible ortam\u0131m\u0131z\u0131 ba\u015far\u0131yla haz\u0131rlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi as\u0131l i\u015fe, yani Docker&#8217;\u0131 Ubuntu sunucumuza otomatik olarak kuracak Ansible playbook&#8217;unu yazmaya ba\u015flayabiliriz. Bu playbook, Docker&#8217;\u0131n resmi belgelerinde belirtilen ad\u0131mlar\u0131 takip ederek, g\u00fcvenli ve tutarl\u0131 bir kurulum sa\u011flayacakt\u0131r. Playbook&#8217;umuzu par\u00e7alara ay\u0131rarak, her bir g\u00f6revin ne i\u015fe yarad\u0131\u011f\u0131n\u0131 ve neden \u00f6nemli oldu\u011funu a\u00e7\u0131klayaca\u011f\u0131z. Bu sayede, sadece kodu kopyalamakla kalmayacak, ayn\u0131 zamanda arkas\u0131ndaki mant\u0131\u011f\u0131 da anlam\u0131\u015f olacaks\u0131n\u0131z.<\/p>\n<p>Playbook&#8217;umuzu <code class=\"language-\">docker_install.yml<\/code> ad\u0131yla olu\u015ftural\u0131m:<\/p>\n<pre><code>\n# docker_install.yml\n---\n- name: Ubuntu'ya Docker Kurulumu\n  hosts: docker_sunuculari\n  become: yes # G\u00f6revleri root yetkileriyle \u00e7al\u0131\u015ft\u0131rmak i\u00e7in\n  tasks:\n    - name: Sistem paket listesini g\u00fcncelle\n      ansible.builtin.apt:\n        update_cache: yes\n        cache_valid_time: 3600 # \u00d6nbelle\u011fi 1 saat ge\u00e7erli tut\n\n    - name: Gerekli APT ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kur\n      ansible.builtin.apt:\n        name: \"{{ item }}\"\n        state: present\n      loop:\n        - apt-transport-https\n        - ca-certificates\n        - curl\n        - gnupg-agent\n        - software-properties-common\n\n    - name: Docker'\u0131n resmi GPG anahtar\u0131n\u0131 ekle\n      ansible.builtin.apt_key:\n        url: https:\/\/download.docker.com\/linux\/ubuntu\/gpg\n        state: present\n\n    - name: Docker stabil deposunu ekle\n      ansible.builtin.apt_repository:\n        repo: deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu {{ ansible_distribution_release }} stable\n        state: present\n        update_cache: yes\n\n    - name: Docker CE, Docker CLI ve containerd.io paketlerini kur\n      ansible.builtin.apt:\n        name: \"{{ item }}\"\n        state: present\n      loop:\n        - docker-ce\n        - docker-ce-cli\n        - containerd.io\n\n    - name: Docker servisini ba\u015flat ve ba\u015flang\u0131\u00e7ta etkinle\u015ftir\n      ansible.builtin.systemd:\n        name: docker\n        state: started\n        enabled: yes\n\n    - name: Mevcut kullan\u0131c\u0131y\u0131 docker grubuna ekle\n      ansible.builtin.user:\n        name: \"{{ ansible_user }}\"\n        groups: docker\n        append: yes\n      when: ansible_user != 'root' # E\u011fer root kullan\u0131c\u0131s\u0131 de\u011filse ekle\n      \n    - name: Kullan\u0131c\u0131 grubu de\u011fi\u015fikli\u011fini uygulamak i\u00e7in sistemi yeniden ba\u015flat (iste\u011fe ba\u011fl\u0131)\n      ansible.builtin.reboot:\n      when: ansible_user != 'root' # Sadece root olmayan kullan\u0131c\u0131lar i\u00e7in gerekli olabilir\n      \n    - name: Docker kurulumunu do\u011frula (hello-world \u00e7al\u0131\u015ft\u0131r)\n      ansible.builtin.command: docker run hello-world\n      register: docker_hello_world_output\n      changed_when: false # Bu komut sistemi de\u011fi\u015ftirmez\n      \n    - name: Docker hello-world \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6ster\n      ansible.builtin.debug:\n        var: docker_hello_world_output.stdout_lines\n\n<\/code><\/pre>\n<h3>Gerekli \u00d6nko\u015fullar\u0131 Kurma ve Sistem G\u00fcncelleme<\/h3>\n<p>Playbook&#8217;umuzun ilk g\u00f6revi, y\u00f6netilen sunucunun paket listesini g\u00fcncellemektir. Bu, her zaman en son paket bilgilerine sahip olmam\u0131z\u0131 ve olas\u0131 ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nlememizi sa\u011flar. <code class=\"language-\">update_cache: yes<\/code> parametresi, <code class=\"language-\">apt update<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmaya e\u015fde\u011ferdir. <code class=\"language-\">cache_valid_time<\/code> ise \u00f6nbelle\u011fin ne kadar s\u00fcre ge\u00e7erli kalaca\u011f\u0131n\u0131 belirler, bu da s\u0131k s\u0131k playbook \u00e7al\u0131\u015ft\u0131ranlar i\u00e7in performans\u0131 art\u0131rabilir.<\/p>\n<pre><code>\n    - name: Sistem paket listesini g\u00fcncelle\n      ansible.builtin.apt:\n        update_cache: yes\n        cache_valid_time: 3600 # \u00d6nbelle\u011fi 1 saat ge\u00e7erli tut\n<\/code><\/pre>\n<p>Ard\u0131ndan, Docker&#8217;\u0131n APT deposunu eklemek ve paketlerini kurmak i\u00e7in gerekli olan baz\u0131 temel ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckl\u00fcyoruz. Bu ba\u011f\u0131ml\u0131l\u0131klar aras\u0131nda HTTPS \u00fczerinden depolara eri\u015fim sa\u011flayan <code class=\"language-\">apt-transport-https<\/code>, g\u00fcvenlik sertifikalar\u0131 i\u00e7in <code class=\"language-\">ca-certificates<\/code>, dosyalar\u0131 indirmek i\u00e7in <code class=\"language-\">curl<\/code>, GPG anahtarlar\u0131 i\u00e7in <code class=\"language-\">gnupg-agent<\/code> ve <code class=\"language-\">add-apt-repository<\/code> komutu i\u00e7in <code class=\"language-\">software-properties-common<\/code> bulunur. <code class=\"language-\">loop<\/code> yap\u0131s\u0131, ayn\u0131 g\u00f6revi farkl\u0131 \u00f6\u011felerle tekrarlamam\u0131z\u0131 sa\u011flar, bu da kodu daha temiz hale getirir.<\/p>\n<pre><code>\n    - name: Gerekli APT ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kur\n      ansible.builtin.apt:\n        name: \"{{ item }}\"\n        state: present\n      loop:\n        - apt-transport-https\n        - ca-certificates\n        - curl\n        - gnupg-agent\n        - software-properties-common\n<\/code><\/pre>\n<h3>Docker APT Deposunu Ekleme<\/h3>\n<p>Docker&#8217;\u0131 resmi depodan kurmak, her zaman en g\u00fcncel ve g\u00fcvenli s\u00fcr\u00fcme sahip olmam\u0131z\u0131 sa\u011flar. Bu i\u015flem iki ad\u0131mdan olu\u015fur: Docker&#8217;\u0131n resmi GPG anahtar\u0131n\u0131 sisteme eklemek ve Docker deposunu APT kaynaklar\u0131m\u0131za eklemek. GPG anahtar\u0131, indirdi\u011fimiz paketlerin ger\u00e7ekten Docker taraf\u0131ndan sa\u011fland\u0131\u011f\u0131n\u0131 do\u011frulamam\u0131z\u0131 sa\u011flar ve g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir.<\/p>\n<pre><code>\n    - name: Docker'\u0131n resmi GPG anahtar\u0131n\u0131 ekle\n      ansible.builtin.apt_key:\n        url: https:\/\/download.docker.com\/linux\/ubuntu\/gpg\n        state: present\n<\/code><\/pre>\n<p>Anahtar\u0131 ekledikten sonra, Docker stabil deposunu APT kaynak listemize ekliyoruz. <code class=\"language-\">ansible_distribution_release<\/code> de\u011fi\u015fkeni, Ansible&#8217;\u0131n y\u00f6netilen sunucunun da\u011f\u0131t\u0131m s\u00fcr\u00fcm\u00fcn\u00fc (\u00f6rne\u011fin, focal, jammy) otomatik olarak alg\u0131lamas\u0131n\u0131 sa\u011flar, bu da playbook&#8217;u farkl\u0131 Ubuntu s\u00fcr\u00fcmleri i\u00e7in daha esnek hale getirir. <code class=\"language-\">update_cache: yes<\/code> burada da kullan\u0131larak yeni depo eklendikten sonra paket listesinin g\u00fcncellenmesi sa\u011flan\u0131r.<\/p>\n<pre><code>\n    - name: Docker stabil deposunu ekle\n      ansible.builtin.apt_repository:\n        repo: deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu {{ ansible_distribution_release }} stable\n        state: present\n        update_cache: yes\n<\/code><\/pre>\n<h3>Docker CE Kurulumu ve Kullan\u0131c\u0131y\u0131 Docker Grubuna Ekleme<\/h3>\n<p>Art\u0131k Docker deposu eklendi\u011fine g\u00f6re, Docker CE (Community Edition), Docker CLI (komut sat\u0131r\u0131 aray\u00fcz\u00fc) ve <code class=\"language-\">containerd.io<\/code> (konteyner \u00e7al\u0131\u015fma zaman\u0131) paketlerini kurabiliriz. Bu \u00fc\u00e7 paket, Docker&#8217;\u0131n tam i\u015flevselli\u011fi i\u00e7in gereklidir.<\/p>\n<pre><code>\n    - name: Docker CE, Docker CLI ve containerd.io paketlerini kur\n      ansible.builtin.apt:\n        name: \"{{ item }}\"\n        state: present\n      loop:\n        - docker-ce\n        - docker-ce-cli\n        - containerd.io\n<\/code><\/pre>\n<p>Kurulumdan sonra Docker servisini ba\u015flat\u0131yor ve sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011fl\u0131yoruz. Bu, sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda Docker&#8217;\u0131n \u00e7al\u0131\u015f\u0131r durumda olmas\u0131n\u0131 garanti eder.<\/p>\n<pre><code>\n    - name: Docker servisini ba\u015flat ve ba\u015flang\u0131\u00e7ta etkinle\u015ftir\n      ansible.builtin.systemd:\n        name: docker\n        state: started\n        enabled: yes\n<\/code><\/pre>\n<p>Varsay\u0131lan olarak, Docker komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code class=\"language-\">sudo<\/code> kullanman\u0131z gerekir. Ancak, mevcut kullan\u0131c\u0131y\u0131 <code class=\"language-\">docker<\/code> grubuna ekleyerek bu k\u0131s\u0131tlamay\u0131 kald\u0131rabiliriz. Bu, kullan\u0131c\u0131n\u0131n <code class=\"language-\">sudo<\/code> olmadan Docker komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131na olanak tan\u0131r. <code class=\"language-\">ansible_user<\/code> de\u011fi\u015fkeni, playbook&#8217;u \u00e7al\u0131\u015ft\u0131ran kullan\u0131c\u0131n\u0131n ad\u0131n\u0131 otomatik olarak al\u0131r. <code class=\"language-\">append: yes<\/code> ile kullan\u0131c\u0131n\u0131n mevcut gruplar\u0131na ekleme yap\u0131l\u0131r. Bu de\u011fi\u015fikli\u011fin etkili olmas\u0131 i\u00e7in kullan\u0131c\u0131n\u0131n oturumu kapat\u0131p a\u00e7mas\u0131 veya sistemin yeniden ba\u015flat\u0131lmas\u0131 gerekebilir. Bu nedenle, iste\u011fe ba\u011fl\u0131 olarak bir yeniden ba\u015flatma g\u00f6revi ekledik, ancak \u00fcretim ortamlar\u0131nda genellikle manuel oturum a\u00e7ma\/kapama tercih edilir.<\/p>\n<pre><code>\n    - name: Mevcut kullan\u0131c\u0131y\u0131 docker grubuna ekle\n      ansible.builtin.user:\n        name: \"{{ ansible_user }}\"\n        groups: docker\n        append: yes\n      when: ansible_user != 'root' # E\u011fer root kullan\u0131c\u0131s\u0131 de\u011filse ekle\n      \n    - name: Kullan\u0131c\u0131 grubu de\u011fi\u015fikli\u011fini uygulamak i\u00e7in sistemi yeniden ba\u015flat (iste\u011fe ba\u011fl\u0131)\n      ansible.builtin.reboot:\n      when: ansible_user != 'root' # Sadece root olmayan kullan\u0131c\u0131lar i\u00e7in gerekli olabilir\n<\/code><\/pre>\n<p>Son olarak, Docker kurulumunun ba\u015far\u0131l\u0131 oldu\u011funu do\u011frulamak i\u00e7in basit bir <code class=\"language-\">docker run hello-world<\/code> komutu \u00e7al\u0131\u015ft\u0131r\u0131yoruz. Bu komut, k\u00fc\u00e7\u00fck bir test konteynerini indirir ve \u00e7al\u0131\u015ft\u0131r\u0131r, Docker kurulumunun d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 teyit eder. \u00c7\u0131kt\u0131y\u0131 <code class=\"language-\">debug<\/code> mod\u00fcl\u00fc ile konsola yazd\u0131rarak do\u011frulama ad\u0131m\u0131n\u0131 g\u00f6rselle\u015ftiriyoruz.<\/p>\n<pre><code><br \/>\n    - name: Docker kurulumunu do\u011frula (hello-world \u00e7al\u0131\u015ft\u0131r)<br \/>\n      ansible.builtin.command: docker run hello-world<br \/>\n      register: docker_hello_world_output<br \/>\n      changed_when: false # Bu komut sistemi de\u011fi\u015ftirmez<\/p>\n<p>    - name: Docker hello-world \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6ster<br \/>\n      ans<\/p>\n","protected":false},"excerpt":{"rendered":"Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde otomasyon, hem zaman tasarrufu hem de tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir rol oynar.&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":[1407],"tags":[],"class_list":{"0":"post-41746","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-docker","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>Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?<\/title>\n<meta name=\"description\" content=\"Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde otomasyon, hem zaman tasarrufu hem de tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir rol oynar.\" \/>\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\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?\" \/>\n<meta property=\"og:description\" content=\"Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde otomasyon, hem zaman tasarrufu hem de tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir rol oynar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-13T11:02:36+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=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?\",\"datePublished\":\"2026-05-13T11:02:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/\"},\"wordCount\":2787,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Docker\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/\",\"name\":\"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-13T11:02:36+00:00\",\"description\":\"Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde otomasyon, hem zaman tasarrufu hem de tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir rol oynar.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?\"}]},{\"@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":"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?","description":"Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde otomasyon, hem zaman tasarrufu hem de tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir rol oynar.","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\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/","og_locale":"tr_TR","og_type":"article","og_title":"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?","og_description":"Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde otomasyon, hem zaman tasarrufu hem de tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir rol oynar.","og_url":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-13T11:02:36+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?","datePublished":"2026-05-13T11:02:36+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/"},"wordCount":2787,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Docker"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/","url":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/","name":"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-13T11:02:36+00:00","description":"Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde otomasyon, hem zaman tasarrufu hem de tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir rol oynar.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/neden-ansible-ile-docker-kurulumu-yapmaliyiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Neden Ansible ile Docker Kurulumu Yapmal\u0131y\u0131z?"}]},{"@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\/41746","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=41746"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41746\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41746"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41746"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}