25 Nisan 2011 Pazartesi

Fortune 500 ve Puffy

BSD işletim sistemi ailesini iş, ev, okul ortamında kullanan kişi sayısının sadece meraklısı ve sevenleri ile sınırlı olduğu düşünülür. Ama durum aksine daha farklıdır. BSD işletim sistemi ailesi bireysel kullanıcılar yanında kurumsal kullanıcılar tarafından da sıklıkla kullanılır ama adı söylenmez. OpenBSD tüm sistemlerinde ve altyapısında kullana bir şirket olan M:tier için ise bunu söylemekte çekinilecek bir şey yok. Hele hele müşterilerinizde bu sistemleri kullanıyor ise...

Aşağıda okuyacağınız yazı M:tier adlı şirketin çalışanlarından birisi olan Antoine Jacoutot (ajacoutot@) tarafından yazılmıştır. Yazının aslı undeadly.org sitesinde yayınlanmış ve hem yazarın hem de site yönetimin izni alınarak tarafımdan Türkçe'ye çevrilmiştir.



M:tier firması için uzun yıllardır çalışıyorum. Bunca yıldan sonra çalıştığım şirketin “OpenBSD” nasıl kullandığı hakkında bir şeyler paylaşabileceğimi düşünüyorum.


Nasıl kullanıyorsunuz derseniz, aslında her şey için kullanıyoruz.


Tercih ettiğimiz işletim sistemini kullanmak durumunda olan ve yaptığımız işe sıkı sıkıya bağlı bir şirket olarak müşterilerimizin de kullandığımız işletim sisteminden en az bizim kadar keyif almalarını istiyoruz :-)


Yani işimiz OpenBSD kurmak, bakımını yapmak ve geliştirmek. Aynı zamanda OpenBSD kodu üzerinde bazen oynayıp yazdığımız kodu OpenBSD kaynak koduna eklendiğini görüyoruz. Eklenemeyeceği durumlarda ise yazdığımız kodu yeniden yazarak durumu tersine çeviriyoruz. Doğal olarak yazılan kodun bir bölümü işimize özel olduğu için de OpenBSD içinde yer almıyor.


Bunların yanında tüm IT yapısını OpenBSD ile kurup işletiyoruz, bu sadece kendi sistemimiz ile sınırlı olmayıp aynı zamanda müşterilerimizinkileri de kapsıyor. (IT altyapısından, sekreterin bilgisayarına dek hepsi)


Ayrıca şunu da belirtmem gerekli, müşterilerimiz içerisinde Fortune 500 yer alan şirketler var. (Bunlar birbirinden bağımsız ve farklı sektörlerde faaliyet gösteren şirketlerdir.)


Bir diğer deyişle;


Çalıştığımız şirketler bilgisayar sevdalılarını çalıştıran ufak şirketler değil, uzun süre önce bilişim altyapısını kurmuş ve halen işletmekte olan şirketlerdir. (bazıları dünya üzerinde >100 ülkede faaliyet göstermektedir.) Bunların isimlerini veremeyecek olsam da OpenBSD büyük kurumsal kullanıcılar tarafından kullanılabileceğini rahatlıkla söyleyebilirim.


Bu yapı içerisinde bir çok yasal ve teknik yükümlüğü de yerine getirmemiz gerekiyor.


İlk bakışta bir çok kişi bunun gereksiz bir çaba olduğunu düşünebilir ama yaygın olarak kullanılmayan bir işletim sisteminin kurumsal gereklilikleri karşılayabildiğini görmek heyecan verici.


Ne Yapıyoruz?

Bugün dünya üzerinde bir çok farklı coğrafyada toplamda altıyüzden fazla kullanıcının sistemini yönetiyoruz. (Bu sayının yıl sonuna varamadan büyük oranda artması bekleniyor).


Bütün sistemlerde OpenBSD çalışıyor, daha açık olarak söylersek:

  • Güvenlik duvarları: PF,IPSEC, CARP...
  • Altyapı hizmetleri: DNS, DHCP, TFTP, FTP, HTTP, NFS, LDAP, puppetmaster, Kerberos, proxy, yazdırma sunucusu vb.
  • Masaüstü (iş istasyonları ve dizüstü sistemlerde dahil) sistemler: GNOME masaüstü ve bir çok grafik arayüze sahip uygulamalar.
Altyapı hizmetlerinin %95'i kesintisiz çalışacak şekilde (buna puppet yapılandırma sunucuları da dahil) yapılandırılmış durumda. Sunuculardan bir tanesinin kapatılması işleyişi engellemiyor. Tüm sistem Zabbix ile izleniyor: Her ofiste bir adet Zabbix proxy sunucusu bulunuyor ve IPSEC VPN üzerinden merkezi Zabbix sunucumuza bağlanıyor.


