Automatizovaná instalace RHEL/CentOS 6 přes síť
Když potřebujete instalovat větší množství serverů Red Hat Enterprise Linux nebo CentOS, máte na výběr několik možností jak to udělat. Ruční instalace z CD/DVD jistě nebude to pravé. Instalace se zadáním kickstart souboru (soubor s odpověďmi na otázky instalátoru) je trochu lepší volba, ale co když server nemá ani DVD mechaniku? Řešení je jednoduché, pojďme instalovat přes síť!
Jak má instalace přes síť fungovat?
Předpokladem instalace přes síť je skutečnost, že server (počítač) umí ze sítě bootovat. U interních síťových karet se možnost bootu ze sítě zapne zpravidla přes BIOS počítače, u externích karet (PCI, PCIe) karet přímo v BIOSu karty. Boot ze sítě se provádí přes protokol PXE, kdy PXE zjistí přes DHCP adresu boot serveru a přes TFTP stáhne část operačního systému, která si už umí pustit instalátor. Instalátor se pak dotáže, kde má hledat soubor s odpověďmi k instalaci a kde má na síti vystavené balíčky a provede vlastní instalaci. Snadné že? :)
Dejte pozor, instalační server používá vlastní DHCP a TFTP server, tedy služby, které by ve vaší síti mohli běžet a mohlo by docházet ke kolizím…
Instalujeme síťový instalační server
Všechny instalace, které dělám testuji přes VirtualBox, neb mi umožňuje spustit na mém notebooku více počítačů s různými OS. Ke každému virtuálnímu počítači je možné připojit více síťových rozhraní a také je zde možnost použití interní sítě, která propojuje virtuální počítače. Díky tomu nemám na stole několik počítačů a mohu si celé prostředí vzít kdykoli kamkoli…
Jako OS instalačního serveru jsem použil aktuální Centos 6.0 v minimální instalaci (instalovaný přes netinstall, kdo by stahoval instalační DVD, když z něho potřebuji cca 10% dat). Můj virtuální server má tři síťová rozhraní:u
- eth0 se statickou adresou 10.10.11.1 (ve Virtualboxu internal network je jménem netinstall). Na síti připojené k eth0 budou instalované počítače
- eth1 s adresou 10.0.4.15 z DHCP (ve Virtualboxu NAT) bude sloužit pro připojení mého serveru na internet
- eth2 s adresou 192.168.56.102 z DHCP (ve Virtualboxu Síť pouze s hostem)
Pokud na instalační server použijete počítač, samozřejmě postačí jedna síťová karta. Pro instalaci je důležité abyste byl počítač připojen k internetu.
Pro jednodušší instalaci vypněte firewall a selinux. Selinux vypnete tak, že v souboru /etc/sysconfig/selinux změníte řádek na SELINUX=disabled, vypnutí iptables je možné přes:
# vi /etc/sysconfig/selinux SELINUX=disabled # service iptables stop # chkconfig iptables off
pro instalaci budeme potřeboval repozitář EPEL, pokud ho nemáte, tak ho přidáte:
# rpm -Uhv http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm
Nainstalujte potřebné balíčky. Balíček system-config-kickstart má v závislostech xorg, tak se nelekejte, že se instaluje dalších 250MB navíc. Díky system-config-kickstart se nám pak ulehčí práce při vytváření nové šablony (jednoduše jí naklikáte). Jako software instalačního serveru použiji cobbler. Cobbler toho umí o mnoho více, než je ukázáno v tomto návodu, proto se neváhejte podívat na stránky projektu a poohlédnout se po možnostech.
# yum install cobbler cobbler-web pykickstart httpd dnsmasq system-config-kickstart
Poslední verze v době vytváření tohoto článku byla cobbler-2.0.11-2, všechna nastavení a konfigurace jsou tedy k této verzi.
Protože budeme potřebovat FFTP, je nutné ho povolit. Editujte soubor /etc/xinetd.d/tftp a změňte parametr disable na „no“.
# vi /etc/xinetd.d/tftp disable = no
nastartujeme nainstalované programy:
# service httpd start # service xinetd start # service cobblerd start
nastavíme startování programů po startu počítače:
# chkconfig httpd on # chkconfig xinetd on # chkconfig cobblerd on
Jako DHCP a DNS server jsem místo standardních ISC dhcpd a Binda použil dnsmasq, který je velmi jednoduchý a mám s ním dobré zkušenosti. O spouštění dnsmasq se stará přímo cobbler, takže se jeho samostatnou konfigurací a spouštěním nemusíte zabývat.
Vlastní konfigurace cobbleru
V souboru /etc/cobbler/modules.conf je třeba upravit nastavení na
# vi /etc/cobbler/modules.conf [dns] module = manage_dnsmasq [dhcp] module = manage_dnsmasq
Dále pak v souboru /etc/cobbler/dnsmasq.template je třeba nastavit rozsah přidělovaných adres – dhcp-range, jako „server“ zadejte DNS, které se má používat a přes no-dhcp-interface vyberte ty síťvé karty kam se nemá pouštět DHCP.
# vi etc/cobbler/dnsmasq.template dhcp-range=10.10.11.100,10.10.11.150 server=8.8.8.8 no-dhcp-interface=eth1, eth2
v souboru /etc/cobbler/settings pak změňte příslušné řádky na následující hodnoty:
# vi /etc/cobbler/settings server: 10.10.11.1 next_server: 10.10.11.1 manage_dhcp: 1 manage_dns: 1
restartujeme cobblerd a zavoláme kontrolu (check), která ověří správnost konfigurace:
# /etc/init.d/cobblerd restart # cobbler check
Příkaz cobbler check vrátí vždy nějaké chyby, je to normální a proto zde musíte zapnout hlavu a zapřemýšlet zda je to něco podstatného či nikoli. Například tyto je možné zvesela ignorovat:
1: service dnsmasq is not running 2: debmirror package is not installed, it will be required to manage debian deployments and repositories 3: fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
Jiný příklad kontroly, kdy chyby 2, 3, 5 je třeba opravit podle návodu v každém bodu:
1: service dnsmasq is not running 2: some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements. 3: change 'disable' to 'no' in /etc/xinetd.d/rsync 4: debmirror package is not installed, it will be required to manage debian deployments and repositories 5: The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one 6: fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
Jakmile vše podstatné opravíte, tak je třeba příkazem cobbler sync spustit „deploy“ konfigurace cobblerd. Cobbler sync se pouští po změně konfigurace, přidání nového kickstart souboru nebo hosta. Kompletní popis co to dělá viz man cobbler.
# cobbler sync
Následuje přidání distribuce, tedy stáhněte si .iso soubor. Já, protože jsem minimalista, tak jsem použil CentOS-6.0-x86_64-minimal.iso
proveďte mount iso do /mnt
# mount /root/CentOS-6.0-x86_64-minimal.iso /mnt -o loop
importujte instalační iso do cobbleru:
# cobbler import –-name=CentOS6minimal --path=/mnt
Import vrátí po chvíli chybu, to je ok (divné, že?). Dočetl jsem se, že import proběhne s výsledkem OK jen pokud mu předhodíte kompletní instalační DVD.
Přidání distribuce do cobbleru
# cobbler distro add --arch=x86_64 --breed=redhat --name=CentOS6minimal --initrd=/var/www/cobbler/ks_mirror/CentOS6minimal/isolinux/initrd.img -- kernel=/var/www/cobbler/ks_mirror/CentOS6minimal/isolinux/vmlinuz
Vytvoření repozitáře pro balíčky
Importem distribuce je zřízen repozitář (jsou tam balíčky a metadata o obsahu repozitáře), ale tato data musí být vystavena ven přes některý z protokolů kterým instalátor rozumí (http, ftp, nfs). Nejsnadnější je vystavit data přes http, vytvořte nový konfigurační soubor a do něj vložte níže uvedené:
# vi /etc/httpd/conf.d/repo.conf Alias /install /var/www/cobbler/ks_mirror/CentOS6minimal <Directory /var/www/cobbler/ks_mirror/CentOS6minimal> Options Indexes FollowSymlinks SymLinksifOwnerMatch Includes NOEXEC IndexOptions NameWidth=* DescriptionWidth=* allow from all </Directory>
Vygenerování kickstart šablony
Spusťte system-config-kickstart a vytvořte šablonu pro nový server. Pro začátek co nejjednodušší, bez zbytečných balíčků navíc, klidně bez swapu jen s /boot a „/“. Pro spuštění system-config-kickstart musíte být v Xkách (takový ty grafický okýnka na Linuxu), protože mám Xka na svém notebooku a instalační server ve Virtualboxu, tak jsem zavolal ssh s parametry -X a díky tomu se vytvoří ssh tunel na moje X a obrazovka kickstartu se zobrazí u mě na notebooku.
# ssh -X -Y 192.168.56.102
Předkládám několik screenshotů, které popisují moje nastavení pro nový server. V záložce výběr balíčků jsem nezaškrtl nic, ještě se k výběru vrátím později…
Pokud máte šablonu naklikanou, tak ji uložte na server do souboru var/lib/cobbler/kickstarts/centos6minimal.ks a následujícím způsobem vytvořte profil v cobbleru:
# cobbler profile add --name=CentOS6-minimal --distro=CentOS6minimal –kickstart=/var/lib/cobbler/kickstarts/centos6minimal.ks
Nyní je čas pro konfiguraci v cobbleru. Cobbler má krásné webové klikátko, které dokáže některé věci poměrně usnadnit. Aby bylo webové rozhraní dostupné, je třeba ho trochu ponastavit. V souboru /etc/cobbler/modules.conf je třeba mít
# vi /etc/cobbler/modules.conf
[authentication] module = authn_configfile [authorization] module = authz_allowall
Pak si založte účet pro přístup do webu, mujlogin nahraďte svým.
# htdigest /etc/cobbler/users.digest "Cobbler" mujlogin # service cobblerd restart # service httpd restart
Přístup na adresu webového klikátka je možný přímo přes prohlížeč ve virtuálním počítači, pokud chcete na tuto adresu přistoupit přes prohlížeč na notebooku, tak budete muset přidat routu (notebook musí vědět, kde má adresu 10.10.11.1 hledat).
# route add -net 10.10.11.0/24 gw 192.168.56.102
Přihlašte se na http://10.10.11.1/cobbler/web/. V levém memu Profiles vyberte Váš profil a zkontrolujte zda je správný, tedy obsahuje správnou distribuci a správnou cestu ke Kickstart souboru. Pak v levém menu Systems, Create new system, zadejte jméno a vyberte profil, dole pak přes save uložíte nový Systém. Jakmile dokončíte konfiguraci, je nutné přes cobbler sync aktualizovat změny v nastavení.
# cobbler sync
Hotovo? Tak se pusťte do první instalace přes síť. Ve Virtualboxu si založte nový počítač, síťovou kartu 0 připojte na stejnou interní síť jako je rozhraní eth0 instalačního serveru (u mě se síť jmenuje netinstall). Dál u nového počítače ve Virtualboxu nastavte, že počítač má bootovat se sítě. Pokud bude vše ok, uvidíte na počítači žádost o DHCP, v menu pak bude možné vybrat jméno zadaného systému, instalace bude pokračovat stažením image, následně naběhne instalátor, rozdělí se disk, zformátuje, spočítá závislosti a nakonec nainstaluje balíčky.
Výběr balíčků k instalaci
V mé defaultní šabloně se instaluje pouze „core“ balíčků. Tedy pouze ty, které systém potřebuje. Kickstart je samozřejmě mocný nástroj a je možné přes něj instalovat konkrétní seznam balíčků „namíru“. Zadání balíčků se provádí tak, že do šablony (.ks) přidáte parametr %packages a pod ním vyjmenujete všechny balíčky, které se mají instalovat. Balíčky samozřejmě musíte mít v repozitáři a musíte k nim vygenerovat medatata.
%packages perl samba bind
Lepší šablona = méně práce pro správce
Do šablony kickstartu je možné doplnit ještě spoustu dalších vychytávek, například pre scripty a post scripty, což se při vetším množství serverů rozhodně vyplatí, neb tím ušetříte spoustu ručního nastavování. Pokud potřebujete použít softwarový raid, tak to kickstart také umí.
Shrnutí
Moje minimální bezobslužná instalace operačního systému CentOS a RHEL ze sítě je hotova do 10ti minut. Všechny servery jsou nainstalované stejně, obsahují stejný set balíčků, stejné nastavení, prostě přesně to co jsem potřeboval.