Puppet Yazı Dizisi 5: mCollective Kurulumu ve Kullanımı

Bu yazıda mCollective ismi verilen yönetim aracının kurulumu ve Puppet ile kullanımı ele alınacaktır. Puppet kurulumu, kullanımı, merkezi istemci yönetimi konularında daha önce yayınlanan 4 yazıya buradan erişebilirsiniz.

Daha önce yayınlanan “Puppet Merkezi İstemci Yönetimi” isimli yazıda mCollective’den bahsedilmiş ancak kurulumu ve kullanım detayları bu yazıya bırakılmıştır.

mCollective Kurulumu ve Kullanımı

mcollective_iconMarionette Collective olarak bilinen bu araç sunucu orkestrasyonu ve paralel iş çalıştırma amaçlı kullanılmaktadır. Kümeler halindeki sunucular üzerinde sistematik bir şekilde iş çalıştırmayı sağlamaktadır. İyi derecede ölçeklenebilir bir yapıya ve oldukça hızlı paralel iş çalıştırma yeteneğine sahiptir.

“mCollective” terminolojisinde kavramlar Puppet’a göre biraz daha farklıdır. Örneğin Puppet’ta agent’ların çalıştığı istemciler, mCollective için spesifik bir işi yapan “sunucu” olarak geçmekte ve bu sunucular bir “client” vasıtasıyla yönetilmektedir. Bu örnekte mCollective istemcisi puppet-master sunucusu, mCollective sunucuları da Puppet istemcileri olarak belirlenmiştir. Bununla birlikte bahsi geçen client ile server’ların iletişimini sağlayan ve bir mesajlaşma ortamı sağlayan orta katman yazılımı mevcuttur.

Mcollective kurulumunda Puppet kullanmak akıllıca olacaktır. Her istemci için ayrı ayrı değişiklik yapmak yerine mevcut Puppet altyapısı ile dağıtım yapmak pratik ve hızlı bir çözüm sunmaktadır.

Gereksinimler

Kurulumdan önce aşağıdaki isterlerin belirlenmesi gerekmektedir.

  • Dokümanın devamında referans verilen $certdir ve $privatekeydir dizinleri puppet ile kullanılanların aynısıdır. Puppet ile kullanılan dizinler aşağıdaki komut ile alınabilir.

  • Orta katmanda kullanılacak olan ActiveMQ ile kullanmak üzere bir kullanıcı ismi (mCollective) ve bir şifre (bu örnekte mc_pass) belirlenmelidir.
  • Sertifika Otoritesi: Puppet ile kullanılan sertifika otoritesi (puppet-master) kullanılacaktır. Her sunucuda $certdir/ca.pem altında bir kopyası bulunur.
  • ActiveMQ Sertifikası: ActiveMQ için varolan puppet agent sertifikaları kullanılacaktır. Bahsedilen sertika $certdir/{istemci_adı}.pem ve özel anahtar $privatekeydir/{istemci_adı}.pem lokasyonunda bulunmalıdır.
  • Paylaşılan Sunucu Anahtarları: Bu anahtar oluşturulmalıdır. Puppet-master sunucusunda “sudo puppet cert generate mCollective-servers” komutu ile oluşturulmalıdır. Komutun çıktısı aşağıdaki gibi olmalıdır.

İlgili sertifika ve özel anahtar $certdir/mCollective-servers.pem ve $privatekeydir/mCollective-servers.pem lokasyonunda bulunacaktır.

  • Sunucu Sertifikaları: Burada bahsi geçen sunucular Puppet’taki istemcilerdir. Her sunucuda zaten mevcut olan puppet agent sertifika ve özel anahtarı kullanılacaktır.
  • İstemci Sertifikaları: İstemciler mCollective direktiflerini sunuculara iletecek olan bileşenlerdir. Bu aşamada Puppet sırasında kullanılan aynı kullanıcı ile puppet-master sunucusunda sertifika üretilmelidir. Komutun çıktısı aşağıdaki gibi olmalıdır.

Üretilen sertifika ve özel anahtar $certdir/mCollective-client.pem ve $privatekeydir/mCollective-client.pem lokasyonunda bulunacaktır.

Orta Katman Kurulumu ve Yapılandırılması

activemq-logoKurulum yapılacak sunucu üzerinde öncelikle orta katman için seçilen ActiveMQ kurulmalıdır. Bu örnekte orta katman yazılımı puppet-master sunucusuna kurulmuştur. Öncelikle ön gereksinim olan java runtime environment kurulmalıdır.