Bunun yanında ayrıca İphone, Android, Blackberry ve Windows Mobile 6 üzerinde çalışabilen mobil bir Zabbix istemcisi geliştirdik. Böylelikle sorumlu yöneticiler, OpenBSD sistemlerin durumunu her yerden izleyebiliyorlar. ;-)


OpenBSD için yazılmış olan ve bir çok farklı yerine getirmek için neler yapılması gerektiğini açıklayan belge bulabilirsiniz. Bu yazıyı yazmamdaki amaç üzerinde durulmamış iki konu puppet ile merkezi kurulum ve yapılandırma ve de son kullanıcı için OpenBSD masaüstü olarak kullanımı konularında bilgi vermek.

Sunduğumuz çözümler arasında kendimizce imzalanmış paketleri de kullanıyoruz. Bunun aslında güvenlik açısından bir önemi yok ama kullanılan paketlerin tamamen bizim hazırladıklarımız olduğundan emin olmak istiyoruz. Bu konuda hazırlanmış bir nasıl yapılır belgesi OpenBSD FAQ içerisinde yer alıyor.


Son Kullanıcı OpenBSD ile Karşılaşıyor.

Sıradan bir kullanıcı için kullandığı Windows XP sisteminin bilgi işlem personeli tarafından Windows 7'e terfi edildikten sonra yeni sisteme alışılması zor bir durumdur. Bu sıkıntı çabuk atlatılır zira dünyanın geri kalanında işler az çok bu şekilde yürür. Ama Windows Xp'den Mac OS X'e geçmek ise çok daha zordur. Gerçi bunu da atlatmak kolaydır çünkü bir çok kullanıcının İPod vardır ve zamanla buna da alışırlar. Asıl sorun ise >10 yıldan uzun süredir Windows ve MS Office kullanan kullanıcıları OpenBSD GNOME masaüstü ve Libre/Openoffice'e günlük işleyişte bir sorun olmadan yani verimlilik düşmeden, yani para kaybetmeden geçmelerini sağlamaktır.

Bu tür bir geçişin önemli noktası yeni sistemi kurmak değil, kullanıcıları bilgilendirmektir. Kullanıcıların alıştıkları ortam değiştiğinde kendilerini cezalandırılmış gibi hisseder, dolayısıyla da neden bunun yapıldığını ve sonuçta kendisine faydasının ne olacağını ve işini nasıl yapacağını açıklamak son derece önemlidir. Biz ise kullanıcı tarafında olmayı tercih ediyoruz, insanlar işlerin yapılmasını ister ve bilgisayarın nasıl işlediğini öğrenmek ile ilgilenmezler.


Teknik açıdan bakıldığında son kullanıcı masaüstü aşağıdaki bileşenlerden oluşur:

  • Önceden yapılandırılıp hazırlanmış olan GNOME masaüstü
  • Ofis işleri için Libre/OpenOffice
  • Windows terminal hizmetlerini veya uzak masaüstü erişimi için kullanılacak olan OpenNX (kuruluşlar sadece Windows üzerinde çalışan ve kendilerinin kullanacakları uygulamalar geliştirdikleri için bu zorunlu hale geliyor)
  • Günlük olarak çalışırken gerek duyulan diğer yazılımlar (web tarayıcısı, ftp istemcisi, resim görüntüleyici ve çoklu ortam uygulamaları vb)

Masaüstü yapılandırması ise gconf komutlarını çalıştıran bir kabuk programı ile yapılıyor. (Bu puppet daemon tarafından çalıştırılıyor)


Masaüstünü gconftool-2 kullanarak istediğimiz gibi yeniden yapılandırabiliyoruz.

