Öyle bir seyir defteri…

Cobbler Ağ Üzerinden Kurulum Sunucusu

09 Şubat 2013 Cumartesi, 22:50 | Gezegen

Cobbler da ney” dediğinizi duyar gibi oluyorum :).

Özetle, Cobbler, kurulu olduğu ağdaki bir sunucuyu “ağdan açılmaya” (network boot) ayarladığınızda, karşınıza bir menü gelmesini ve bu menüde seçtiğiniz dağıtımın kurulumunu sağlar.

Üstelik kuracağınız dağıtım destekliyorsa, “kickstart” adını verdiğimiz bir dosyaya kurulum adımları sırasında neler yapılacağını yazarsanız, size başka hiçbişi sormadan kurulumu tamamlayabiliyor.

Peki, ne işinize yarar böyle bir servis? İlk aklıma gelen birkaç senaryo:

  • Eğer sunucuya bağlı bir KVM aygıtı varsa, sunucunun başına fiziksel olarak gitmeden kurulum yapabilirsiniz.
    • Kim şimdi yerinden kalkacak? :)
    • Sistem odaları çok gürültülü, yorucu, hasta edici ortamlardır. Orada geçen her dakika, bizim yaşam enerjimizden çeker.
    • Sunucu bir veri merkezinde (datacenter) olabilir. Her veri merkezine isteseniz de girme olanağınız olmayabilir (örneğin sunucular yurtdışında).
  • Kurulum için USB bellek, DVD, vs taşımak gibi bir derdiniz olmaz.
  • Kurumunuzdaki tüm sunucuların aynı şekilde kurulabilmeleri için çeşitli etkileşimsiz kurulum türlerini önden hazırlayıp, herhangi bir kişiyi “menüdeki şu seçeneği seç ve kurulumu yap” diye görevlendirebilirsiniz. Hata yapması mümkün olmaz :)

Cobbler aslında ufacık bir servis. Ama kendi dışında birçok sunucu servisini bir yerlere koşturuyor. DNS, DHCP, TFTP, HTTP, rsync, …

Cobbler’ın RHEL 6 serisi bir dağıtımda (Scientific, CentOS, Oracle) kurulumunu anlatacağım. Başka bir dağıtımda da benzer adımlarla kurabilirsiniz.

Cobbler’ı çalıştırmak için en ideal ortam, sunucuların kendi aralarında kurulmuş olan yedek ağdır. Bugün artık sunucuların hemen hepsinde birden fazla ethernet aygıtı bulunuyor. Bunlardan bir tanesi de genellikle sunucuların kendi aralarında (dışarı kapalı) bir ağ oluşturmak için kullanılıyor — kendi arasında veri alışverişi yapmaları dışarıya verdikleri hizmeti etkilememesi amacı ile. Bu ağda başka bir DHCP sunucusu çalışması gibi bir risk de bulunmadığından çok daha rahat hareket edebiliyoruz.

Cobbler’ı beraber kullanacağınız bir DHCP ve DNS sunucunuzun da hazırda bulunmadığını düşünerek, onları da Cobbler ile beraber ayarlıyoruz. Bunun için en kısa yöntem Dnsmasq servisini kullanmak oluyor. İsterseniz ağdaki bir DHCP ve/ya DNS sunucusunu kullanabilirsiniz.

Cobbler’ın paketleri popüler Redhat ek depolarından EPEL’de bulunuyor. Öncelikle ekli değilse onu ekliyoruz:

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Cobbler için gerekli paketleri kuruyoruz:

yum install cobbler dnsmasq

Ek olarak,
* pykickstart sadece kurulumları etkileşimsiz yapmak isterseniz (kickstart dosyaları ile yapılacak seçimleri tanımlıyorsunuz)
* debmirror Debian temelli bir dağıtım kurmak isterseniz
* fence-agents da sunucularda güç yönetimi yapmak isterseniz
* cobbler-web, Cobbler için bir web arayüzü kullanmak isterseniz
kurulabilir. Zorunlu değiller.

Servislerimizi açalım ve açılışta çalışır hale getirelim:

service xinetd start
service dnsmasq start
service httpd on
service cobblerd start
chkconfig xinetd on
chkconfig dnsmasq on
chkconfig httpd on
chkconfig cobblerd on

Cobbler’a hem DHCP için hem DNS için dnsmasq kullanacağımızı söylemek için /etc/cobbler/modules.conf dosyasındaki ayarları şu şekilde değiştiriyoruz:

[dns]
module = manage_dnsmasq

[dhcp]
module = manage_dnsmasq

Dnsmasq’ın ayarlarını Cobbler kendisi yapacak ama o ayarların neler olduğunu kendisine söylememiz gerekli. Bunun için /etc/cobbler/dnsmasq.template dosyasını şu şekilde değiştiriyoruz:

dhcp-range=Baslangic_IPsi,Bitis_IPsi
server=DNS_Sunucumuzun_IPsi
no-dhcp-interface=eth0

Buradaki no-dhcp-interface seçeneği, sunucunun İnternet’e bağlı bacağında DHCP servisi verip ortalığı karıştırmamasını sağlıyor. eth0 yerine sunucunuzdaki ilgili aygıtı yazabilir ya da böyle bir kaygınız yoksa tamamen kaldırabilirsiniz.

