Sunucu Ayarlarının Sürümlendirilmesi
Doruk Fişek (dfisek@ozguryazilim.com.tr)
Sürümlendirmek?
İngilizce: Versioning / Revision Control
Bir dosya değiştikçe, eski sürümünün de saklanması, kaybedilmemesi
1.0, 2007, r45, 201203301400, ...
Neden Sunucu Ayarlarının Sürümleri?
Sistem üzerinde çalışırken yapılan değişiklikleri takip edilebilmek
Sistemde yapılan değişikliklerde eski bir sürüme geri dönebilmek
Yapılan değişikliklerin tam neler olduğunu, anında görebilmek
Özellikle birden fazla sistem yöneticisinin çalıştığı sunucular için
Asıl amaç yedeklemek değil!
Örnek Fark Bilgisi
Nasıl?
Bir sürüm takip sistemi (GIT, SVN, vs) servisinin hazırlanması
Sistemde sürümlendirilecek ayar dizinlerinin ve istisnaların belirlenmesi: /etc, /var/spool/fax/etc, /var/qmail/control, /root/scripts, ...
Mevcut dizinlerin sürüm takip sistemine yerleştirilmesi
Yapılan değişikliklerin elle ya da otomatik sürüm takip sisteminde güncellenmesi
Sistem Dizinlerine En Az Müdahale
Sürüm takip sistemleri dizinlerin altına dosyalar yerleştirir.
GIT -> ilgili kök dizinine bir .git dizini
SVN -> her alt dizinin altına .svn dizini
Hiç müdahale olmaması için rsync ile ayar dizinlerinin bir kopyası sistemde başka bir dizine alınarak o dizin sürüm kontrolüne alınabilir.
Güncelleme Yöntemi: Elle
Not düşmek (log) mümkün.
Not düşerken kimin değişiklik yaptığı bilgisi eklenebilir.
Denemeler, ufak değişiklikler pas geçilebilir.
Bir konuya ilişkin değişiklikler tek seferde sürüm takip sistemine eklenebilir.
Arada sürüm arttırmak unutulabilir!
Verilecek Kararlar
Otomatikleştirmek mi? Elle güncellemek mi?
Dosya sistemi düzeyinde değişiklik izlemek mi? Zamanlayıcı ile periyodik mi?
Hangi sürüm takip sistemi?
Yapılmışı Var: EtcKeeper
http://joey.kitenet.net/code/etckeeper/
Paket yöneticilerine kanca atıyor, güncelleme olduğu anda otomatik çalışıyor.
Dosya sistemindeki değişiklikleri inotify ile takip edebiliyor.
Sürüm takip sistemi olarak GIT, Bzr, Darcs destekliyor.
Yapılmışı Var: Toplu Yönetim Araçları
Puppet: http://projects.puppetlabs.com/projects/puppet
Chef: http://wiki.opscode.com/display/chef
CFEngine: http://cfengine.com
...
Sorular
Tüm sistemi sürümlendirmek mümkün mü?
Kolayca sürüm yönetmek için bir GUI (grafik arayüz) var mı?
Harika fikir, patentini niye almıyorsunuz?
Ve daha niceleri...