Masaüstü kullanımı için bazı kabuk programları da kullanıyoruz. Uzun yıllar Windows kullandıktan sonra kullanıcılar bilgisayarın işleyişine ilişkin alışkanlıklar ediniyorlar ve bizde bunu olabildiğince yeni sistemde sağlamaya çalışıyoruz. (örneğin, USB bellekler hotplugd(8) kullanan bir kabuk programı ile masaüstünde bağlayıp, natulius penceresinde görüntüleyebiliyoruz. Ayrıca sağ fare menüsü ile donanım ayrılabiliyor.
Bunun aynında sıklıkla yapılan bazı işlemler için örneğin USB belleği şifrelenmesi, ağ servislerinin yeniden başlatılması, ppp/pppoe/WiFi bağlantıları, ofise IPSEC VPN üzerinde erişmek, yerel ve Kerberos şifrelerini değiştirmek gibi, grafik arayüze sahip uygulamalar da geliştirdik.

Dizüstülerde kullanıcıların ev dizinleri standart OpenBSD araçları kullanılarak her bir kullanıcıya ait özel bir parola ile açılacak şekilde şifrelenmiş durumdadır.
Bir kullanıcının gereksinim duyabileceği her şey bir tıklama ile ulaşılabilirler ve terminal üzerinden çalışmak durumunda değiller.

Son Kullanıcı “İnce” OpenBSD ile Tanışıyor.

Bazı durumlarda tam donanımlı bir masaüstüne gerek duyulmaz. Bu durumlar için OpenBSD tabanlı bir ince istemci çözümü de hazırladık.



İnce istemci yapısında OpenBSD temel sistem ile birlikte x* setleri de yer alıyor. “/” bölümü ise salt okunur olarak bağlı iken diğer bölümler (/tmp,  /home, /var/log ve /var/db) oku-yaz olarak bağlanıyor.

Sistemin açılışı tamamlandıktan sonra X.org ve ince istemci yazılımı /etc/ttys üzerinde başlatılabiliyor.

İnce istemcilerin güncellenmesi ve yapılandırması M:tier tarafından işletilen merkezi bir puppet sunucusu üzerinden yapılıyor. İstemciler üzerindeki güncelleme yapılacağı zamana puppet daemon “/” bölümünü oku-yaz olarak yeniden bağlayıp işlem tamamlanınca yeniden salt okunur olarak bağlıyor.

Yapılandırmaya bağlı olarak IPSEC kullanılabiliyor. IPSEC ve LAN durumu istemci tarafında belirlenebiliyor.

Bu yapılandırmada özelleştirilmiş /etc/rc kullanılsa da (açılış süresini kısaltmak için) temel olarak standart bir OpenBSD kurulumu kullanılıyor.

Kurulum, Bakım ve Yapılandırma

Burada farklı yerlerdeki sistemlerin yönetilmesine ilişkin teknik ayrıntılara değineceğiz.

Kurulum

Masaüstü ile sunucuların kurulum süreci aynıdır. Ofislerde kesintisiz olarak çalışan pxeboot sunucusu ve puppetmaster bulunur. Bunlar kurulumun otomatik olarak gerçekleşmesi için gereken tüm işlemleri otomatik olarak gerçekleştirebilir.

Bir sistemin kurulması pxeboot ile sistemi başlatabilen özelleştirilmiş bir bsd.rd çekirdeği ile gerçekleştirilir. Bsd.rd otomatik olarak diski bölümler ve gereken setleri yerel ftp sunucusundan pxeboot sunucusunda barındırılan yapılandırma dosyalarını okuyarak çeker ve kurar.

Kurulumun tamamlanmasının ardından ruby-puppet paketleri kurulur ve puppetd başlatılır. Bunun ardından puppetd kurulacak olan sisteminin masaüstü, sunucu, iş istasyonu veya dizüstü olmasına göre gereken yapılandırma dosyalarını okuyup işleyerek işlemi gerçekleştirir.

Puppet, paketlerin kurulumundan daemon kullanıcıların hazırlanmasına dek gereken tüm yapılandırmayı gerçekleştirebilir.

Kurulum tamamlandığında sistem otomatik olarak yeniden başlatılır ve rc.firsttime çalıştırılarak kurulum sonra gerçekleştirilmesi gereken root şifresinin belirlenmesi, Kerberos yapılandırılması gibi yönetimsel işlemler gerçekleştirilir.

Dikkat edilmesi gereken puppet'ın –servertype=mongrel seçeneği ile çalıştırılmakta olduğudur. Nginx kullanarak gelen eş zamanlı bağlantı isteklerini dengeleyerek kesintisiz olarak sistemlerin çalışmasını sağlıyoruz.

Yapılandırmanın Atanması

Yapılandırma işlemleri için özellikle puppet tercih ediyoruz. Merkezi bir yapılandırma dosyası kullanabilmek en önemli avantajı olmakla birlikte aynı zamanda bir çok müşteri tarafından da kullanabilen standart yapılandırma dosyaları içerisinde bazı değişkenleri değiştirip özel yapılandırmalar hazırlanabilmesine olanak veriyor.

Puppet yapılandırma dosyaları paketin içerisinde yer alıyor. Yapılandırmada bir değişiklik gerektiği zaman gereken düzenleme dosyada yapılıp yeni bir paket hazırlanır. Bu paket de istekte bulunan ofis tarafındaki puppetmaster tarafından çekilip geri kalan işlemler tamamlanır.

Açıkça görüleceği gibi tüm işlemler gerekli kontrollerden geçtikten sonra gerçekleştirilmektedir ama bazen yani yapılandırmalar yönetici tarafından kontrol edilip onaylandıktan sonra yürürlüğe girebilmektedir.

Ruby kullanılarak yazılmış olmasından ötürü puppet kolaylıkla yeni özellikler ile donatılabilmekte ve hemen hemen her türlü görev kolaylıkla gerçekleştirilebilmektedir. Biz de bu özelliğini fazlasıyla kullanıyoruz :-)