Daha sonra Apache ActiveMQ sayfasından son kararlı sürüm indirilerek açılmalı ve /opt klasörü altına taşınmalıdır.

Ardından activemq.xml dosyası bulunarak bu dosya örnek dosya ile değiştirilmelidir.

admin ve mCollective kullanıcıları için şifreler değiştirilmelidir.

Daha sonra stomp transport connector’daki port ve protokol aşağıdaki gibi değiştirilmelidir.

Sıradaki işlem “keystore guide” dokümanında anlatıldığı gibi sertifika ve anahtarları bir araya getirme işlemidir. Bunun için yeni bir dizin açılarak gerekli sertifika ve anahtarlar burada toplanır.

Sonra “truststore” ve “keystore” oluşturulmalıdır. Her ikisi için aynı şifre kullanılacak, daha sonra bu şifreye activemq.xml dosyasında ihtiyaç duyulacaktır. Truststore hangi sertifikaların ActiveMQ’ya bağlanacağını tanımlamaktadır. Eğer truststore içerisine bir CA sertifikası import edilirse bu CA tarafından imzalanmış her sertifika bağlantı yapma hakkına sahip olacaktır. Her sertifika ayrı ayrı yüklenebileceği gibi burada CA sertifikası yüklenerek imzalı sertifikalara izin verilecektir.

Ekrana gelen bölüme şifre yazılarak doğrulandıktan sonra son olarak sertifikaya güvenilsin mi sorusuna “yes” cevabını vererek işlem tamamlanmalıdır. Böylece turstore kullanıma hazır hale gelecektir. Ardından ActiveMQ broker’a ait sertifika ve özel anahtarı tutan keystore oluşturulmalıdır. Aşağıdaki komutlar ile özel anahtar ve sertifika bir dosyada birleştirilerek gerekli keystore oluşturulmalıdır.

Aynı şifre kullanılarak doğrulandıktan sonra bulundugunuz dizinde keystore.jks ve truststore.jks dosyaları bulunmalıdır.

Ardından ActiveMQ konfigürasyon dizinine geçilerek oluşturulan keystore ve truststore dosyaları buraya taşınmalı ve sadece activemq kullanıcısı tarafından okunabildigine emin olunmalıdır.

activemq.xml dosyası içerisinde ssl contextinde bu dosyalar şifreleri ile birlikte belirtilmelidir. XML validation bug’ı nedeniyle bu listenin alfabetik sırayla yazılması önemlidir.

Son olarak activemq yeniden başlatılmalıdır.

mCollective Kurulumu

Bu adımda mCollective paketi tüm puppet istemcilerine yüklenecek ve çalıştırılacaktır. Puppet-master sunucusuna ise mCollective-client kurulacaktır. Ancak öncelikle Debian ve Ubuntu’da mCollective paketi için gerekli ruby-stomp paketi hem istemcilere, hem de master sunucuya kurulmalıdır.

Ardından master sunucuda mCollective-client, tüm istemcilerde mCollective kurulmalıdır.

İstemcilerin Yapılandırılması

Daha önce Puppet ile oluşturulan sertifikaların kullanılacağı belirtilmiş, tüm istemcilerde kullanmak üzere master sunucuda oluşturulan mCollective-servers isimli sertifika ve özel anahtar her istemcide ilgili dizinlere kopyalanmıştır.

mCollective içerisinde istemci olarak kullanılacak her sunucu için (bu örnekte puppet-master) daha önce oluşturulan client sertifikası ilgili dizine kopyalanmalıdır.

Ardından her istemcide “fact” dosyası oluşturulmalıdır. Bu dosyanın her istemcide oluşturulması için aşağıda yer alan kod parçasına sahip bir kaynağın her istemci için “include” edilmesi gerekmektedir.

Bunun için önce mc-fact isimli bir modül oluşturulmalıdır.

Ardından ilgili modülün içerisine yukarıdaki kod eklenmelidir.

Bu modülün her istemcide kullanılması için main manifest dosyası site.pp içerisinde aşağıdaki satır eklenmelidir.

Ardından herhangi bir istemcide modülün ve ilgili sınıfın çalıştığı kontrol edilir.

Aynı modül içerisinde tüm istemcilerde server.cfg dosyasının sunucuya spesifik şekilde oluşturulması için yine Puppet kullanılacaktır. Öncelikle baz alınacak template dosyası aşağıdaki içerik ile templates dizini altında oluşturulmalıdır.

