Perşembe, Ağustos 29, 2013

Chef Günlükleri (1) - Chef Nedir?

Bu sene stajımı sistem yönetimi üzerine yapıyorum. İlgilendiğim konu ise Chef. Baya sıkıntılar yaşatsa da Chef ile ilgili birçok şey öğrenmiş olduğumu fark etmek hoşuma gidiyor. Tabi öğrenecek daha çok şey var. Ama kendi bildiklerimi aktarmanın, hatta zamanı gelip unuttuğum bazı şeylere geri dönüp bakabilmenin önemli olduğunu düşünüyorum. O sebeple elimden geldiğince ve bildiğim kadarıyla Chef nedir, nasıl çalışır, nasıl kurulur, cookbook nedir gibi birçok şey yazacağım. Yanlış bir nokta gördüğünüzde bunu düzeltirseniz sevinirim. Sonuçta bende kendi çabamla öğreniyorum ve benim bir şeyi herhangi bir şekilde yapabilmiş olmam onun doğru bir yol olduğu anlamına gelmez. Şimdi gelelim Chef'in ne olduğuna.

Chef nedir? 

Chef Ruby ve Erlang ile yazılmış bir yapılandırma yönetim aracıdır diyor wikipedia. Sistem yapılandırmasını otomasyona bağlama görevini yerine getirir.

Peki bu neden çözülmesi gereken bir problem kapsamına girer?

  • Altyapı sürekli değişir, özellikle 'Bulut' sistemlerde
  • Farklı işletim sistemleri
  • Farklı markaların farklı donanımları
  • Yığındaki farklı uygulamalar

Chef ile tam olarak ne yapabilirsiniz?

  • Chef tarafından desteklenen sunucuları başlatıp/kapatabilirsiniz
  • Yeni sunucuların üzerine işletim sistemi kurabilirsiniz
  • Sunucuların üzerine uygulama kurabilirsiniz
  • Yeni uygulamanın ortamına uygun yapılandırılmasını sağlayabilirsiniz

Chef'in temel yapı taşları nelerdir?

  • Ortamlar (enviroment)
  • Nodelar
  • Cookbooklar
  • Tarifler (recipe)
  • Dosyalar/Şablonlar (files/templates)
  • Attributesler
  • Data Bagler
  • Arama
  • Ve daha fazlası
Bu resimden ne anlıyoruz?

  • Chef'te bir sürü katman bulunur: Enviroment, node, role, cookbook ...
  • Chef nodeları çevreler içinde gruplar.
  • Nodelar bir ya da birden fazla rolü içerir.
  • Rol bir ya da daha fazla sayıdaki cookbook'un birleşiminden oluşur.
  • Cookbooklar birden fazla tarif (recipe), şablon (template), dosyaların birleşiminden oluşur.

Chef'in 3 temel parçası avr diyebiliriz. Birisi chef-server diğeri node'ları yöneten chef-client sonuncusu ise sistem yöneticisinin bunları yönettiği workstation.
Chef bileşenlerinin birbiriyle ilişkisi

Resimden açıkça görüldüğü gibi cookbookları ya da ayarları workstationda düzenleyip knife aracılığı ile chef sunucusuna gönderiyoruz. Chef istemcisi ise belirlenen çalışma zamanlarında sunucudan yapılandırma bilgilerini alıp bunları nodelar üzerinde uyguluyor.

Knife nedir?

Workstationdan sunucuyla ilişki kurmaya yarayan bir komut satırı aracı kendisi. Knife kullanıcıların nodeları, cookbookları, rolleri, çevreleri, data bagleri gibi şeyleri kontrol edebilmesini sağlar.

Bir sonraki yazıda chef-server ve chef-client kurulumları ile nodeları tanımlamayı yazacağım. Bu benim en zorlandığım yerdi diyebilirim. Hala tam kavradığımdan emin olamıyorum doğrusu.

Son olarak Chef öğrenmek için bazı linkleri paylaşayım her ne kadar google'a yazıldığında çıkacak ilk linkler olsa da.

1. http://docs.opscode.com/ Resmi dökümantasyon. Kurulum açısından çok yardımcı olmadı doğrusu ama sorun çözme kısmını sevdim.

2. http://learnchef.getharvest.com/introduction.html Bu yazıyı yazmak için kullandığım kaynaklardan biri.

3. http://webchat.freenode.net/?channel=chef IRC #chef kanalı.

Perşembe, Ağustos 22, 2013

Chef Authenticate Hatası ve Çözümü

Stajda chef ile uğraşıyorum. Chef'in ne olduğunu bir ara anlatırım ama şu an chef'te karşılaştığım bir sorunu nasıl çözdüğümü anlatacağım. chef-client komutunu her girdiğimde şöyle bir hata alıyordum.

Authentication Error:
---------------------
Failed to authenticate to the chef server (http 401).



Server Response:
----------------
Failed to authenticate as 'node adı'. Ensure that your node_name and client key are correct.


Relevant Config Settings:
-------------------------
chef_server_url   "url var burada"
node_name         "node adı"
client_key        "/etc/chef/client.pem"

If these settings are correct, your client_key may be invalid.

Bu hata beni baya uğraştırdı doğrusu. Sorunun çözümü opscode'un sitesinde varmış. Aslında hata raporu da çok açık bir şekilde hatayı söylüyor. Bütün ayarlar doğruysa client._key yanlış pampa diyor. Ama ben inatla "o yanlış olamaz başka bi yerde yamukluk var" diye başka ayarları kurcalıyordum. Gerçekten de client.pem yanlış olduğu için authenticate denilen olay gerçekleşmiyormuş. Bunu düzeltmek için

knife node delete node adı
knife client delet client adı
rm /etc/chef/client.pem

ile bunları çıkarıp chef-client komutunu çalıştırıyoruz. Bu doğru client.pem dosyasını otomatik olarak /etc/chef konumunun altına yerleştiriyor.

Hata raporlarını okumak gerçekten çok önemli. Sonra hata raporu gözünün önünde dururken "ya ama bu neden çalışmıyor :((((" durumuna düşmezsiniz.

Salı, Ağustos 13, 2013

Gnome - Ekranın Kilitlenmemesi Sorunu

Merhabalar

Staja başladığım gün aldığım bilgisayarda ekranı bir türlü kilitleyemiyordum. Çalışma ortamında (hatta herhangi bir yerde) bilgisayarınızdan ekranı kilitlemeden uzaklaşırsanız bütün ofise baklava ısmarlamak, sosyal medya hesaplarınızda bir şeyler paylaşılmak gibi yan etkilerle karşılaşabilirsiniz. O sebeple ekranı kilitlemem önemliydi. Hemen internette soruna baktım. Benim için şöyle basit bir adımda çözüldü.

gsettings set org.gnome.desktop.lockdown disable-lock-screen 'false'

Ayarlarda ekran kilitlemenin devredışı bırakılmasını 'false' yapmak gerekiyormuş yani. Ekranı kilitleyebilmek için lazım olan en önemli şey ise gnome-screensaver. Eğer bu kurulu değilse üstteki komutu çalıştıramazsınız. Onu kurmak için;

sudo apt-get install gnome-screensaver

Ekranı kilitlemek için  CTRL+ALT+L tuş kombinasyonunu kullanabilirsiniz. Bir kenarda durmasının bir zararı yok bu konunun herhalde. :)