Puppet Yazı Dizisi 1: Puppet Kurulumu

Puppet Otomasyon Yazılımı Kurulumu

puppetPuppet belli bir ölçeğin üzerindeki ortamlarda sıklıkla yapılan veya çok sayıda cihaza uygulanan değişikliklerin otomasyonunu sağlayan yazılımdır. Sistem yöneticileri puppet kullanarak sunucu kaynakları üzerinde provizyonlama, yapılandırma ve çeşitli yönetsel işlemleri yapabilirler. Amaç tekrarlanan veya çok sayıda cihazda tek tek yapılacak işlemleri otomatik bir şekilde uygulayarak zaman kazanmaktır. Puppet sadece sunucular için değil bilişim altyapınızdaki ağ cihazları, işletim sistemleri, yazılımlar ve servisler gibi bir çok bileşeni akıllıca yönetmek için tasarlanmıştır.

PuppetLabs tarafından dağıtılan Puppet, “enterprise” ve açık kaynak olmak üzere iki sürüme sahiptir. Bu yazıda bir çok Linux, Unix ve Windows platformlarında çalışan açık kaynak kodlu sürümün Ubuntu 14.04 üzerinde Master/Agent kurulumu ele alınacaktır. Bunun için merkezi bir PuppetMaster sunucu ile örnek bir istemci sunucu kurulumu anlatılacaktır.

Gereksinimler

PuppetMaster Sunucusu: Puppet master yazılımını kurmak üzere Ubuntu 14.04 yüklü sunucu

Puppet Client Sunucusu: Puppet client yazılımını kurmak ve testler için Ubuntu 14.04 yüklü sunucu

Özel DNS sunucusu: Ağda bulunan sunucuların isimlerini çözmek üzere “forward” ve “reverse” kayıtların tutulduğu DNS sunucusu (Kurulum için daha önceki yazıya göz atabilirsiniz)

Güvenlik duvarı kuralları: İstemci sunucuların master sunucuya “8140” nolu TCP portu üzerinden erişimini sağlayan güvenlik duvarı kuralı

Örnek Mimari

Bu yazıda aşağıdaki gibi bir ortamı kullanacağız.

Sunucu Rolü FQDN IP Adresi
puppet-master Master sunucu puppet-master.vm1.huseyincotuk.com 10.61.2.116
puppet-client İstemci sunucu puppet-client.vm1.huseyincotuk.com 10.61.2.117
ns1 Birincil Alan Adı Sunucusu ns1.vm1.huseyincotuk.com 10.61.2.118
ns2 İkincil Alan Adı Sunucusu ns2.vm1.huseyincotuk.com 10.61.2.119


MASTER Sunucu Kurulumu

Master sunucu diğer istemciler için bir sertifika otoritesi olduğundan sunucular arasında bir tutarsızlık olmaması için zaman sunucusu olarak da hizmet vermelidir. Bu amaçla öncelikle NTP servisi kurulmalıdır. Önce “ntpdate” komutu ile bir defaya mahsus senkronizasyon sağlanmalı, ardından paket kurulumu yapılmalıdır.

Coğrafik olarak en yakın olan sunucular ntp.conf dosyasına eklenerek servis yeniden başlatılır.

Açık kaynak kodlu Puppet sürümünü kurmak için PuppetLabs paketi indirildikten sonra puppet-master-passenger paketi kullanılacaktır. Bu paket puppet-master paketinin yanında passenger içeren Apache web sunucusu da kurmaktadır.

Böylece puppet-master, Passenger ve Apache ile birlikte kurulmuş olacaktır. Sadece Apache çalıştığı durumlarda puppet-master hizmet verecektir. Şimdilik Apache web sunucusu durdurulmalıdır.

Ardından Puppet versiyon değişiklikleri sonrasında mevcut ortamda sorun yaşamamak için Puppet versiyonu sabitlenmelidir. Öncelikle aşağıdaki komut ile mevcut Puppet sürümü alınmalıdır.

Buna göre apt’nin pin özelliği kullanılarak Puppet 3.8 versiyonuna sabitlenmelidir.

Böylece versiyon güncellemeler esnasında 3.8’de kalacaktır. Ardından Puppet tarafından master ve istemci sunucular arasında kullanılan SSL sertifikaları düzenlenmelidir. Puppet-master sunucusu istemciler için bir sertifikası otoritesi olarak çalışacak ve kendi oluşturduğu sertifikalar ile istemcilerden gelen sertifika isteklerini imzalayacaktır. Bunun için öncelikle var olan sertifikalar silinmelidir.

Master sertifikası oluşturulurken istemcilerin master sunucuya erişebilecekleri her türlü alan adı göz önüne alınmalıdır. Yani puppet-master ve puppet-master.vm1.huseyincotuk.com ayrı ayrı belirtilmelidir. Master üzerindeki puppet.conf dosyası aşağıdaki gibi düzenlenmelidir.

Dosya içeriği varsayılan olarak aşağıdaki gibi olmalıdır:

Burada geçersiz olan templatedir satırı kaldırılmalı, [main] bölümüne DNS isimleri aşağıdaki gibi eklenmelidir.