Bu template dosyasını baz alarak ilgili dosyayı istemcilerde oluşturacak ve ardından mcollect yazılımını yeniden başlatacak kod aynı sınıf içerisine eklenmelidir.

Son olarak istemci sunucularda “puppet agent –test” komutu çalıştırılarak dosyanın oluşturulması ve servisin yeniden başlatılması sağlanmalıdır. Buna göre çıktı aşağıdaki gibi olmalıdır.

Master Sunucunun Yapılandırılması

Puppet ile yapılandırılan istemcilerin aksine puppet-master sunucusu manuel olarak yapılandırılacaktır. Yönetici yetkisine sahip her kullanıcı, kendisine ait kimlik bilgileri için için talepte bulunmalı, edinmeli ve gerekli lokasyonda bulundurmalıdır. client.cfg dosyasını düzenleyerek işlem tamamlanmalıdır.

İlk yönetici yetkisine sahip kullanıcı için daha önceki adımlarda oluşturulan client.pem sertifikası kullanılacaktır. Öncelikle kullanıcı ev dizininde .mCollective.d dizini ve altında credentials dizini açılarak kullanılacak sertifikalar buraya kopyalanır. Ardından Puppet ile kullanabilmek için sertifikaların bulunması sağlanır.

Son olarak client.cfg dosyası .mCollective dizinine kopyalanarak aşağıdaki gibi düzenlenmelidir.

mCollective Kullanımı

Böylece mCollective kurulumu tamamlanmış olacaktır. puppet-master sunucusu üzerinden “mco” komutu denenebilir.

Herhangi bir istemcideki envanteri almak için aşağıdaki komut kullanılabilir.

mCollective Plugin Yükleme

mCollective’in envanter toplama dışında özelliklerinin kullanılabilmesi için sunucu ve istemcilere plugin yüklenmesi gerekmektedir. Ayrı kendi altyapınızda amaca özel işleriniz için kendi plugin’lerinizi yazmanız da mümkündür.

Agent Plugin’lerin Kurulumu

mCollective tarafından yapılan önemli işlerin büyük bir bölümü agent plugin’ler tarafından yapılmaktadır. puppet-master sunucusuna ve varsa diğer yönetim sunucularına DDL dosyaları yüklenmelidir. Rutin işlerin yapıldığı sunuculara (puppet kurulumundaki istemciler) ise agent ile ilgili tüm bileşenler yüklenmelidir.

mCollective tarafında kullanılabilecek agent’ların listesine resmi sayfadan ulaşılabilmektedir. Tüm kurulumlar için azından puppet, service ve package agent’ları en çok tercih edilenler arasında yer almaktadır. Ayrıca kendi amaçlarınız doğrultusunda kendinize ait agent yazmanız da mümkündür. Detaylara buradan erişebilirsiniz.

Agent plugin’lerin en kolay kurulumu paket yöneticileri vasıtasıyla mümkün olmaktadır. Alternatif olarak cfg dosyalarında belirtilen libdir dizinine gerekli dosyaları kopyalayarak da kurulum yapılabilmektedir.

Örneğin Puppet, package ve service agent’larının kurulumu için puppet-master sunucusunda aşağıdaki paketlerin yüklenmesi gerekmektedir.

İstemcilerin her birisinde ise aşağıdaki paketler kurulmalıdır.

Ardından örneğin service plugin’i test etmek için aşağıdaki komut çalıştırılabilir.

Package plugin test etmek her istemciye mssh paketini kurmak üzere aşağıdaki komut çalıştırılabilir.

Son olarak puppet plugin testi için tüm istemcilerde bir kez çalıştırmak üzere aşağıdaki komut çalıştırılabilir. Bunun için no-noop parametresi geçmek gerekmektedir. Parametreler ile puppet agent kullanabilmek için tüm istemcilerde puppet servisini durdurmak gerekmektedir. Böylece özellikle çalıştırılması istenmediği sürece çalışmayacaktır.

Sunuculardaki Puppet durumunu görmek için aşağıdaki komutu çalıştırmak gerekmektedir.

Puppet çalıştırabilen sunucuların istatistikleri aşağıdaki gibi elde edilebilmektedir.

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

 

Böylece mCollective kurulmuş ve örnek bir kaç agent ile kullanımı gösterilmiştir.

Bir cevap yazın

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