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

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.

 

 

Like this:

Další témata