Dosyanın son hali aşağıdaki gibi olmalıdır.

Yeni sertifikayı oluşturmak için aşağıdaki komut çalıştırılmalıdır.

İşlem tamamlandığında aşağıdaki bir çıktı görülmelidir.

“Starting Puppet master” satırı görüldüğünde Ctrl-C ile çıkılmalıdır. Oluşturulan sertifikaları listelemek için aşağıda komut kullanılabilir.

Sertifika ismi /etc/apache2/sites-available/puppetmaster.conf dosyasında kontrol edilmelidir. Yukarıdaki çıktıda görülen dosya isimleri ile tutarlı olmalıdır. Aksi halde apache servisi başlarken dosyanın bulunamadığını belirten bir hata alınacaktır.

Master sunucuya ait puppet.conf dosyasında [main], [master] ve [agent] olmak üzere 3 temel bölüm bulunmaktadır. “main” bölümü global yapılandırma ayarlarını barındırırken “master” bölümü master sunucuya ait yapılandırmaları içermektedir. “agent” bölümü ise istemcilere özel yapılandırmaları düzenlemeye yaramaktadır. Daha önce hazırlanan dosya basit bir kurulum için yeterlidir. Kullanılabilecek diğer yapılandırma seçenekleri ve detaylara resmi sayfadan ulaşılabilir.

Main Manifest Dosyası

Puppet sistem yapılandırmalarını alan adına özgü bir biçimde tanımlanabilen bir dilde “manifest” denilen dosyalarda tutmaktadır. Bu dosyalar .pp uzantılı dosyalar olup varsayılan main manifest dosyası /etc/puppet/manifests/site.pp lokasyonunda yer almaktadır. Aşağıdaki komut ile bu dosya oluşturulmalıdır.

Ardından puppet-master servisi Apache vasıtasıyla başlatılmalıdır.

Böylece puppet-master sunucusu kullanıma hazır hale gelmiş olup henüz hiç bir istemci sunucuyu kullanmamaktadır.

Puppet Agent Kurulumu

Puppet-master tarafından yönetilecek her sunucuya puppet agent kurulmalıdır. Çoğu durumda altyapınızdaki tüm sunuculara gerektiğinde kullanmak üzere kurulum yapmak tercih edilmelidir. Puppet agent bir çok Linux, Unix ve Windows versiyonunda çalışmaktadır. Bu yazıda Ubuntu 14.04 üzerindeki kurulum ele alınacaktır.

Ubuntu 14.04 kurulmuş istemci üzerinde önce PuppetLabs paketi kurulmalı, apt paket yöneticisi güncellenerek puppet paketi yüklenmelidir.

Kurulduğunda puppet agent varsayılan olarak pasif gelmektedir. Otomatik başlaması için default dosyasına aşağıdaki start=yes parametresi eklenmelidir.

Master sunucuda olduğu gibi versiyon değişikliklerinde sıkıntı yaşanmaması için mevcut sürüm apt içerisinde sabitlenmelidir.

Ardından agent üzerinde puppet.conf dosyası düzenlenmelidir. Master sunucuda olduğu gibi templatedir satırı ve [master] bölümü ve altındaki satırlar silinmeli, [agent] bölümüne master sunucu eklenmelidir.

Dosyanın son hali aşağıdaki gibi olmalıdır:

Bu haliyle puppet başlatılmaya hazır hale gelmiştir.

Her şey yolunda giderse puppet ilk çalıştığında bir SSL sertifikası üretecek ve imzalanma talebini puppet-master sunucusuna gönderecektir. SSL sertifikasının imzalanmasını müteakip master sunucu istemci ile haberleşebilecektir.

İstemci Sertifikasının Master Sunucuda İmzalanması

Master sunucu, bir istemciyi kontrol edebilmek için öncelikle istemciden gelen sertifikayı imzalamalıdır. Master sunucuya gelen talepler aşağıdaki komut ile görülebilir.

Satırın başında “+” olmaması sertifikanın henüz imzalanmamış olduğunu göstermektedir. Sertifikayı otorite olarak imzalamak için aşağıdaki komut kullanılmalıdır.

Sertifika imzalandığında aşağıdakine benzer bir çıktı alınmalıdır.

İmzalanmayı bekleyen birden fazla sertifikanın tamamını imzalamak için aşağıdaki komut kullanılabilir.

İmzalanan istemci sertifikaları ve master sunucuya ait sertifikaların tamamı aşağıdaki komut ile listelenebilir.

Daha önce sertifikası imzalanmış bir istemcinin yeniden yapılandırılarak Puppet’a eklenmesi için önce sertifikasının “revoke” edilmesi gerekmektedir. Benzer şekilde Puppet ile yönetilmesi istenmeyen sunucunun da sertifikası “revoke” edilmelidir. Bunun için aşağıdaki komut kullanılır.

Böylece örnek bir Puppet altyapısı (master-client) kullanıma hazır hale gelmiştir. Puppet yazı dizisi yenileriyle devam edecek.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir