{"id":30924,"date":"2025-10-03T13:41:20","date_gmt":"2025-10-03T10:41:20","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=30924"},"modified":"2025-10-03T13:41:20","modified_gmt":"2025-10-03T10:41:20","slug":"puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/","title":{"rendered":"Puppet 4&#8217;\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Puppet 4&#8217;\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi<\/h2>\n<p>Bulut bili\u015fim ve DevOps k\u00fclt\u00fcr\u00fcn\u00fcn y\u00fckseli\u015fiyle birlikte, sunucu ve altyap\u0131 y\u00f6netiminde otomasyonun \u00f6nemi giderek artmaktad\u0131r. Puppet, bu otomasyon ara\u00e7lar\u0131n\u0131n en g\u00fc\u00e7l\u00fclerinden biridir. Sunucular\u0131n\u0131z\u0131n yap\u0131land\u0131rmas\u0131n\u0131 kod olarak tan\u0131mlaman\u0131za, da\u011f\u0131tman\u0131za ve s\u00fcrekli olarak s\u00fcrd\u00fcrmenize olanak tan\u0131r. Bu sayede, tutarl\u0131l\u0131k sa\u011flan\u0131r, insan hatalar\u0131 azal\u0131r ve altyap\u0131 y\u00f6netimi \u00e7ok daha verimli hale gelir.<\/p>\n<p>Bu kapsaml\u0131 rehberde, Puppet&#8217;\u0131n temel mimarisi, kurulum ad\u0131mlar\u0131 ve ilk yap\u0131land\u0131rma \u00f6rnekleri dahil olmak \u00fczere, Puppet 4&#8217;\u00fc Ubuntu 16.04 i\u015fletim sistemi \u00fczerine nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Ubuntu 16.04, uzun s\u00fcreli destek (LTS) sunan stabil bir s\u00fcr\u00fcm olmas\u0131na ra\u011fmen, Puppet 4&#8217;\u00fcn de belirli bir olgunlu\u011fa ula\u015fm\u0131\u015f bir s\u00fcr\u00fcm oldu\u011funu unutmamak \u00f6nemlidir. Bu rehber, hem Puppet Master (sunucu) hem de Puppet Agent (istemci) kurulumunu detayland\u0131racakt\u0131r.<\/p>\n<h3>Puppet Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h3>\n<p>Puppet, sunucular\u0131n\u0131z\u0131n ve di\u011fer altyap\u0131 bile\u015fenlerinizin yap\u0131land\u0131rmas\u0131n\u0131 otomatikle\u015ftirmek i\u00e7in kullan\u0131lan bir yap\u0131land\u0131rma y\u00f6netimi arac\u0131d\u0131r. Ruby dilinde yaz\u0131lm\u0131\u015ft\u0131r ve declarative (bildirimsel) bir dil olan Puppet DSL (Domain Specific Language) kullan\u0131r. Bu dil, sistemlerinizin &#8220;nas\u0131l olmas\u0131 gerekti\u011fini&#8221; tan\u0131mlaman\u0131za olanak tan\u0131r, &#8220;nas\u0131l yap\u0131laca\u011f\u0131n\u0131&#8221; de\u011fil. \u00d6rne\u011fin, bir dosyan\u0131n var olmas\u0131 gerekti\u011fini, belirli bir i\u00e7eri\u011fe sahip olmas\u0131 gerekti\u011fini veya bir servisin \u00e7al\u0131\u015f\u0131yor olmas\u0131 gerekti\u011fini belirtirsiniz. Puppet, bu durumu sa\u011flamak i\u00e7in gerekli ad\u0131mlar\u0131 kendisi atar.<\/p>\n<p>Puppet kullanman\u0131n ba\u015fl\u0131ca faydalar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong>Tutarl\u0131l\u0131k:<\/strong> T\u00fcm sunucular\u0131n\u0131zda ayn\u0131 yap\u0131land\u0131rman\u0131n uygulanmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Hata Azaltma:<\/strong> Manuel yap\u0131land\u0131rma hatalar\u0131n\u0131 ortadan kald\u0131r\u0131r.<br \/>\n*   <strong>H\u0131z:<\/strong> Yeni sunucular\u0131n h\u0131zl\u0131 bir \u015fekilde devreye al\u0131nmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Y\u00fczlerce, hatta binlerce sunucuyu kolayca y\u00f6netmenize olanak tan\u0131r.<br \/>\n*   <strong>Dok\u00fcmantasyon:<\/strong> Yap\u0131land\u0131rma kodunuz, altyap\u0131n\u0131z\u0131n bir dok\u00fcmantasyonu g\u00f6revi g\u00f6r\u00fcr.<br \/>\n*   <strong>De\u011fi\u015fim Y\u00f6netimi:<\/strong> Yap\u0131land\u0131rma de\u011fi\u015fikliklerinin izlenmesini ve geri al\u0131nmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>Puppet, Master-Agent mimarisini kullan\u0131r. Puppet Master, yap\u0131land\u0131rma dosyalar\u0131n\u0131 (manifestler) bar\u0131nd\u0131r\u0131r ve Agent&#8217;lar\u0131n isteklerine yan\u0131t verir. Puppet Agent&#8217;lar ise, Master&#8217;dan yap\u0131land\u0131rma bilgilerini al\u0131r ve kendi \u00fczerlerinde uygular. Bu s\u00fcre\u00e7, genellikle 30 dakikada bir tekrarlan\u0131r, ancak manuel olarak da tetiklenebilir.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Puppet kurulumuna ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olun:<\/p>\n<p>*   <strong>\u0130ki Adet Ubuntu 16.04 Sunucusu:<\/strong> Biri Puppet Master, di\u011feri Puppet Agent olarak g\u00f6rev yapacak. Her iki sunucunun da en az 1GB RAM&#8217;e sahip olmas\u0131 \u00f6nerilir (Puppet Master i\u00e7in 2GB+ daha iyi performans sa\u011flar).<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Her iki sunucuda da <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131.<br \/>\n*   <strong>A\u011f Ba\u011flant\u0131s\u0131:<\/strong> Sunucular aras\u0131nda a\u011f ba\u011flant\u0131s\u0131 ve Puppet Master&#8217;\u0131n 8140 portunun eri\u015filebilir olmas\u0131.<br \/>\n*   <strong>Hostname ve DNS Yap\u0131land\u0131rmas\u0131:<\/strong> Sunucular\u0131n\u0131z\u0131n do\u011fru hostname&#8217;lere sahip olmas\u0131 ve birbirlerini isimleriyle \u00e7\u00f6z\u00fcmleyebilmesi kritik \u00f6neme sahiptir. Bu, <code>\/etc\/hosts<\/code> dosyas\u0131 \u00fczerinden veya bir DNS sunucusu arac\u0131l\u0131\u011f\u0131yla sa\u011flanabilir.<\/p>\n<p>Bu rehberde, a\u015fa\u011f\u0131daki hostname&#8217;leri kullanaca\u011f\u0131z:<br \/>\n*   Puppet Master: <code>puppetmaster.example.com<\/code><br \/>\n*   Puppet Agent: <code>puppetagent1.example.com<\/code><\/p>\n<p>L\u00fctfen bu isimleri kendi ortam\u0131n\u0131za uygun olarak de\u011fi\u015ftirin veya \u00f6rnekteki gibi kullan\u0131n.<\/p>\n<h3>Puppet Master Kurulumu<\/h3>\n<p>Puppet Master, t\u00fcm yap\u0131land\u0131rma dosyalar\u0131n\u0131 ve sertifika yetkilisi (CA) i\u015flevini bar\u0131nd\u0131ran merkezi sunucudur.<\/p>\n<h4>Sistem G\u00fcncellemesi ve Temel Ayarlar<\/h4>\n<p>Kuruluma ba\u015flamadan \u00f6nce, her zaman oldu\u011fu gibi sisteminizi g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h4>Hostname ve <code>\/etc\/hosts<\/code> Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Puppet, sunucular\u0131n birbirini isimleriyle tan\u0131mas\u0131 i\u00e7in do\u011fru hostname ve DNS \u00e7\u00f6z\u00fcmlemesine ihtiya\u00e7 duyar.<\/p>\n<p><strong>Puppet Master \u00dczerinde:<\/strong><\/p>\n<p>1.  Hostname&#8217;i ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo hostnamectl set-hostname puppetmaster.example.com<\/code><\/pre>\n<p>2.  <code>\/etc\/hosts<\/code> dosyas\u0131n\u0131 d\u00fczenleyin. Bu dosya, Puppet Master&#8217;\u0131n kendisini ve Puppet Agent&#8217;\u0131 isimleriyle \u00e7\u00f6zebilmesini sa\u011flamal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/hosts<\/code><\/pre>\n<p>    Dosyaya a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin (IP adreslerini kendi sunucular\u0131n\u0131z\u0131nkilerle de\u011fi\u015ftirin):<\/p>\n<pre><code class=\"language-\">127.0.0.1 localhost\n    127.0.1.1 puppetmaster.example.com puppetmaster\n\n    # Puppet Master'\u0131n kendi IP'si\n    192.168.1.10 puppetmaster.example.com puppetmaster\n\n    # Puppet Agent'\u0131n IP'si\n    192.168.1.20 puppetagent1.example.com puppetagent1<\/code><\/pre>\n<p>    Dosyay\u0131 kaydedip kapat\u0131n (Ctrl+O, Enter, Ctrl+X).<\/p>\n<p>    De\u011fi\u015fikliklerin uygulanmas\u0131 i\u00e7in sistemi yeniden ba\u015flatman\u0131z gerekebilir veya <code>sudo systemctl restart hostname.service<\/code> komutunu kullanabilirsiniz. Ancak genellikle <code>hostnamectl<\/code> komutu an\u0131nda etkili olur.<\/p>\n<h4>Puppet Repository Ekleme<\/h4>\n<p>Puppet paketleri Ubuntu&#8217;nun varsay\u0131lan depolar\u0131nda bulunmaz. Bu y\u00fczden Puppet Labs&#8217;\u0131n kendi deposunu eklememiz gerekir. Puppet 4 i\u00e7in Ubuntu 16.04 (Xenial) s\u00fcr\u00fcm\u00fcne \u00f6zel depoyu ekleyece\u011fiz.<\/p>\n<p>1.  Puppet 4 release paketini indirin:<\/p>\n<pre><code class=\"language-bash\">wget https:\/\/apt.puppet.com\/puppet4-release-xenial.deb<\/code><\/pre>\n<p>    <strong>Not:<\/strong> Bu URL, Puppet 4&#8217;\u00fcn Ubuntu 16.04 i\u00e7in \u00f6zel deposudur. Daha yeni Puppet s\u00fcr\u00fcmleri veya Ubuntu s\u00fcr\u00fcmleri i\u00e7in farkl\u0131 URL&#8217;ler kullanman\u0131z gerekebilir.<br \/>\n2.  \u0130ndirilen .deb paketini kurun:<\/p>\n<pre><code class=\"language-bash\">sudo dpkg -i puppet4-release-xenial.deb<\/code><\/pre>\n<p>3.  Yeni depoyu sisteminize tan\u0131tmak i\u00e7in <code>apt<\/code> depolar\u0131n\u0131 g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update<\/code><\/pre>\n<h4>Puppet Server Kurulumu<\/h4>\n<p>Depo eklendikten sonra Puppet Server paketini kurabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install puppetserver -y<\/code><\/pre>\n<p>Kurulum biraz zaman alabilir, \u00e7\u00fcnk\u00fc Puppet Server Java tabanl\u0131d\u0131r ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fcklenir.<\/p>\n<h4>Java Bellek Ayarlar\u0131<\/h4>\n<p>Puppet Server, Java Sanal Makinesi (JVM) \u00fczerinde \u00e7al\u0131\u015f\u0131r ve varsay\u0131lan olarak y\u00fcksek bellek tahsis edebilir. K\u00fc\u00e7\u00fck ortamlar i\u00e7in bu bellek miktar\u0131n\u0131 d\u00fc\u015f\u00fcrmek, sistem kaynaklar\u0131n\u0131n daha verimli kullan\u0131lmas\u0131na yard\u0131mc\u0131 olur. Genellikle 512MB ba\u015flang\u0131\u00e7 ve 1GB maksimum bellek yeterli olacakt\u0131r.<\/p>\n<p>1.  Puppet Server&#8217;\u0131n varsay\u0131lan ayarlar\u0131n\u0131 i\u00e7eren dosyay\u0131 d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/default\/puppetserver<\/code><\/pre>\n<p>2.  <code>JAVA_ARGS<\/code> sat\u0131r\u0131n\u0131 bulun ve a\u015fa\u011f\u0131daki gibi d\u00fczenleyin (veya ekleyin):<\/p>\n<pre><code class=\"language-\">JAVA_ARGS=\"-Xms512m -Xmx1g\"<\/code><\/pre>\n<p>    Bu ayar, JVM&#8217;ye ba\u015flang\u0131\u00e7ta 512MB ve maksimum 1GB bellek kullanmas\u0131n\u0131 s\u00f6yler. Daha b\u00fcy\u00fck ortamlar i\u00e7in bu de\u011ferleri art\u0131rman\u0131z gerekebilir.<\/p>\n<h4>Puppet Server&#8217;\u0131 Ba\u015flatma ve Etkinle\u015ftirme<\/h4>\n<p>Ayarlar\u0131 yapt\u0131ktan sonra Puppet Server servisini ba\u015flat\u0131n ve sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start puppetserver\nsudo systemctl enable puppetserver<\/code><\/pre>\n<p>Servisin durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status puppetserver<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Active: active (running)<\/code> ifadesini g\u00f6rmelisiniz.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Puppet Master, Puppet Agent&#8217;lardan gelen ba\u011flant\u0131lar\u0131 kabul etmek i\u00e7in 8140 portunu kullan\u0131r. E\u011fer bir g\u00fcvenlik duvar\u0131 (\u00f6rne\u011fin UFW) kullan\u0131yorsan\u0131z, bu portu a\u00e7man\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 8140\/tcp\nsudo ufw enable # E\u011fer UFW aktif de\u011filse<\/code><\/pre>\n<h3>Puppet Agent Kurulumu<\/h3>\n<p>\u015eimdi Puppet Agent&#8217;\u0131 kuraca\u011f\u0131m\u0131z sunucuya ge\u00e7elim. Bu sunucu, Puppet Master&#8217;dan yap\u0131land\u0131rma bilgilerini alacak ve uygulayacakt\u0131r.<\/p>\n<h4>Sistem G\u00fcncellemesi ve Temel Ayarlar<\/h4>\n<p>Puppet Agent sunucusunda da sistemi g\u00fcncelleyerek ba\u015flay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h4>Hostname ve <code>\/etc\/hosts<\/code> Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Puppet Agent&#8217;\u0131n da do\u011fru hostname&#8217;e sahip olmas\u0131 ve Puppet Master&#8217;\u0131 isimleriyle \u00e7\u00f6zebilmesi gerekir.<\/p>\n<p><strong>Puppet Agent \u00dczerinde:<\/strong><\/p>\n<p>1.  Hostname&#8217;i ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo hostnamectl set-hostname puppetagent1.example.com<\/code><\/pre>\n<p>2.  <code>\/etc\/hosts<\/code> dosyas\u0131n\u0131 d\u00fczenleyin. Bu dosya, Puppet Agent&#8217;\u0131n kendisini ve Puppet Master&#8217;\u0131 isimleriyle \u00e7\u00f6zebilmesini sa\u011flamal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/hosts<\/code><\/pre>\n<p>    Dosyaya a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin (IP adreslerini kendi sunucular\u0131n\u0131z\u0131nkilerle de\u011fi\u015ftirin):<\/p>\n<pre><code class=\"language-\">127.0.0.1 localhost\n    127.0.1.1 puppetagent1.example.com puppetagent1\n\n    # Puppet Agent'\u0131n kendi IP'si\n    192.168.1.20 puppetagent1.example.com puppetagent1\n\n    # Puppet Master'\u0131n IP'si\n    192.168.1.10 puppetmaster.example.com puppetmaster<\/code><\/pre>\n<p>    Dosyay\u0131 kaydedip kapat\u0131n.<\/p>\n<h4>Puppet Repository Ekleme<\/h4>\n<p>Puppet Master&#8217;da yapt\u0131\u011f\u0131m\u0131z gibi, Puppet Agent&#8217;a da Puppet 4 deposunu eklememiz gerekiyor:<\/p>\n<p>1.  Puppet 4 release paketini indirin:<\/p>\n<pre><code class=\"language-bash\">wget https:\/\/apt.puppet.com\/puppet4-release-xenial.deb<\/code><\/pre>\n<p>2.  \u0130ndirilen .deb paketini kurun:<\/p>\n<pre><code class=\"language-bash\">sudo dpkg -i puppet4-release-xenial.deb<\/code><\/pre>\n<p>3.  Yeni depoyu sisteminize tan\u0131tmak i\u00e7in <code>apt<\/code> depolar\u0131n\u0131 g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update<\/code><\/pre>\n<h4>Puppet Agent Kurulumu<\/h4>\n<p>Depo eklendikten sonra Puppet Agent paketini kurabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install puppet-agent -y<\/code><\/pre>\n<h4>Puppet Agent Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Puppet Agent&#8217;\u0131n hangi Puppet Master&#8217;a ba\u011flanaca\u011f\u0131n\u0131 bilmesi gerekir. Bu bilgiyi <code>\/etc\/puppetlabs\/puppet\/puppet.conf<\/code> dosyas\u0131na ekleyece\u011fiz.<\/p>\n<p>1.  Yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/puppetlabs\/puppet\/puppet.conf<\/code><\/pre>\n<p>2.  <code>[main]<\/code> blo\u011funun alt\u0131na <code>server = puppetmaster.example.com<\/code> sat\u0131r\u0131n\u0131 ekleyin:<\/p>\n<pre><code class=\"language-ini\"># Bu dosya Puppet Agent'\u0131n yap\u0131land\u0131rma ayarlar\u0131n\u0131 i\u00e7erir.\n    [main]\n    logdir = \/var\/log\/puppetlabs\/puppet\n    rundir = \/var\/run\/puppetlabs\n    ssldir = \/etc\/puppetlabs\/puppet\/ssl\n    server = puppetmaster.example.com # Bu sat\u0131r\u0131 ekleyin veya d\u00fczenleyin<\/code><\/pre>\n<p>    Dosyay\u0131 kaydedip kapat\u0131n.<\/p>\n<h4>Puppet Agent&#8217;\u0131 Ba\u015flatma ve Etkinle\u015ftirme<\/h4>\n<p>Puppet Agent servisini ba\u015flat\u0131n ve sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start puppet\nsudo systemctl enable puppet<\/code><\/pre>\n<p>Servisin durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status puppet<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Active: active (running)<\/code> ifadesini g\u00f6rmelisiniz.<\/p>\n<h3>Sertifika \u0130mzalama (Certificate Signing)<\/h3>\n<p>Puppet Master ve Agent aras\u0131ndaki ileti\u015fim, SSL sertifikalar\u0131 kullan\u0131larak g\u00fcvenli hale getirilir. Her Puppet Agent, ilk ba\u011flant\u0131s\u0131nda Master&#8217;dan bir sertifika ister. Master bu iste\u011fi onaylamal\u0131 ve sertifikay\u0131 imzalamal\u0131d\u0131r.<\/p>\n<h4>Agent&#8217;tan Sertifika \u0130ste\u011fi G\u00f6nderme<\/h4>\n<p><strong>Puppet Agent \u00dczerinde:<\/strong><\/p>\n<p>Agent&#8217;\u0131n Master&#8217;a bir sertifika iste\u011fi g\u00f6ndermesi i\u00e7in bir kez Puppet Agent&#8217;\u0131 test modunda \u00e7al\u0131\u015ft\u0131rmas\u0131 gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo \/opt\/puppetlabs\/bin\/puppet agent --test<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Agent Master&#8217;a ba\u011flanmaya \u00e7al\u0131\u015facak, sertifika iste\u011fi olu\u015fturacak ve Master&#8217;\u0131n sertifika yetkilisine (CA) g\u00f6nderecektir. \u00c7\u0131kt\u0131da genellikle &#8220;Exiting; no certificate found and waitforcert is disabled&#8221; veya &#8220;Waiting for certificate from puppetmaster.example.com&#8221; gibi bir mesaj g\u00f6receksiniz. Bu normaldir, \u00e7\u00fcnk\u00fc sertifika hen\u00fcz imzalanmam\u0131\u015ft\u0131r.<\/p>\n<h4>Master&#8217;da Sertifika \u0130steklerini Listeleme ve \u0130mzalama<\/h4>\n<p><strong>Puppet Master \u00dczerinde:<\/strong><\/p>\n<p>1.  Bekleyen sertifika isteklerini listeleyin:<\/p>\n<pre><code class=\"language-bash\">sudo \/opt\/puppetlabs\/bin\/puppet cert list<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131da, <code>puppetagent1.example.com<\/code> gibi bekleyen bir istek g\u00f6rmelisiniz. Genellikle ba\u015f\u0131nda <code>\"<\/code> ile i\u015faretlenir.<\/p>\n<pre><code class=\"language-\">\"puppetagent1.example.com\" (SHA256) A1B2C3D4E5F6G7H8I9J0...<\/code><\/pre>\n<p>2.  Agent&#8217;\u0131n sertifikas\u0131n\u0131 imzalay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo \/opt\/puppetlabs\/bin\/puppet cert sign puppetagent1.example.com<\/code><\/pre>\n<p>    Ba\u015far\u0131l\u0131 bir imzalama sonras\u0131 &#8220;Signed certificate for puppetagent1.example.com&#8221; gibi bir mesaj almal\u0131s\u0131n\u0131z.<\/p>\n<h4>Agent&#8217;\u0131n Ba\u011flant\u0131y\u0131 Do\u011frulama<\/h4>\n<p><strong>Puppet Agent \u00dczerinde:<\/strong><\/p>\n<p>Sertifika imzaland\u0131ktan sonra, Agent&#8217;\u0131n tekrar Master ile ileti\u015fim kurarak imzal\u0131 sertifikay\u0131 almas\u0131 ve ba\u011flant\u0131y\u0131 do\u011frulamas\u0131 gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo \/opt\/puppetlabs\/bin\/puppet agent --test<\/code><\/pre>\n<p>Bu sefer, Agent Master&#8217;dan yap\u0131land\u0131rmay\u0131 ba\u015far\u0131yla almal\u0131 ve uygulamal\u0131d\u0131r. Hen\u00fcz bir manifest tan\u0131mlamad\u0131\u011f\u0131m\u0131z i\u00e7in, &#8220;Notice: Applied catalog in X.XX seconds&#8221; gibi bir mesaj g\u00f6rmelisiniz, ancak herhangi bir kaynak de\u011fi\u015fikli\u011fi olmayacakt\u0131r.<\/p>\n<p>Art\u0131k Puppet Master ve Agent aras\u0131nda g\u00fcvenli bir ba\u011flant\u0131 kurulmu\u015ftur.<\/p>\n<h3>\u0130lk Manifest Olu\u015fturma ve Uygulama<\/h3>\n<p>Puppet&#8217;\u0131n temelini manifestler olu\u015fturur. Manifestler, Puppet&#8217;\u0131n anlayabilece\u011fi \u015fekilde sistemlerin yap\u0131land\u0131rmas\u0131n\u0131 tan\u0131mlayan dosyalard\u0131r. \u015eimdi basit bir manifest olu\u015fturarak Puppet&#8217;\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6relim.<\/p>\n<h4>Puppet Kavramlar\u0131: Manifestler, Kaynaklar, S\u0131n\u0131flar, Mod\u00fcller<\/h4>\n<p>*   <strong>Manifest (Bildirge):<\/strong> Puppet DSL kullan\u0131larak yaz\u0131lm\u0131\u015f, sistemin istenen durumunu tan\u0131mlayan dosyalard\u0131r. Genellikle <code>.pp<\/code> uzant\u0131l\u0131d\u0131r.<br \/>\n*   <strong>Kaynak (Resource):<\/strong> Y\u00f6netilen bir sistemin temel yap\u0131 ta\u015f\u0131d\u0131r (\u00f6rne\u011fin, bir dosya, bir servis, bir paket, bir kullan\u0131c\u0131). Her kayna\u011f\u0131n bir t\u00fcr\u00fc (file, service, package, user) ve bir dizi \u00f6zelli\u011fi (ensure, content, mode, enable, running) vard\u0131r.<br \/>\n*   <strong>S\u0131n\u0131f (Class):<\/strong> \u0130lgili kaynaklar\u0131n ve di\u011fer s\u0131n\u0131flar\u0131n mant\u0131ksal bir grupland\u0131rmas\u0131d\u0131r. Tekrar kullan\u0131labilirli\u011fi art\u0131r\u0131r.<br \/>\n*   <strong>Mod\u00fcl (Module):<\/strong> S\u0131n\u0131flar\u0131, tan\u0131mlar\u0131, dosyalar\u0131, \u015fablonlar\u0131 ve di\u011fer eklentileri bir araya getiren dizin yap\u0131s\u0131d\u0131r. Puppet Forge&#8217;dan haz\u0131r mod\u00fcller indirilebilir veya kendi mod\u00fcllerinizi olu\u015fturabilirsiniz.<\/p>\n<h4>Basit Bir Manifest Olu\u015fturma<\/h4>\n<p>\u015eimdi, Puppet Agent \u00fczerinde <code>\/tmp\/puppet_test.txt<\/code> ad\u0131nda bir dosya olu\u015fturacak ve i\u00e7ine belirli bir metin yazacak basit bir manifest olu\u015ftural\u0131m.<\/p>\n<p><strong>Puppet Master \u00dczerinde:<\/strong><\/p>\n<p>1.  Puppet&#8217;\u0131n varsay\u0131lan \u00fcretim ortam\u0131n\u0131n manifestler dizinine gidin:<\/p>\n<pre><code class=\"language-bash\">cd \/etc\/puppetlabs\/code\/environments\/production\/manifests\/<\/code><\/pre>\n<p>2.  <code>site.pp<\/code> dosyas\u0131n\u0131 d\u00fczenleyin (veya olu\u015fturun). Bu dosya, varsay\u0131lan olarak t\u00fcm Puppet Agent&#8217;lar i\u00e7in ge\u00e7erli olan manifestleri i\u00e7erir.<\/p>\n<pre><code class=\"language-bash\">sudo nano site.pp<\/code><\/pre>\n<p>3.  Dosyaya a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-puppet\"># site.pp - Puppet Master'\u0131n ana manifest dosyas\u0131\n\n    # puppetagent1.example.com i\u00e7in \u00f6zel yap\u0131land\u0131rma\n    node 'puppetagent1.example.com' {\n      # \/tmp\/puppet_test.txt ad\u0131nda bir dosya kayna\u011f\u0131 tan\u0131mla\n      file { '\/tmp\/puppet_test.txt':\n        ensure  => file,                       # Dosyan\u0131n var olmas\u0131n\u0131 sa\u011fla\n        content => 'Bu dosya Puppet taraf\u0131ndan olu\u015fturuldu ve y\u00f6netiliyor!', # Dosyan\u0131n i\u00e7eri\u011fi\n        mode    => '0644',                     # Dosya izinleri\n        owner   => 'root',                     # Dosyan\u0131n sahibi\n        group   => 'root',                     # Dosyan\u0131n grubu\n      }\n\n      # Bir paket kayna\u011f\u0131 tan\u0131mla (\u00f6rne\u011fin, htop paketinin y\u00fckl\u00fc olmas\u0131n\u0131 sa\u011fla)\n      package { 'htop':\n        ensure => installed,\n      }\n    }\n\n    # Di\u011fer nodelar i\u00e7in varsay\u0131lan yap\u0131land\u0131rma (iste\u011fe ba\u011fl\u0131)\n    # node default {\n    #   notify { 'Bu, varsay\u0131lan node i\u00e7in bir bildirimdir.': }\n    # }<\/code><\/pre>\n<p>    Dosyay\u0131 kaydedip kapat\u0131n.<\/p>\n<p>    Bu manifest, <code>puppetagent1.example.com<\/code> adl\u0131 node i\u00e7in iki kaynak tan\u0131mlar:<br \/>\n    *   <code>\/tmp\/puppet_test.txt<\/code> ad\u0131nda bir dosya, belirli bir i\u00e7erik ve izinlerle.<br \/>\n    *   <code>htop<\/code> paketi, y\u00fckl\u00fc durumda olacak.<\/p>\n<p>    <code>node<\/code> blo\u011fu, belirli bir hostname&#8217;e sahip Agent&#8217;lar i\u00e7in \u00f6zel yap\u0131land\u0131rma yapman\u0131z\u0131 sa\u011flar.<\/p>\n<h4>Manifest&#8217;i Uygulama<\/h4>\n<p>Manifest&#8217;i olu\u015fturduktan sonra, Puppet Agent&#8217;\u0131n bu yap\u0131land\u0131rmay\u0131 Master&#8217;dan al\u0131p kendi \u00fczerinde uygulamas\u0131n\u0131 sa\u011flayal\u0131m.<\/p>\n<p><strong>Puppet Agent \u00dczerinde:<\/strong><\/p>\n<p>Puppet Agent&#8217;\u0131 tekrar test modunda \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo \/opt\/puppetlabs\/bin\/puppet agent --test<\/code><\/pre>\n<p>Bu komut, Agent&#8217;\u0131n Master&#8217;dan yeni katalo\u011fu (yap\u0131land\u0131rma bilgilerini) \u00e7ekmesini ve uygulamas\u0131n\u0131 tetikleyecektir. \u00c7\u0131kt\u0131da a\u015fa\u011f\u0131daki gibi de\u011fi\u015fiklikleri g\u00f6rmelisiniz:<\/p>\n<pre><code class=\"language-\">Info: Retrieving pluginfacts\nInfo: Retrieving plugins\nInfo: Loading facts\nInfo: Caching catalog for puppetagent1.example.com\nInfo: Applying configuration version '1678886400'\nNotice: \/Stage[main]\/Main\/Node[puppetagent1.example.com]\/File[\/tmp\/puppet_test.txt]\/ensure: defined content as '{md5}...'\nNotice: \/Stage[main]\/Main\/Node[puppetagent1.example.com]\/Package[htop]\/ensure: created\nNotice: Applied catalog in X.XX seconds<\/code><\/pre>\n<p>Bu \u00e7\u0131kt\u0131, Puppet&#8217;\u0131n <code>\/tmp\/puppet_test.txt<\/code> dosyas\u0131n\u0131 olu\u015fturdu\u011funu ve <code>htop<\/code> paketini kurdu\u011funu g\u00f6sterir.<\/p>\n<p>\u015eimdi Agent sunucusunda bu de\u011fi\u015fiklikleri do\u011frulayal\u0131m:<\/p>\n<p>1.  Dosyan\u0131n i\u00e7eri\u011fini kontrol edin:<\/p>\n<pre><code class=\"language-bash\">cat \/tmp\/puppet_test.txt<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131 olarak &#8220;Bu dosya Puppet taraf\u0131ndan olu\u015fturuldu ve y\u00f6netiliyor!&#8221; metnini g\u00f6rmelisiniz.<br \/>\n2.  <code>htop<\/code> paketinin y\u00fckl\u00fc olup olmad\u0131\u011f\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">dpkg -l htop<\/code><\/pre>\n<p>    Veya do\u011frudan <code>htop<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">htop<\/code><\/pre>\n<p>    <code>htop<\/code> komutu \u00e7al\u0131\u015f\u0131rsa, paket ba\u015far\u0131yla y\u00fcklenmi\u015f demektir.<\/p>\n<p>Tebrikler! \u0130lk Puppet manifestinizi ba\u015far\u0131yla olu\u015fturdunuz ve uygulad\u0131n\u0131z.<\/p>\n<h3>Mod\u00fcller ve Daha Geli\u015fmi\u015f Kullan\u0131m<\/h3>\n<p>Tek bir <code>site.pp<\/code> dosyas\u0131 ile t\u00fcm yap\u0131land\u0131rmay\u0131 y\u00f6netmek, k\u00fc\u00e7\u00fck ortamlar i\u00e7in m\u00fcmk\u00fcn olsa da, b\u00fcy\u00fck ve karma\u015f\u0131k altyap\u0131larda s\u00fcrd\u00fcr\u00fclebilir de\u011fildir. Puppet, bu sorunu mod\u00fcllerle \u00e7\u00f6zer.<\/p>\n<h4>Mod\u00fcller Nedir?<\/h4>\n<p>Mod\u00fcller, ilgili s\u0131n\u0131flar\u0131, kaynaklar\u0131, tan\u0131mlar\u0131, \u015fablonlar\u0131 ve dosyalar\u0131 mant\u0131ksal bir dizin yap\u0131s\u0131 alt\u0131nda bir araya getiren birimlerdir. Bir web sunucusu (Nginx, Apache), bir veritaban\u0131 (MySQL, PostgreSQL) veya bir uygulama gibi belirli bir bile\u015fenin yap\u0131land\u0131rmas\u0131n\u0131 y\u00f6netmek i\u00e7in mod\u00fcller kullan\u0131l\u0131r.<\/p>\n<p><strong>Mod\u00fcl Dizini Yap\u0131s\u0131:<\/strong><\/p>\n<p>Puppet Master&#8217;da mod\u00fcller genellikle <code>\/etc\/puppetlabs\/code\/environments\/production\/modules\/<\/code> dizini alt\u0131nda bulunur. Bir mod\u00fcl\u00fcn temel yap\u0131s\u0131 \u015f\u00f6yledir:<\/p>\n<pre><code class=\"language-\"><mod\u00fcl_ad\u0131>\/\n\u251c\u2500\u2500 manifests\/\n\u2502   \u251c\u2500\u2500 init.pp          # Mod\u00fcl\u00fcn ana s\u0131n\u0131f\u0131\n\u2502   \u251c\u2500\u2500 params.pp        # Parametreler i\u00e7in s\u0131n\u0131f (iste\u011fe ba\u011fl\u0131)\n\u2502   \u2514\u2500\u2500 <di\u011fer_s\u0131n\u0131flar>.pp\n\u251c\u2500\u2500 files\/               # Static dosyalar\n\u251c\u2500\u2500 templates\/           # \u015eablon dosyalar\u0131 (ERB veya EPP)\n\u251c\u2500\u2500 lib\/                 # \u00d6zel fakt\u00f6rler, tipler, sa\u011flay\u0131c\u0131lar\n\u251c\u2500\u2500 spec\/                # Testler\n\u2514\u2500\u2500 metadata.json        # Mod\u00fcl\u00fcn meta verileri<\/code><\/pre>\n<h4>Mod\u00fcl Kullan\u0131m\u0131na K\u0131sa Bir Bak\u0131\u015f<\/h4>\n<p>\u00d6rne\u011fin, bir Nginx web sunucusunu kurmak ve yap\u0131land\u0131rmak i\u00e7in bir Nginx mod\u00fcl\u00fc kullanabilirsiniz. Puppet Forge (forge.puppet.com) adresinden binlerce haz\u0131r mod\u00fcl bulabilirsiniz.<\/p>\n<p><strong>Puppet Master \u00dczerinde:<\/strong><\/p>\n<p>1.  <strong>Mod\u00fcl Kurulumu (\u00d6rnek):<\/strong><br \/>\n    Puppet Forge&#8217;dan bir mod\u00fcl\u00fc indirmek i\u00e7in <code>puppet module install<\/code> komutunu kullanabilirsiniz. \u00d6rne\u011fin, Nginx mod\u00fcl\u00fcn\u00fc kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo \/opt\/puppetlabs\/bin\/puppet module install puppetlabs-nginx<\/code><\/pre>\n<p>    Bu komut, <code>puppetlabs-nginx<\/code> mod\u00fcl\u00fcn\u00fc <code>\/etc\/puppetlabs\/code\/environments\/production\/modules\/<\/code> dizinine indirecektir.<br \/>\n2.  <strong>Manifest&#8217;te Mod\u00fcl\u00fc Kullanma:<\/strong><br \/>\n    <code>site.pp<\/code> dosyan\u0131z\u0131 d\u00fczenleyerek Nginx mod\u00fcl\u00fcn\u00fc Agent&#8217;a uygulayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/puppetlabs\/code\/environments\/production\/manifests\/site.pp<\/code><\/pre>\n<p>    <code>node 'puppetagent1.example.com'<\/code> blo\u011funa a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-puppet\">node 'puppetagent1.example.com' {\n      # ... \u00f6nceki kaynaklar ...\n\n      # Nginx mod\u00fcl\u00fcn\u00fc dahil et\n      class { 'nginx':\n        nginx_ensure => 'present',\n        nginx_package_name => 'nginx',\n        nginx_service_name => 'nginx',\n      }\n\n      # Nginx'in varsay\u0131lan web k\u00f6k dizinine bir dosya yerle\u015ftir\n      file { '\/var\/www\/html\/index.nginx-debian.html':\n        ensure  => file,\n        content => '',\n        mode    => '0644',\n        require => Class['nginx'], # Nginx mod\u00fcl\u00fc kurulduktan sonra \u00e7al\u0131\u015ft\u0131r\n      }\n    }<\/code><\/pre>\n<p>    Bu \u00f6rnek, <code>nginx<\/code> s\u0131n\u0131f\u0131n\u0131 <code>puppetagent1.example.com<\/code> node&#8217;una dahil eder ve Nginx&#8217;in kurulmas\u0131n\u0131 sa\u011flar. Ard\u0131ndan, Nginx&#8217;in web k\u00f6k dizinine basit bir HTML dosyas\u0131 yerle\u015ftirir.<\/p>\n<p>3.  <strong>Uygulama:<\/strong><br \/>\n    <strong>Puppet Agent \u00dczerinde:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo \/opt\/puppetlabs\/bin\/puppet agent --test<\/code><\/pre>\n<p>    Bu komut \u00e7al\u0131\u015ft\u0131ktan sonra, Puppet Agent&#8217;a Nginx&#8217;in kuruldu\u011funu ve <code>\/var\/www\/html\/index.nginx-debian.html<\/code> dosyas\u0131n\u0131n olu\u015fturuldu\u011funu g\u00f6receksiniz. Agent sunucusunun IP adresine bir web taray\u0131c\u0131s\u0131 \u00fczerinden eri\u015ferek Nginx&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulayabilirsiniz.<\/p>\n<p>Mod\u00fcller, Puppet ile karma\u015f\u0131k altyap\u0131lar\u0131 y\u00f6netmenin anahtar\u0131d\u0131r. Kendi mod\u00fcllerinizi yazarak veya Puppet Forge&#8217;dan mevcut mod\u00fclleri kullanarak yap\u0131land\u0131rma y\u00f6netimini \u00e7ok daha g\u00fc\u00e7l\u00fc ve esnek hale getirebilirsiniz.<\/p>\n<h3>Sorun Giderme (Troubleshooting)<\/h3>\n<p>Puppet kurulumu veya yap\u0131land\u0131rmas\u0131 s\u0131ras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>A\u011f Ba\u011flant\u0131s\u0131\/G\u00fcvenlik Duvar\u0131:<\/strong> Puppet Master&#8217;\u0131n 8140 portunun a\u00e7\u0131k oldu\u011fundan ve Agent&#8217;\u0131n Master&#8217;a eri\u015febildi\u011finden emin olun. <code>telnet puppetmaster.example.com 8140<\/code> veya <code>nc -vz puppetmaster.example.com 8140<\/code> komutlar\u0131yla kontrol edebilirsiniz.<br \/>\n*   <strong>Hostname\/DNS \u00c7\u00f6z\u00fcmlemesi:<\/strong> Hem Master hem de Agent&#8217;\u0131n birbirlerini do\u011fru hostname&#8217;lerle \u00e7\u00f6zebildi\u011finden emin olun. <code>\/etc\/hosts<\/code> dosyalar\u0131n\u0131 tekrar kontrol edin veya DNS sunucunuzun do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun. <code>ping puppetmaster.example.com<\/code> ve <code>ping puppetagent1.example.com<\/code> komutlar\u0131n\u0131 her iki sunucudan da deneyin.<br \/>\n*   <strong>Sertifika Sorunlar\u0131:<\/strong><br \/>\n    *   Agent&#8217;\u0131n sertifika iste\u011fi g\u00f6nderdi\u011finden emin olun (<code>puppet cert list<\/code> komutu Master&#8217;da).<br \/>\n    *   Master&#8217;\u0131n sertifikay\u0131 imzalad\u0131\u011f\u0131ndan emin olun (<code>puppet cert sign<\/code>).<br \/>\n    *   E\u011fer yanl\u0131\u015f bir sertifika imzaland\u0131ysa veya eski bir sertifika sorun yarat\u0131yorsa, sertifikalar\u0131 temizlemeniz gerekebilir:<br \/>\n        *   <strong>Agent&#8217;ta:<\/strong> <code>sudo rm -rf \/etc\/puppetlabs\/puppet\/ssl<\/code><br \/>\n        *   <strong>Master&#8217;da:<\/strong> <code>sudo \/opt\/puppetlabs\/bin\/puppet cert clean puppetagent1.example.com<\/code><br \/>\n        *   Sonra Agent&#8217;tan tekrar sertifika iste\u011fi g\u00f6nderin ve Master&#8217;da imzalay\u0131n.<br \/>\n*   <strong>Puppet Server Bellek Sorunlar\u0131:<\/strong> Puppet Master&#8217;da <code>puppetserver<\/code> servisi ba\u015flam\u0131yorsa veya \u00e7ok yava\u015f \u00e7al\u0131\u015f\u0131yorsa, <code>\/etc\/default\/puppetserver<\/code> dosyas\u0131ndaki <code>JAVA_ARGS<\/code> ayarlar\u0131n\u0131 kontrol edin. Yeterli bellek tahsis edildi\u011finden emin olun. Log dosyalar\u0131n\u0131 kontrol edin.<br \/>\n*   <strong>Log Dosyalar\u0131:<\/strong> Sorunlar\u0131 te\u015fhis etmek i\u00e7in Puppet&#8217;\u0131n log dosyalar\u0131n\u0131 inceleyin:<br \/>\n    *   <strong>Puppet Master:<\/strong> <code>\/var\/log\/puppetlabs\/puppetserver\/puppetserver.log<\/code><br \/>\n    *   <strong>Puppet Agent:<\/strong> <code>\/var\/log\/puppetlabs\/puppet\/agent.log<\/code><br \/>\n*   <strong><code>puppet config print<\/code>:<\/strong> Bu komut, Puppet&#8217;\u0131n mevcut yap\u0131land\u0131rma ayarlar\u0131n\u0131 g\u00f6sterir ve sorun giderme i\u00e7in faydal\u0131d\u0131r. \u00d6zellikle <code>server<\/code> ayar\u0131n\u0131 kontrol edin.<\/p>\n<pre><code class=\"language-bash\">sudo \/opt\/puppetlabs\/bin\/puppet config print server<\/code><\/pre>\n<p>*   <strong>Servis Durumu:<\/strong> Hem <code>puppetserver<\/code> (Master&#8217;da) hem de <code>puppet<\/code> (Agent&#8217;ta) servislerinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status puppetserver # Master'da\n    sudo systemctl status puppet       # Agent'ta<\/code><\/pre>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu rehberde, Puppet 4&#8217;\u00fc Ubuntu 16.04 \u00fczerinde Puppet Master ve Puppet Agent olarak nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, sertifika ileti\u015fimini nas\u0131l sa\u011flayaca\u011f\u0131n\u0131z\u0131 ve ilk basit manifestinizi nas\u0131l olu\u015fturup uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. Art\u0131k temel bir Puppet altyap\u0131s\u0131na sahipsiniz ve yap\u0131land\u0131rma y\u00f6netimi otomasyonuna ilk ad\u0131m\u0131 atm\u0131\u015f bulunuyorsunuz.<\/p>\n<p>Puppet, karma\u015f\u0131k altyap\u0131lar\u0131 y\u00f6netmek i\u00e7in son derece g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu kurulum, Puppet yolculu\u011funuzun sadece ba\u015flang\u0131c\u0131d\u0131r. Daha fazla bilgi edinmek ve yeteneklerinizi geli\u015ftirmek i\u00e7in \u015funlar\u0131 yapabilirsiniz:<\/p>\n<p>*   <strong>Puppet DSL&#8217;i Derinlemesine \u00d6\u011frenin:<\/strong> Farkl\u0131 kaynak t\u00fcrlerini, ko\u015fullu ifadeleri, d\u00f6ng\u00fcleri ve i\u015flevleri ke\u015ffedin.<br \/>\n*   <strong>Mod\u00fclleri Kullan\u0131n ve Olu\u015fturun:<\/strong> Puppet Forge&#8217;daki haz\u0131r mod\u00fclleri inceleyin ve kendi \u00f6zel ihtiya\u00e7lar\u0131n\u0131z i\u00e7in mod\u00fcller yazmay\u0131 \u00f6\u011frenin.<br \/>\n*   <strong>Hiera&#8217;y\u0131 Ke\u015ffedin:<\/strong> Hiera, yap\u0131land\u0131rma verilerini (\u00f6rne\u011fin, \u015fifreler, port numaralar\u0131) koddan ay\u0131rarak daha esnek ve yeniden kullan\u0131labilir manifestler yazman\u0131z\u0131 sa\u011flar.<br \/>\n*   <strong>Ortamlar\u0131 Kullan\u0131n:<\/strong> Geli\u015ftirme, test ve \u00fcretim gibi farkl\u0131 ortamlar olu\u015fturarak yap\u0131land\u0131rma de\u011fi\u015fikliklerini g\u00fcvenli bir \u015fekilde y\u00f6netin.<br \/>\n*   <strong>S\u00fcr\u00fcm Kontrol\u00fc (Git) ile Entegre Edin:<\/strong> Manifestlerinizi ve mod\u00fcllerinizi Git gibi bir s\u00fcr\u00fcm kontrol sistemiyle y\u00f6neterek de\u011fi\u015fiklikleri takip edin ve i\u015fbirli\u011fini kolayla\u015ft\u0131r\u0131n.<\/p>\n<p>Puppet ile altyap\u0131n\u0131z\u0131n y\u00f6netimini otomatikle\u015ftirmek, uzun vadede size b\u00fcy\u00fck zaman ve \u00e7aba tasarrufu sa\u011flayacakt\u0131r. Ba\u015far\u0131lar dileriz!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Puppet 4&#8217;\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi\nBulut bili\u015fim ve DevOps k\u00fclt\u00fcr\u00fcn\u00fcn y\u00fckseli\u015fiyle birlikte, sunucu ve altyap\u0131 y\u00f6netiminde ot","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-30924","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>Puppet 4&#039;\u00fc Ubuntu 16.04 \u00dczerine Kurulum 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\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Puppet 4&#039;\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi\" \/>\n<meta property=\"og:description\" content=\"Puppet 4&#039;\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi Bulut bili\u015fim ve DevOps k\u00fclt\u00fcr\u00fcn\u00fcn y\u00fckseli\u015fiyle birlikte, sunucu ve altyap\u0131 y\u00f6netiminde ot\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-03T10:41:20+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=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Puppet 4&#8217;\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi\",\"datePublished\":\"2025-10-03T10:41:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/\"},\"wordCount\":2817,\"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\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/\",\"name\":\"Puppet 4'\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-03T10:41:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Puppet 4&#8217;\u00fc Ubuntu 16.04 \u00dczerine Kurulum 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":"Puppet 4'\u00fc Ubuntu 16.04 \u00dczerine Kurulum 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\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Puppet 4'\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi","og_description":"Puppet 4'\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi Bulut bili\u015fim ve DevOps k\u00fclt\u00fcr\u00fcn\u00fcn y\u00fckseli\u015fiyle birlikte, sunucu ve altyap\u0131 y\u00f6netiminde ot","og_url":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-03T10:41:20+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Puppet 4&#8217;\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi","datePublished":"2025-10-03T10:41:20+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/"},"wordCount":2817,"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\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/","name":"Puppet 4'\u00fc Ubuntu 16.04 \u00dczerine Kurulum Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-03T10:41:20+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/puppet-4u-ubuntu-16-04-uzerine-kurulum-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Puppet 4&#8217;\u00fc Ubuntu 16.04 \u00dczerine Kurulum 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\/30924","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=30924"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30924\/revisions"}],"predecessor-version":[{"id":30925,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30924\/revisions\/30925"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}