{"id":30410,"date":"2025-09-27T12:42:13","date_gmt":"2025-09-27T09:42:13","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=30410"},"modified":"2025-09-27T12:42:13","modified_gmt":"2025-09-27T09:42:13","slug":"giris-masterless-puppet-nedir-ve-neden-kullanilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/","title":{"rendered":"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?"},"content":{"rendered":"<p><body><\/p>\n<h2>Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?<\/h2>\n<p>Puppet, sunucular\u0131n ve altyap\u0131n\u0131n durumunu kod olarak tan\u0131mlaman\u0131za ve otomatik olarak y\u00f6netmenize olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir yap\u0131land\u0131rma y\u00f6netim arac\u0131d\u0131r. Geleneksel olarak Puppet, merkezi bir Puppet Master sunucusu ve bu sunucuya ba\u011flanarak yap\u0131land\u0131rmalar\u0131 alan Puppet Agent istemcileri olmak \u00fczere iki ana bile\u015fenden olu\u015fur. Ancak, her zaman bu karma\u015f\u0131k mimariye ihtiya\u00e7 duyulmaz.<\/p>\n<p>Masterless Puppet (veya &#8220;Puppet Apply&#8221;), Puppet Master sunucusu olmadan, yap\u0131land\u0131rma manifest dosyalar\u0131n\u0131 do\u011frudan bir sunucu \u00fczerinde \u00e7al\u0131\u015ft\u0131rma y\u00f6ntemidir. Bu yakla\u015f\u0131m, \u00f6zellikle k\u00fc\u00e7\u00fck ortamlar, tek sunucu yap\u0131land\u0131rmalar\u0131, test ve geli\u015ftirme ortamlar\u0131 veya CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) s\u00fcre\u00e7lerinde h\u0131zl\u0131 ve basit otomasyon sa\u011flamak i\u00e7in idealdir. Ubuntu 14.04 gibi eski bir i\u015fletim sisteminde bile, Puppet&#8217;in temel otomasyon g\u00fcc\u00fcnden bu \u015fekilde faydalanabilirsiniz.<\/p>\n<p>Bu rehberde, Ubuntu 14.04 \u00fczerinde Masterless Puppet ortam\u0131n\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, temel manifest dosyalar\u0131n\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.<\/p>\n<h2>Ortam\u0131n Haz\u0131rlanmas\u0131 ve Puppet Kurulumu<\/h2>\n<p>Masterless Puppet ortam\u0131n\u0131z\u0131 kurmadan \u00f6nce, Ubuntu 14.04 sunucunuzun temel gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan ve Puppet&#8217;i do\u011fru \u015fekilde y\u00fckleyebilece\u011finizden emin olmal\u0131y\u0131z.<\/p>\n<h3>Sunucuyu G\u00fcncelleme<\/h3>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce sistemin g\u00fcncel paket listelerine sahip olmas\u0131 ve mevcut paketlerin g\u00fcncellenmesi iyi bir pratiktir. Bu, olas\u0131 ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nlemeye yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y<\/code><\/pre>\n<h3>Puppet Kurulumu<\/h3>\n<p>Ubuntu 14.04 (Trusty Tahr) i\u00e7in Puppet paketlerini do\u011frudan Ubuntu depolar\u0131nda bulmak m\u00fcmk\u00fcnd\u00fcr, ancak en g\u00fcncel ve kararl\u0131 s\u00fcr\u00fcm\u00fc almak i\u00e7in Puppet Labs&#8217;\u0131n kendi deposunu eklemek daha iyidir.<\/p>\n<p>1.  <strong>Puppet Labs Deposunu Ekleme:<\/strong><br \/>\n    A\u015fa\u011f\u0131daki komutlarla Puppet Labs&#8217;\u0131n Trusty Tahr i\u00e7in \u00f6zel olarak haz\u0131rlanm\u0131\u015f depo paketini indirip kurun.<\/p>\n<pre><code class=\"language-bash\">wget https:\/\/apt.puppetlabs.com\/puppetlabs-release-trusty.deb\n    sudo dpkg -i puppetlabs-release-trusty.deb<\/code><\/pre>\n<p>2.  <strong>Paket Listesini G\u00fcncelleme:<\/strong><br \/>\n    Yeni eklenen depodan paket bilgilerini almak i\u00e7in <code>apt-get update<\/code> komutunu tekrar \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update<\/code><\/pre>\n<p>3.  <strong>Puppet&#8217;i Kurma:<\/strong><br \/>\n    Art\u0131k Puppet paketini y\u00fckleyebilirsiniz. Bu komut, Puppet&#8217;in t\u00fcm gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 da kuracakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y puppet<\/code><\/pre>\n<p>4.  <strong>Kurulumu Do\u011frulama:<\/strong><br \/>\n    Puppet&#8217;in ba\u015far\u0131yla kuruldu\u011funu ve s\u00fcr\u00fcm\u00fcn\u00fc kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n.<\/p>\n<pre><code class=\"language-bash\">puppet --version<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131 olarak y\u00fckl\u00fc Puppet s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6rmelisiniz (\u00f6rne\u011fin, <code>3.8.7<\/code> veya benzeri bir 3.x s\u00fcr\u00fcm\u00fc).<\/p>\n<h2>Masterless Puppet Mimarisi ve Temel Kavramlar<\/h2>\n<p>Masterless Puppet ortam\u0131nda, Puppet Master&#8217;\u0131n rol\u00fcn\u00fc <code>puppet apply<\/code> komutu \u00fcstlenir. Bu komut, belirtilen manifest dosyalar\u0131n\u0131 do\u011frudan yerel sistem \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<h3>Masterless Puppet Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>*   <strong>Manifest Dosyalar\u0131:<\/strong> Puppet, yap\u0131land\u0131rma talimatlar\u0131n\u0131 <code>.pp<\/code> uzant\u0131l\u0131 manifest dosyalar\u0131nda saklar. Bu dosyalar, sistemde hangi paketlerin kurulaca\u011f\u0131n\u0131, hangi servislerin \u00e7al\u0131\u015faca\u011f\u0131n\u0131, hangi dosyalar\u0131n olu\u015fturulaca\u011f\u0131n\u0131 vb. tan\u0131mlar.<br \/>\n*   <strong><code>puppet apply<\/code> Komutu:<\/strong> Bu komut, bir veya daha fazla manifest dosyas\u0131n\u0131 okur ve sistemin mevcut durumunu tan\u0131mlanan yap\u0131land\u0131rmaya uygun hale getirmek i\u00e7in gerekli de\u011fi\u015fiklikleri uygular.<br \/>\n*   <strong>Facter:<\/strong> Puppet, sistemi hakk\u0131nda bilgi toplamak i\u00e7in Facter adl\u0131 bir ara\u00e7 kullan\u0131r. Bu bilgiler (IP adresi, i\u015fletim sistemi s\u00fcr\u00fcm\u00fc, bellek miktar\u0131 vb.), manifest dosyalar\u0131nda ko\u015fullu mant\u0131k veya de\u011fi\u015fkenler i\u00e7in kullan\u0131labilir.<br \/>\n*   <strong>Mod\u00fcller:<\/strong> Tekrar kullan\u0131labilir Puppet kodu par\u00e7alar\u0131d\u0131r. Mod\u00fcller, belirli bir yaz\u0131l\u0131m\u0131n (\u00f6rne\u011fin Nginx, Apache) veya bir sistem bile\u015feninin (\u00f6rne\u011fin kullan\u0131c\u0131lar, a\u011f yap\u0131land\u0131rmas\u0131) yap\u0131land\u0131rmas\u0131n\u0131 kaps\u00fcller.<\/p>\n<h3>Manifest ve Mod\u00fcl Dizini Yap\u0131s\u0131<\/h3>\n<p>Masterless Puppet i\u00e7in standart bir dizin yap\u0131s\u0131 olmasa da, d\u00fczenli kalmak i\u00e7in bir yap\u0131 olu\u015fturmak \u00f6nemlidir. Genellikle <code>\/etc\/puppet<\/code> dizini alt\u0131nda \u00e7al\u0131\u015f\u0131l\u0131r.<\/p>\n<pre><code class=\"language-\">\/etc\/puppet\/\n\u251c\u2500\u2500 manifests\/\n\u2502   \u2514\u2500\u2500 site.pp         # Ana manifest dosyas\u0131, t\u00fcm yap\u0131land\u0131rman\u0131n giri\u015f noktas\u0131\n\u2514\u2500\u2500 modules\/\n    \u2514\u2500\u2500 my_module\/      # \u00d6zel mod\u00fcller i\u00e7in dizin\n        \u251c\u2500\u2500 manifests\/\n        \u2502   \u2514\u2500\u2500 init.pp # Mod\u00fcl\u00fcn ana s\u0131n\u0131f\u0131n\u0131 tan\u0131mlar\n        \u251c\u2500\u2500 files\/      # Mod\u00fcl taraf\u0131ndan kopyalanacak statik dosyalar\n        \u2514\u2500\u2500 templates\/  # Mod\u00fcl taraf\u0131ndan kullan\u0131lacak \u015fablon dosyalar\u0131 (.erb)<\/code><\/pre>\n<p>*   <strong><code>manifests\/site.pp<\/code><\/strong>: Bu dosya, t\u00fcm Puppet uygulamas\u0131n\u0131n ana giri\u015f noktas\u0131d\u0131r. Genellikle <code>include<\/code> veya <code>class<\/code> deyimleri ile di\u011fer mod\u00fclleri veya s\u0131n\u0131flar\u0131 \u00e7a\u011f\u0131r\u0131r.<br \/>\n*   <strong><code>modules\/<\/code><\/strong>: Bu dizin, kendi olu\u015fturdu\u011funuz veya Puppet Forge&#8217;dan indirdi\u011finiz mod\u00fclleri i\u00e7erir. Her mod\u00fcl kendi alt dizininde yer al\u0131r.<\/p>\n<h3>Puppet Manifest Dosyalar\u0131 ve Kaynak Tan\u0131mlar\u0131<\/h3>\n<p>Puppet manifest dosyalar\u0131, sistem kaynaklar\u0131n\u0131 (resource) tan\u0131mlayan bloklardan olu\u015fur. Her kaynak blo\u011fu, belirli bir sistem bile\u015feninin (paket, servis, dosya vb.) istenen durumunu a\u00e7\u0131klar.<\/p>\n<p>Baz\u0131 yayg\u0131n kaynak tipleri:<\/p>\n<p>*   <code>package<\/code>: Paket y\u00fckleme\/kald\u0131rma (\u00f6rne\u011fin <code>nginx<\/code>).<br \/>\n*   <code>service<\/code>: Servisleri ba\u015flatma\/durdurma\/etkinle\u015ftirme (\u00f6rne\u011fin <code>nginx<\/code>).<br \/>\n*   <code>file<\/code>: Dosyalar\u0131 olu\u015fturma, d\u00fczenleme, silme.<br \/>\n*   <code>user<\/code>: Kullan\u0131c\u0131 olu\u015fturma\/silme.<br \/>\n*   <code>exec<\/code>: Herhangi bir komutu \u00e7al\u0131\u015ft\u0131rma.<\/p>\n<p>\u00d6rnek bir kaynak tan\u0131m\u0131:<\/p>\n<pre><code class=\"language-puppet\"># Bir paketin kurulu olmas\u0131n\u0131 sa\u011flar\npackage { 'nginx':\n  ensure => installed, # 'installed', 'present', 'latest', 'absent' olabilir\n}\n\n<h2>Bir servisin \u00e7al\u0131\u015f\u0131yor ve sistem ba\u015flang\u0131c\u0131nda etkin olmas\u0131n\u0131 sa\u011flar<\/h2>\nservice { 'nginx':\n  ensure => running, # 'running', 'stopped' olabilir\n  enable => true,    # 'true', 'false' olabilir\n}<\/code><\/pre>\n<h2>Pratik Bir Uygulama: Nginx Kurulumu<\/h2>\n<p>\u015eimdi \u00f6\u011frendiklerimizi kullanarak basit bir Nginx web sunucusu kurulumunu otomatikle\u015ftirelim.<\/p>\n<h3>\u0130lk Manifest Dosyam\u0131z\u0131 Olu\u015fturma<\/h3>\n<p>1.  <strong>Manifest Dizini Olu\u015fturma:<\/strong><br \/>\n    \u00d6ncelikle, manifest dosyalar\u0131m\u0131z\u0131 saklayaca\u011f\u0131m\u0131z dizini olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/etc\/puppet\/manifests<\/code><\/pre>\n<p>2.  <strong><code>site.pp<\/code> Dosyas\u0131n\u0131 Olu\u015fturma:<\/strong><br \/>\n    \u015eimdi <code>\/etc\/puppet\/manifests\/site.pp<\/code> adl\u0131 ana manifest dosyam\u0131z\u0131 olu\u015ftural\u0131m ve i\u00e7ine Nginx kurulumu i\u00e7in gerekli Puppet kodunu ekleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/puppet\/manifests\/site.pp<\/code><\/pre>\n<p>    Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-puppet\"># \/etc\/puppet\/manifests\/site.pp\n\n    # Nginx paketinin y\u00fckl\u00fc olmas\u0131n\u0131 sa\u011flar\n    package { 'nginx':\n      ensure => installed,\n    }\n\n    # Nginx servisinin \u00e7al\u0131\u015f\u0131yor ve sistem ba\u015flang\u0131c\u0131nda etkin olmas\u0131n\u0131 sa\u011flar\n    service { 'nginx':\n      ensure  => running,\n      enable  => true,\n      require => Package['nginx'], # Nginx paketi kurulduktan sonra ba\u015flat\n    }\n\n    # Basit bir index.html dosyas\u0131 olu\u015ftur\n    file { '\/usr\/share\/nginx\/html\/index.html':\n      ensure  => file,\n      content => '<p>Bu sayfa Puppet tarafindan olusturuldu.<\/p>',\n      owner   => 'www-data',\n      group   => 'www-data',\n      mode    => '0644',\n      require => Package['nginx'], # Nginx paketi kurulduktan sonra dosyay\u0131 olu\u015ftur\n    }<\/code><\/pre>\n<p>    Bu manifest dosyas\u0131 \u015funlar\u0131 yapacakt\u0131r:<br \/>\n    *   <code>nginx<\/code> paketinin y\u00fckl\u00fc oldu\u011fundan emin olur.<br \/>\n    *   <code>nginx<\/code> servisinin \u00e7al\u0131\u015f\u0131r durumda oldu\u011fundan ve sistem ba\u015flang\u0131c\u0131nda otomatik ba\u015flayacak \u015fekilde etkinle\u015ftirildi\u011finden emin olur.<br \/>\n    *   <code>\/usr\/share\/nginx\/html\/index.html<\/code> yolunda basit bir HTML dosyas\u0131 olu\u015fturur. <code>require<\/code> parametresi, Puppet&#8217;in bu kaynaklar\u0131 do\u011fru s\u0131rayla (paket kurulduktan sonra servis ba\u015flatma ve dosya olu\u015fturma) i\u015flemesini sa\u011flar.<\/p>\n<h3>Manifest&#8217;i Uygulama<\/h3>\n<p>Manifest dosyas\u0131n\u0131 olu\u015fturduktan sonra, <code>puppet apply<\/code> komutu ile uygulayabiliriz.<\/p>\n<p>1.  <strong>\u00d6nizleme (No-Op Modu):<\/strong><br \/>\n    De\u011fi\u015fiklikleri uygulamadan \u00f6nce ne olaca\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in <code>--noop<\/code> (no operation) bayra\u011f\u0131n\u0131 kullanmak iyi bir al\u0131\u015fkanl\u0131kt\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo puppet apply --noop \/etc\/puppet\/manifests\/site.pp<\/code><\/pre>\n<p>    Bu komut, Puppet&#8217;in yapaca\u011f\u0131 de\u011fi\u015fiklikleri raporlayacak ancak fiilen uygulamayacakt\u0131r. \u00c7\u0131kt\u0131da &#8220;Would have done&#8221; gibi ifadeler g\u00f6rmelisiniz.<\/p>\n<p>2.  <strong>Manifest&#8217;i Uygulama:<\/strong><br \/>\n    Her \u015fey yolundaysa, <code>--noop<\/code> bayra\u011f\u0131n\u0131 kald\u0131rarak manifest&#8217;i uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo puppet apply \/etc\/puppet\/manifests\/site.pp<\/code><\/pre>\n<p>    Puppet, Nginx&#8217;i kuracak, servisi ba\u015flatacak ve <code>index.html<\/code> dosyas\u0131n\u0131 olu\u015fturacakt\u0131r.<\/p>\n<p>3.  <strong>Do\u011frulama:<\/strong><br \/>\n    Nginx&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve web sayfas\u0131n\u0131n eri\u015filebilir oldu\u011funu do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">systemctl status nginx # Ubuntu 14.04'te upstart veya service komutu da kullan\u0131labilir\n    curl http:\/\/localhost<\/code><\/pre>\n<p>    <code>curl<\/code> komutu size &#8220;Merhaba, Puppet ile Nginx!&#8221; mesaj\u0131n\u0131 i\u00e7eren HTML \u00e7\u0131kt\u0131s\u0131n\u0131 vermelidir.<\/p>\n<h3>Mod\u00fcl Kullanarak Daha D\u00fczenli Yap\u0131<\/h3>\n<p>Tek bir <code>site.pp<\/code> dosyas\u0131 k\u00fc\u00e7\u00fck projeler i\u00e7in yeterli olsa da, daha b\u00fcy\u00fck ve y\u00f6netilebilir projeler i\u00e7in mod\u00fcller kullanmak en iyi pratiktir. Nginx yap\u0131land\u0131rmam\u0131z\u0131 bir mod\u00fcle ta\u015f\u0131yal\u0131m.<\/p>\n<p>1.  <strong>Mod\u00fcl Dizini Olu\u015fturma:<\/strong><br \/>\n    Nginx mod\u00fcl\u00fc i\u00e7in dizin yap\u0131s\u0131n\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/etc\/puppet\/modules\/nginx\/manifests<\/code><\/pre>\n<p>2.  <strong>Mod\u00fcl S\u0131n\u0131f\u0131n\u0131 Olu\u015fturma:<\/strong><br \/>\n    <code>init.pp<\/code> dosyas\u0131n\u0131 olu\u015fturup Nginx yap\u0131land\u0131rmas\u0131n\u0131 buraya ta\u015f\u0131yal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/puppet\/modules\/nginx\/manifests\/init.pp<\/code><\/pre>\n<p>    Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-puppet\"># \/etc\/puppet\/modules\/nginx\/manifests\/init.pp\n\n    class nginx {\n      package { 'nginx':\n        ensure => installed,\n      }\n\n      service { 'nginx':\n        ensure  => running,\n        enable  => true,\n        require => Package['nginx'],\n      }\n\n      file { '\/usr\/share\/nginx\/html\/index.html':\n        ensure  => file,\n        content => '<p>Bu sayfa Puppet mod\u00fcl\u00fc tarafindan olusturuldu.<\/p>',\n        owner   => 'www-data',\n        group   => 'www-data',\n        mode    => '0644',\n        require => Package['nginx'],\n      }\n    }<\/code><\/pre>\n<p>3.  <strong><code>site.pp<\/code>&#8216;yi G\u00fcncelleme:<\/strong><br \/>\n    \u015eimdi <code>site.pp<\/code> dosyam\u0131z\u0131, <code>nginx<\/code> mod\u00fcl\u00fcn\u00fc i\u00e7erecek \u015fekilde g\u00fcncelleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/puppet\/manifests\/site.pp<\/code><\/pre>\n<p>    Mevcut i\u00e7eri\u011fi silip a\u015fa\u011f\u0131daki ile de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-puppet\"># \/etc\/puppet\/manifests\/site.pp\n\n    include nginx # nginx mod\u00fcl\u00fcn\u00fc \u00e7a\u011f\u0131r<\/code><\/pre>\n<p>4.  <strong>G\u00fcncellenmi\u015f Manifest&#8217;i Uygulama:<\/strong><br \/>\n    Mod\u00fcl\u00fc i\u00e7eren yeni yap\u0131land\u0131rmay\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo puppet apply \/etc\/puppet\/manifests\/site.pp<\/code><\/pre>\n<p>    Tekrar <code>curl http:\/\/localhost<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak de\u011fi\u015fiklikleri do\u011frulayabilirsiniz. Art\u0131k sayfan\u0131zda &#8220;(Mod\u00fclden)&#8221; ifadesini g\u00f6rmelisiniz.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>Bu rehberde, Ubuntu 14.04 \u00fczerinde Masterless Puppet ortam\u0131n\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, temel yap\u0131land\u0131rma manifest dosyalar\u0131n\u0131 nas\u0131l olu\u015fturup uygulayaca\u011f\u0131n\u0131z\u0131 ve mod\u00fcllerle daha d\u00fczenli bir yap\u0131ya nas\u0131l ge\u00e7ece\u011finizi \u00f6\u011frendiniz. Masterless Puppet, basit ve h\u0131zl\u0131 otomasyon ihtiya\u00e7lar\u0131n\u0131z i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<p>Masterless Puppet&#8217;in ba\u015fl\u0131ca avantajlar\u0131 \u015funlard\u0131r:<br \/>\n*   <strong>Basitlik:<\/strong> Karma\u015f\u0131k bir Master sunucusu kurma ve y\u00f6netme ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r.<br \/>\n*   <strong>H\u0131zl\u0131 Ba\u015flang\u0131\u00e7:<\/strong> K\u00fc\u00e7\u00fck projeler, test ortamlar\u0131 veya tek sunucu yap\u0131land\u0131rmalar\u0131 i\u00e7in idealdir.<br \/>\n*   <strong>Ta\u015f\u0131nabilirlik:<\/strong> Manifest dosyalar\u0131n\u0131z\u0131 bir Git deposunda saklayarak farkl\u0131 sunuculara kolayca uygulayabilirsiniz.<\/p>\n<p>Ancak, b\u00fcy\u00fck ve dinamik altyap\u0131larda merkezi raporlama, sertifika y\u00f6netimi ve envanter gibi \u00f6zellikler i\u00e7in geleneksel Puppet Master\/Agent mimarisi daha uygun olacakt\u0131r.<\/p>\n<p>Bir sonraki ad\u0131m olarak, Puppet Forge&#8217;dan haz\u0131r mod\u00fclleri kullanmay\u0131, Hiera ile veri ayr\u0131\u015ft\u0131rmay\u0131 ve manifest dosyalar\u0131n\u0131z\u0131 bir versiyon kontrol sistemi (Git gibi) ile y\u00f6netmeyi d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>S: Masterless Puppet ile Master\/Agent aras\u0131ndaki temel fark nedir?<\/strong><br \/>\n<strong>C:<\/strong> Master\/Agent mimarisinde, merkezi bir Puppet Master sunucusu yap\u0131land\u0131rmalar\u0131 depolar ve agent&#8217;lar periyodik olarak bu sunucudan talimatlar\u0131 \u00e7eker. Masterless Puppet&#8217;te ise, yap\u0131land\u0131rma manifest dosyalar\u0131 do\u011frudan <code>puppet apply<\/code> komutu ile yerel sistem \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r, merkezi bir sunucuya ihtiya\u00e7 duyulmaz.<\/p>\n<p><strong>S: Ubuntu 14.04 yerine daha yeni bir Ubuntu s\u00fcr\u00fcm\u00fcnde de bu ad\u0131mlar \u00e7al\u0131\u015f\u0131r m\u0131?<\/strong><br \/>\n<strong>C:<\/strong> Evet, temel Puppet prensipleri ve <code>puppet apply<\/code> komutu t\u00fcm Ubuntu s\u00fcr\u00fcmlerinde ayn\u0131 \u015fekilde \u00e7al\u0131\u015f\u0131r. Tek fark, Puppet Labs depo URL&#8217;sinin veya <code>puppetlabs-release<\/code> paket ad\u0131n\u0131n Ubuntu s\u00fcr\u00fcm\u00fcne g\u00f6re de\u011fi\u015febilece\u011fidir (\u00f6rne\u011fin, Ubuntu 20.04 i\u00e7in <code>focal<\/code> kelimesi kullan\u0131l\u0131r).<\/p>\n<p><strong>S: Hangi durumlarda Masterless Puppet kullanmal\u0131y\u0131m?<\/strong><br \/>\n<strong>C:<\/strong> Tek bir sunucuyu yap\u0131land\u0131rmak, test veya geli\u015ftirme ortamlar\u0131n\u0131 h\u0131zl\u0131ca kurmak, CI\/CD s\u00fcre\u00e7lerinde ge\u00e7ici ortamlar olu\u015fturmak veya Puppet&#8217;e yeni ba\u015flayanlar i\u00e7in Masterless Puppet idealdir.<\/p>\n<p><strong>S: Puppet Forge mod\u00fcllerini Masterless ortamda nas\u0131l kullan\u0131r\u0131m?<\/strong><br \/>\n<strong>C:<\/strong> Puppet Forge&#8217;dan mod\u00fclleri <code>puppet module install <mod\u00fcl_ad\u0131><\/code> komutu ile indirebilirsiniz. Bu komut, mod\u00fcl\u00fc <code>\/etc\/puppet\/modules<\/code> dizinine (veya yap\u0131land\u0131r\u0131lm\u0131\u015f ba\u015fka bir mod\u00fcl yoluna) yerle\u015ftirecektir. Daha sonra <code>site.pp<\/code> dosyan\u0131zda <code>include <mod\u00fcl_s\u0131n\u0131f_ad\u0131><\/code> ile bu mod\u00fcl\u00fc \u00e7a\u011f\u0131rabilirsiniz.<\/p>\n<p><strong>S: Manifest dosyalar\u0131m\u0131 versiyon kontrol sistemine (Git) almal\u0131 m\u0131y\u0131m?<\/strong><br \/>\n<strong>C:<\/strong> Kesinlikle! Manifest dosyalar\u0131n\u0131z\u0131 Git gibi bir versiyon kontrol sisteminde saklamak, de\u011fi\u015fiklikleri takip etmenizi, geri alman\u0131z\u0131, farkl\u0131 dallarda \u00e7al\u0131\u015fman\u0131z\u0131 ve ekip i\u00e7inde i\u015fbirli\u011fi yapman\u0131z\u0131 sa\u011flar. Bu, Puppet kullan\u0131m\u0131nda en iyi pratiklerden biridir.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?\nPuppet, sunucular\u0131n ve altyap\u0131n\u0131n durumunu kod olarak tan\u0131mlaman\u0131za ve otomatik olarak","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-30410","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r? - 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\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?\" \/>\n<meta property=\"og:description\" content=\"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r? Puppet, sunucular\u0131n ve altyap\u0131n\u0131n durumunu kod olarak tan\u0131mlaman\u0131za ve otomatik olarak\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-27T09:42:13+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=\"10 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?\",\"datePublished\":\"2025-09-27T09:42:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/\"},\"wordCount\":1674,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/\",\"name\":\"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-27T09:42:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?\"}]},{\"@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":"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r? - 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\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/","og_locale":"tr_TR","og_type":"article","og_title":"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?","og_description":"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r? Puppet, sunucular\u0131n ve altyap\u0131n\u0131n durumunu kod olarak tan\u0131mlaman\u0131za ve otomatik olarak","og_url":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-27T09:42:13+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"10 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?","datePublished":"2025-09-27T09:42:13+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/"},"wordCount":1674,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/","url":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/","name":"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-27T09:42:13+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/giris-masterless-puppet-nedir-ve-neden-kullanilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Giri\u015f: Masterless Puppet Nedir ve Neden Kullan\u0131l\u0131r?"}]},{"@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\/30410","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=30410"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30410\/revisions"}],"predecessor-version":[{"id":30411,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30410\/revisions\/30411"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}