Bakım

Şaşırtıcı gelecek ama bakım çalışmalarını da puppet ile gerçekleştiriyoruz. ;-) Tüm sistemlerde çalışan puppet daemon otomatik olarak paket, antivirüs güncellemelerini kontrol ediyor... Evet, antivirüs kullanıyoruz, çünkü özel ve genel erişime açık dosya paylaşımları Windows kullanıcıları tarafından NFS ve FTP (IPSEC VPN üzerinden) uzak Windows terminal sunucusu ile erişilebiliyor.
Temel sisteme ait güncellemeleri için binpatch-ng altyapısı ile hazırlanmış derlenmiş dosyaları barındıran paketleri kullanıyoruz. Bu paketler standart OpenBSD paketleri olarak paketleme araçları kullanılarak hazırlanıp pkg_add(1) ile kurulabiliyor ve değiştirilen dosyalar yedeklendiği içinde gerektiğinde işlemi geri alabiliyoruz.

Yedekleme işlemi iki farklı şekilde yapılıyor. Masaüstü sistemlerde her saat başı sisteminin anlık durumunu kayıt eden ve bunu NFS sunucusu üzerindeki gizli bir paylaşıma aktaran backintime adını verdiğimiz uygulamayı kullanıyoruz. Bu uygulama kullanıcılar için kullanımı kolay bir arayüze sahip olduğu için seçtikleri bir yedeği geri yükleyerek herhangi bir andaki dosyalarını, dizinlerini vb geri alabiliyorlar. Kurumsal yedekleme için ise bacula ile tüm sunucuları merkezi bir NSF sunucuna yedekliyoruz. (Bu yedekler aynı zamanda kullanıcıların yedeklerini ide içerdiği için, kullanıcı verileri iki defa yedeklenmiş oluyor.) Tüm sistemi geri yüklemek için ise bir sunucunun sadece başlatılıp sonrada baculanın çalıştırılarak her şeyin geri yüklenmesi yeterli oluyor. Kritik veriler aynı zamanda başka bir yedekleme sunucusuna da aktarıldığı için merkezi yedeklerin bir kopyası her zaman farkli bir sunucuda da bulunuyor. Bu ikili yapılandırma kurumsal gereklilikleri yerine getirirken aynı zamanda yedeklere erişimi kolaylaştırıyor.

Her zaman için ofislerde sistem yöneticilerinin bulunması gerekmese de yerel ofislerden sorumlu olan yönetici arkadaşlarımız var. Bu ekip içerisinde neredeyse içlerinden en az biri bile OpenBSD adını duymamış, hatta bazıları sadece Windows ile çalışmış ve başka bir sistem hakkında bilgileri olmayan kişiler. Bu sorunu çözmek için hepsini günler süren kuramsal ve uygulamalı eğitimlere alıyoruz. Bu eğitimlerde yıllarca UNIX sistemleri kullanmış ve çalışmış kişilerin sormayacağı soruları sordukları için bizim açımızdan son derece heyecan verici oluyor.

Sonuç

Bir ofisin personelinin yeni sisteme alışması aylarca sürse de, kullanıcılar sonunda yeni sistemlerine alışıp rahatça işlerini yapabilir hale geliyorlar.

Bizim için ise ofise girdiğimizde tüm bilgisayarlarda OpenBSD çalıştığını ve kullanıcıların ise sistemlerinden memnun olduklarını görmek onur verici. İlk bakışta bir çok kere gördüğümüz diğer bir çok ofisten bir farkı yok gibi görünse de ekran dikkatli baktığınızda farklı olduğunu görebiliyorsunuz. ;-)

Bu süreçte bir çok sosyal, yasal ve teknolojik sorun ile karşı karşıya kalsak da en ilginç olanı masaüstünde OpenBSD kullanılması oluyor. Bir çok kişi OpenBSD'i sunucu, yönlendirici, güvenlik duvarı veya gömülü sistem olarak kullansa da masaüstü olarak kullananlar azınlıkta kalır. (OpenBSD sevenler zaten evde, işte her yerde kullandıkları için onları saymıyorum)

Bir diğer deyişle çözümlerimizi geliştirirken başkalarının deneyimlerinden yararlanma fırsatımız bulunmuyor. En iyi tarafı ise işimiz ile hobimiz arasında bir ayrımın olmaması!

Umarım bu yazıyı keyifle okudunuz ve OpenBSD'nin kurumsal dünyada aklınıza gelemeyecek yerlerde ve şekillerde nasıl kullanıldığına dair bir fikir oluşturabilmişimdir.

Antoine'e M:Tier'deki işleyişi anlattığı için teşekkür ediyoruz!