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.

Ö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:


 * [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.

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.

It listens on Port 8140/TCP, make sure that there are no firewall rules obstructing access from the clients.

A simple manifest
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.

As a simple example, let's create a message of the day (motd) file on the client. On the puppetmaster, create a file inside the files</tt> share created earlier:

Then, we have to create the main manifest file in the manifests</tt> directory. It is called site.pp</tt>:

The default</tt> node (the name for a client) definition is used in case there is no specific node</tt> statement for the host. We use a file</tt> resource and want the file on our clients to contain the same thing as the motd</tt> file in the files</tt> share on the host puppet</tt>. If your puppetmaster is reachable only using another host name, you have to adapt the source</tt> URI accordingly.

Client Configuration
During the first execution of the Puppet agent, you have to wait for your certificate to be signed by the puppetmaster. To request a certificate, and run your first configuration run, execute:

Before the client can connect, you have to authorize the certificate request on the server. Our client should appear in the list of nodes requesting a certificate:

Now, we grant the request:

The client will check every 60 seconds whether its certificate has already been issued. After that, it continues with the first configuration run:

When you're seeing this message, all went well. You can now check the contents of your file on the client:

You can now start the puppet agent as a deamon and have it launch on boot:

Manually generating certificates
To manually generate a certificate, you can use the puppet cert</tt> utility. It will place all generated certificates into the ssldir</tt> as set in the puppet configuration and will sign them with the key of your local Puppet Certificate Authority (CA).

An easy case is the generation of a certificate with only one Common Name:

If you need to have multiple host names the certificate is valid for, use the --certdnsnames</tt> parameter and separate the additional host names with a colon:

This example will generate a certificate valid for the three listed host names.

Managing slots with puppet
While the default portage provider in puppet does not support slots, a 3rd party plugin is available to enable this functionality in puppet.

External resources

 * Upstream website
 * Puppet Wiki