Puppet/tr

Puppet Ruby ile yazılmış bir konfigürasyon yönetimi sistemidir. Sistemlerinize uygulama yükleme/güncelleme işlemi sırasında yardımcı olur.

Kurulum
Puppet Gentoo'da paketi ile sunulmaktadır. Şu anda istemci ve sunucu paketleri arasında bir ayrım bulunmadığından her ikisinde de kurulum aynı şekildedir.

Puppet is provided by the package.

Currently, there is no distinction between server and client, so the basic installation procedure is the same for both.

Emerge
Öncelikle, Puppet'i emerge ile kuralım:

Yapılandırma
Puppet genellikle dosyasından yapılandırılabilir ve yorum olan satırlar diyez (#) ile işaretlenmiş durumda kurulacaktır. Ayar dosyası birçok bölümden oluşmaktadır:

Puppet is mainly configured through in an INI-style format. Comments are marked with a hash sign.

The configuration file is separated into several sections, or blocks:


 * [main] bölümü Puppet'in aşağıdaki bölümlerde özel olarak belirtilmemiş yapılandırma ayarları yok ise geçerli olacak genel ayarları içerir:
 * [master] bölümündeki ayarlar Puppetmaster (puppet yönetim birimi), veya CA aracı (puppet sertifika yönetimi) içindir
 * [agent] bölümündeki ayarlar Puppet agent (puppet istemcisi) yönetimi içindir

Daha derin şekilde bilgiyi (diğer olası yapılandırma bölümleri ile birlikte) resmi Puppet dökümanlarında bulabilirsiniz. Ayrıca tüm geçerli değişkenleri de inceleyebilirsiniz. Tabi ki bazıları yalnızca sunucu veya yalnızca istemci için işe yaramakta.

Sunucu (Puppetmaster) Yapılandırması
Ebuild'den kurulumda öntanımlı olarak gelen dosyası olduğu gibi kullanılabilir. Puppet 2.7.3'de sunucu ile ilgili bölümler şöyle görülmekte:

Dosya sunucusunun ayarlanması
Dosyaları istemcilere gönderebilmek için dosya sunucusunu yapılandırmalıyız. Bu iş için yapıalndırma dosyası 'dur. Öntanımlı olarak herhangi bir dosya servis edilmez.

To be able to send files to the clients, the file server has to be configured. This is done in. By default, there are no files being served.

Yukardaki ayar parçası dizininden dosyalarını alan ve yalnızca 192.168.0.0/24 ağına servis sunan files</tt> isminde (hatırlatma olarak atanmış bir isim) bir paylaşım ayarlamakta. Özel olarak bir adres/blok engellemek istiyorsanız deny</tt> komutunu kullanabilirsiniz.

Puppetmaster Servisini Başlatmak
Puppetmaster'ı başlatmak için kendi init scriptini kullanabiliriz:

İlk çalışması sırasında Puppet, Puppetmaster sunucusu için bir SSL sertifikası üretip ssldir</tt> ile tanımladığımız dizine yerleştirecektir.

8140/TCP portundan dinleme yapan servisin bu porttan istemciler ile iletişime geçmesini engelleyecek bir güvenlik duvarı/ağ filtresi olmadığına emin olun.

Örnek bir manifesto
Manifestolar Puppet'de istemci cihazlar için yapılandırma ayarlarıdır. Manifestoların yazım formatı ile ilgili bilgi için detaylı belgeyi inceleyebilirsiniz.

Manifests, in Puppet's terminology, are the files in which the client configuration is specified. The documentation contains a comprehensive guide about the manifest markup language.

Basit bir örnek olarak istemcide bir günün mesajı (motd) dosyası oluşturalım. Puppetmaster üzerinde önceden tanımladığımız files</tt> paylaşımının dizini içinde bir dosya oluşturalım:

Ardından manifests</tt> dizininde ana manifestoyu oluşturmalıyız. Dosyanın adı site.pp</tt>:

default</tt> tanımı, eğer host için farklı bir node</tt> tanımı yapılarak özel bir yapılandırma sağlanmadığında tüm nodelara (istemciler için kullanılan isimdir) uygulanır. file</tt> (dosya) kaynağını kullanarak puppet</tt> cihazında files</tt> paylaşımındaki motd</tt> dosyasının istemcinin konumunda bulunmasını istedik. Eğer sunucu (puppetmaster) farklı bir isimle anılıyorsa, source</tt> adresini buna göre ayarlamanız gerekmektedir.

İstemci Yapılandırması
Puppet agent'in (istemci) ilk çalıştırılması sırasında, puppetmaster tarafından cihazın sertifikasının imzalanmasını beklemelisiniz. Sertifika talep etmek ve ilk yapılandırmanızı tamamlamak için aşağıdaki kodu çalıştırın:

İstemcinin bağlanabilmesi için, öncelikle sunucuda sertifikayı onaylamanız gerekmekte. İstemciden talep gönderdikten sonra sunucuda sertifika bekleyen node'ların listesinde istemcimiz görülüyor olmalı:

İstemci (client) için sertifikayı imzalayalım:

İstemci sertifikanın onaylanıp onaylanmadığını her 60 saniyede bir kontrol edecektir. Onay alınmasının ardından yapılandırma devam eder:

Bu mesajı gördüyseniz, herşey yolunda demektir. Artık istemcideki dosyasını inceleyebilirsiniz:

OpenRC
Artık puppet agent'ı servis olarak başlatabilir ve açılışta çalışması için ayarlayabilirsiniz:

Systemd
Conversely, when running systemd:

Elle Sertifika Üretimi
Sertifika üretmek için puppet cert</tt> aracını kullanabilirsiniz. Üretilen sertifikaları yerel Puppet Certificate Authority (CA - Puppet Sertifika Otoritesi) kimliğiniz ile imzalayarak puppet yapılandırmasında tanımladığımız ssldir</tt> dizinine kaydedecektir.

To manually generate a certificate, use the utility. It will place all generated certificates into the ssldir defined directory as set in the puppet configuration and will sign them with the key of the local Puppet Certificate Authority (CA).

Basit bir örnek olarak yalnızca bir Common Name: (alan adı) kullanarak sertifika üretmek için:

Eğer birden fazla hostname için geçerli olacak bir sertifika gerekliyse --certdnsnames</tt> parametresini kullanıp, farklı alan adlarını iki nokta ile ayırın:

Bu şekilde üretilen bir sertifika belirtilen üç alan adı için de geçerli olacaktır.

Refreshing agent certificates
This is the process used to manually refresh agent certificates.


 * 1) (on master)
 * 2) (on agent)
 * 3) * This will cause the Puppet agent to regenerate the CSR with the existing SSL key.
 * 4) * The old certificate is no longer valid, as it was nuked on the master.
 * 5) * When one of the above steps is forgotten, an error will pop up about the certificate mis-matching between agent and master.
 * 6) * To replace the SSL keys (optional):
 * 7) (on agent)
 * 8) * When using auto-signing, no further steps are needed.
 * 9) (on master)
 * 10) Verify that the fingerprint listed in the previous two outputs matches
 * 11) (on master)
 * 12) (on agent)

Puppet ile slotları yönetmek
Puppet ile gelen öntanımlı portage besleyicisi paket slotlarını desteklemese de, 3. parti eklentiler sayesinde bu özelliği ekleyebilirsiniz.
 * puppet-portage
 * PortageGT

While the default portage provider in puppet does support slots there are puppet modules available which also have this functionality.

For instance, with version 4.6.0 and higher, and/or, the slot functionality is supported like to:

Additional modules are:
 * puppet-portage
 * PortageGT

Harici kaynaklar

 * Proje sitesi
 * Puppet Wiki


 * Upstream website
 * Puppet Wiki