Puppet Yazı Dizisi 4: Puppet Merkezi İstemci Yönetimi

Puppet Merkezi İstemci Yönetimi

Bu yazıda Puppet ile istemcilerinizi merkezi olarak yönetebileceğiniz yöntemlerden bahsedilecektir. Öncesinde Puppet ortamınızı kurmuş olmanız gerekmektedir. Eğer halen kurmadıysanız Puppet kurulumu ile ilgili daha önce yayınlanan yazıya göz atabilirsiniz.

Puppet kullanımı ile ilgili daha yayınlanan Puppet’a Giriş ve Puppet ile Altyapı Otomasyonu yazılarına bakabilirsiniz.

Puppet Merkezi İstemci Yönetimi

puppet-logoPuppet varsayılan durumda, master sunucu üzerinde Puppet ve Apache ile istemciler üzerinde agent’lar çalıştığı sürece her yarım saatte istemciler ile haberleşir. Eğer istemcilerde fact değişkenlerinde bir değişiklik olmuşsa bunlar güncel haliyle alınır. Ayrıca master sunucu üzerinde henüz uygulanmamış istemciye özel bir değişiklik yapılmışsa bunların istemci üzerinde uygulanması gerçekleşir. Yapılan bir değişiklik sonucu bu yarım saatlik periyodu beklemeden değişiklikleri uygulamak için önceki yazıda istemci tarafında “puppet agent –test” komutunu çalıştırılması gerektiğinden bahsedilmişti.

Ancak çok sayıda sunucuyu ilgilendiren değişikliklerde tek tek istemciler üzerinden agent çalıştırmak çok pratik olmamaktadır. Örneğin çok sayıda sunucunuz var ve hepsinde bir takım değişiklikler yapmak istiyorsunuz. Bu değişiklikler her birinde aynı veya gruplar halinde birbirinden farklı olabilir. Bu durum istemcilere atanacak manifest tanımlarında belirtilir. Tek tek sunuculara gidip “puppet agent –test” komutunu çalıştırmak veya yarım saatlik periyodu beklemek her zaman pratik ve mümkün olmayabilir. İşte bu durumda merkezi bir sunucudan tüm istemcilerde bu işlemi başlatmak ve izlemek oldukça pratik bir kullanım sağlamaktadır.

Bu yazıda bu değişiklikleri istemcilere tek bir merkezden uygulamak ve takip edebilmek için çeşitli yöntemlerden bahsedilecektir. Bunlardan birisi Puppet master sunucusu üzerinden “puppet kick” komutu kullanmaktır. Bir diğer yöntem Mcollective isimli araç ile süreci yönetmektir. Son bahsedilecek metod ise Foreman adı verilen grafik arayüze sahip çözümü kullanmaktır. Bu yöntemlerin detayları aşağıda tek tek açıklanmıştır.

Puppet Kick Kullanımı

Bu komutun amacı, özellikle birden fazla istemci için yapılan değişiklikleri uygularken tek tek istemcilerden “puppet agent –test” çalıştırmak yerine master sunucudan değişiklikleri “puppet kick {istemci_adı}” komutu ile istemcilere göndermektir. Bunun için istemci sunucularda bazı değişikliklerin yapılması gerekmektedir. Öncelikle Puppet agent “daemon” modunda çalışmalıdır. Bunun için puppet.conf içerisinde [main] bölümüne aşağıdaki satır eklenmelidir.

Ayrıca auth.conf doyası içerisine aşağıdaki satırlar eklenmelidir.

Buradaki allow satırı hangi sunucudan kick komutlarını kabul edeceğini göstermektedir.

Son olarak aşağıdaki komut çalıştırılmalıdır.

 

“puppet kick” komutunda faydalı iki parametre bulunmaktadır.

–debug: Komutu çalıştırırken aşamaları takip ederek varsa hataları bulmanıza yardımcı olur.

–parallel: Birden fazla sunucuya bağlanırken sunucuların paralel olarak aynı zamanda çalıştırmalarını sağlar.

Buradaki “parallel” parametresi tüm istemcilerde aynı anda işlem yapabilmeyi de sağladığı için zamandan önemli ölçüde kazanç sağlamaktadır. Oldukça pratik bir kullanım sağlayan bu komut Puppet 3 versiyonundan itibaren yerini MCollective aracına bırakmakla birlikte halen uyarı vererek çalışmaktadır. Aşağıdaki örnek master sunucudan sadece ns1 ve ns2 istemcilerinde bulunan agent’ların çalışmasını sağlamaktadır. Burada belirtilen sayı (2) paralel çalıştırılacak istemci sayısını göstermektedir. Bu komut belirtilen istemcilere gidip “puppet agent –test” komutunu çalıştırmakla birebir aynı işi yapmaktadır.