Cobbler’ın rsync’in etinden-sütünden yararlanabilmesi için /etc/xinetd.d/rsync dosyasındaki ayarı şu şekilde değiştiriyoruz:

disable = no

Cobbler’ın asıl ayarlarını ise /etc/cobbler/settings dosyasından yapıyoruz:

server: Sunucumuzun_IPsi
next_server: Sunucumuzun_IPsi
password: $1$3xhywdbz$0zc2kIXyvfYngTdgddX/20
manage_dhcp: 1
manage_dns: 1

Burada server ayarı Cobbler servisinin, next_server ayarı TFTP servisinin IP’si ama bizim kurulumumuzda iki servis de aynı makinede olduğu için aynı IP’yi yerleştiriyoruz.

password kısmındaki hash’i ise şu şekilde oluşturuyoruz:

openssl passwd -1 -salt 'rasgelebisiler' 'degistirbeni'

Debmirror kurduysak, /etc/debmirror.conf dosyasında aşağıdaki ayarları düzenliyoruz:

#dists
#arches

Cobbler paketi ile tüm ağ yükleyicileri gelmiyor, aşağıdaki komutla İnternet’ten eksikleri indirebiliyoruz:

cobbler get-loaders

Güvenlik duvarında Cobbler ve saz arkadaşları için bir seri delik açmak gerekiyor:
* 53 – Dns
* 67,68 – Dhcp
* 69 – Tftp
* 80,443 – Httpd
* 873 – Rsync
* 25150-51 – Cobbler

Bunu /etc/sysconfig/iptables dosyasını doğrudan düzenleyip servisi tekrar başlatarak ya da service-config-firewall(-tui) arayüzü ile yapabilirsiniz. Tabii bir seçenek de güvenlik duvarını tamamen kapatmak.

Keza SELinux için de biraz emek harcamak gerekiyor (eğer uğraşmayıp tamamen kapatmayı tercih etmezseniz). httpd’nin web servis parçalarının kullanılabilmesi, tftp’nin imaj dosyalarına erişebilmesi için:

setsebool -P httpd_can_network_connect true
semanage fcontext -a -t public_content_t "var/lib/tftpboot/.*"
semanage fcontext -a -t public_content_t "/var/www/cobbler/images/.*"

Cobbler servisini tekrar başlatıyoruz ve Cobbler’ın ayarlarını ilgili diğer servislere uygulamasını sağlıyoruz:

/etc/init.d/cobblerd restart && cobbler sync

Etkileşimsiz kurulum için bir kickstart dosyası hazırlamak isterseniz, örneklerini /var/lib/cobbler/kickstarts dizinindeki dosyalarda (ve İnternet’te çeşitli sayfalarda) bulabilirsiniz. Ya da system-config-kickstart arayüzünü kullanabilirsiniz.

Artık kurulumlarda kullanacağımız dağıtımları Cobbler’a ekleyebiliriz.

Örneğin, Scientific Linux 6.3’ün ağ üzerinden kurulum ISO’sunu eklemek istersek, öncelikle ISO’yu dosya sisteminde bir yere bağlıyoruz:

mount SL-63-x86_64-2012-08-02-boot.iso /mnt/cdrom -o loop

Cobbler’a bu ISO’yu alıp dağıtım arşivine eklemesini istiyoruz:

cobbler import cobbler import --name=SL63-Boot --path=/mnt/cdrom

Bu adımda hata mesajı alınca paniklemeyin. Netboot ISO’ları gibi kırpılmış ISO’larda bu yaşanıyor. O zaman Cobbler’a, “sen otomatik bulamadın ama bu aslında Redhat türevi bir dağıtım” diye özel olarak belirtmemiz gerekiyor:

cobbler distro add --arch=x86_64 --breed=redhat --name=SL63-Boot --initrd=/var/www/cobbler/ks_mirror/SL63-Boot/isolinux/initrd.img --kernel=/var/www/cobbler/ks_mirror/SL63-Boot/isolinux/vmlinuz

Artık dağıtım Cobbler arşivlerinde olduğuna göre, bu dağıtımı kullanan bir kurulum profili oluşturabiliriz:

cobbler profile add --name=SL63-Boot --distro=SL63-Boot --kickstart=/var/lib/cobbler/kickstarts/centos6.ks

Kickstart parametresi zorunlu değil, onu vermezseniz etkileşimli standart bir kurulum gerçekleştirirsiniz.

Cobbler’ın burada bahsetmediğim daha birçok özelliği var: Memtest, paket yönetimi, ayar yönetimi, puppet entegrasyonu ve daha niceleri. Cobbler’ın el kitabında hepsinin detaylarını bulabilirsiniz.

Kurmaya değer mi?

Birkaç sunucu için değmeyebilir. Kurulacak sunucu sayısı artmaya başladıkça, Kickstart ve benzeri ek özelliklerini kullanmasanız bile, evet, değecek.

Bazı sunucuların yönetim arayüzlerinde de ağ üzerinden ISO yükleyip kurulum yapmak mümkün ama hiç o ISO’ları bir ADSL bağlantısı üzerinden yüklemeyi denediniz mi? :) Hadi bir kere yaptınız, kaç kere o işkenceye dayanabilirsiniz? Ya aceleniz varsa?

Sunucu sayınız giderek artıyorsa, üşenmeyin, Cobbler’la hayatınızı kolaylaştırın…

Bir Yorum Yazın

You are logged in as . To logout, click here.