Komut çalıştığında önce kullanımdan kaldırıldığı uyarısını vermesine rağmen bu uyarı ile birlikte çalışarak  aşağıdaki gibi bir çıktı oluşturmalıdır.

Çıktıda belirtilen “exit code 0” istemciye talebin başarılı şekilde iletildiğini ve istemcinin kendi kataloğunu okuyarak tanımlı işlemleri başlattığını göstermektedir. Bu işlemlerin başarılı olup olmadığı ancak istemci üzerindeki /var/log/syslog dosyasından takip edilebilir.

MCollective Kullanımı

mcollective_iconmcollective kurulumu biraz karmaşık görünmekle birlikte ayrı bir yazıda ele alınmıştır. Aşağıdaki adımlara geçmeden önce kurulum detaylarına, kullanılabilen agent plugin’lerine gözatmak faydalı olacaktır.

İlgili yazıda da bahsedildiği gibi “mcollective” terminolojisinde kavramlar puppet’a göre biraz daha farklıdır. Bu bağlamda mcollective istemcisi olarak puppet-master, mcollective sunucuları olarak da Puppet istemcileri kullanılmıştır. Dolayısıyla mco komutları puppet-master üzerinden gönderilmekte ve bağlı tüm Puppet istemcilerinde çalıştırılabilmektedir. Bu yazının konusu olan merkezi yönetim bu şekilde çalışmaktadır.

mcollecitve kurulduktan ve gerekli temel plugin’ler (package, service, puppet) eklendikten sonra puppet-master sunucusundan aşağıdaki komutlar ile merkezi bir yönetim sağlanabilmektedir.

Tüm istemcilerde puppet agent’ı bir kez çalıştırmak üzere mco ile birlikte “puppet runonce” çalıştırılmalıdır. Sadece dry-run yapmak (değişiklikleri uygulamadan yapılacak değişiklikleri kontrol etmek) için “noop” parametresi kullanılabilir. Bu arada “puppet kick” komutundan farklı olarak “noop” gibi parametreler ile puppet agent kullanabilmek için tüm istemcilerde puppet servisini durdurmak gerekmektedir. Böylece merkezi olarak çalıştırılmadığı sürece belli aralıklar ile çalışmayacaktır.

Bağlı sunucularda Puppet durumunu görmek için aşağıdaki komutu çalıştırmak gerekmektedir. Agent’ların durumu, en son ne zaman çalıştığı, aktif olup olmadığı gibi bilgiler bu şekilde elde edilmektedir.

Puppet ile kontrol edilebilen sunucu sayısı ve ilgili istatistikler aşağıdaki gibi elde edilebilmektedir.

Puppet üzerindeki durum özeti aşağıdaki komut ile alınabilmektedir.

Yukarıdaki komutlar kısaca tek merkezden istemcilerin nasıl yönetileceğini göstermektedir. Daha fazla detayı yayınlanacak olan mcollective yazısında bulabilieceksiniz.  

Foreman Kullanımı

foreman-logoForeman sunucuların yönetimini sağlayan açık kaynak kodlu bir çözüm olup Puppet ve Chef gibi yönetim araçlarıyla kolayca entegre olabilmektedir. Foreman kullanışlı bir web arayüzüne sahip olmakla birlikte sunucuları yönetmek, konfigüre etmek, izlemek ve provizyonlamak üzere bir API arayüzü ve güçlü komut satırı alternatifleri de sunmaktadır.

Foreman kurulumu ayrı bir yazıda ele alınmış ve kullanımı açıklanmıştır. Detaylar için yayınlanacak olan ilgili yazıyı incelemek faydalı olacaktır.

Foreman ile Puppet altyapınızı yönetmek için Foreman kurulumunu tamamladıktan ve gerekli ayarları yaptıktan sonra Foreman ile yönetilen tüm sunucular “Hosts” menüsü altından “All hosts” bölümünden listelenebilir.

foreman1

Buradan seçilen bir sunucuya tıklanarak açılan pencerede “Run Puppet” butonuna tıklanarak ilgili sunucuda puppet çalıştırılır ve kendi kataloğunu okuyarak işlemleri yapması sağlanmış olur.

foreman-2

Foreman ile ilgili oldukça detaylı şekilde bilgiyi bilahare yayınlanacak olan Foreman yazısında bulabileceksiniz.

Bu yazıda üç farklı yöntem ile istemcilerin nasıl merkezi olarak yönetilebilecekleri açıklanmış ve örneklerle gösterilmiştir. Burada bahsi geçen MCollective ve Foreman araçlarının kurulumu ve detaylı kullanımları ayrı yazılarda ele alınacaktır.

Bir cevap yazın

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