Spacewalk – centrální správa serverů

Spacewalk je OpenSource variantou k programu RH Satellite. Jeho úkolem je usnadnit administrátorům správu většího množství serverů, jejich operačních systémů RedHat nebo CentOS. Usnadnění spočívá zejména v zajištění lokálního repozitáře rpm balíčků a distribuci těchto balíčků na servery. Pod slovem distribuce je možné si představit jak manuální instalaci příkazem yum na koncovém serveru, také instalaci ze Spacewalk serveru „naklikanou“ administrátorem, ale i dávkové hromadné instalace balíčků na celé skupiny serverů.

Velkým úkolem ve větších prostředích je také zajištění shodnosti verzí balíčků na serverech.  Pokud instalujete server a následně provedete update z internetu, tak další instalace za 14 dní již může mít jiný update, protože byly vydány nové – „opravené“ verze. Výsledkem je, že verze balíčků na serverch nejsou shodné a pokud něco nebude na jednom ze serverů fungovat, je hledání problému daleko složitější. Díky Spacewalku je tedy možné garantovat i to, že budete mít jeden server s OS Linux jako druhý (stejný set balíčků) a to i v případě, že je budete instalovat s větším časovým odstupem.

Další zajímavou funkcí je možnost hromadně spravovat konfigurační soubory. Příkladem může být nastavení NTP, kdy je konfigurační soubor v rámci organizace většinou stejný, proč ho tedy nedistribuovat hromadně. V případě jeho změny NTP si tak lze ušetřit práci. Změnu takového souboru provede administrátor na jednom místě a spacewalk následně zajistí distribuci na servery. A co složitější konfigurační soubory, kde se mění obsah v závislosti na názvu serveru? I tyto soubory je možné spravovat Spacewalkem. Stačí napsat makro, které se o změnu postará.

 

Základní funkce, které je možné u Spacewalku využívat:

  • jediné centrální místo, ze kterého má administrátor přehled o konfiguraci a stavu serverů
  • možnost dávat servery do skupin a následně aplikovat akce na skupiny
  • centrální správa balíčků a updatů
  • lokální repozitory
  • lokálně uchovávat všechny výrobcem historicky vydané balíčky; tedy možnost upgrade/downgrade
  • balíčkové profily serverů; možnost patchovat na stejné verze
  • možnost připojit do Spacewalku RHEL, Centos, Fedora a další distribuce
  • architektura i386 a x86_64
  • centrální správa konfiguračních souborů s možností hromadného deploy na server
  • možnost použít makra ke změně obsahu
  • kickstart – automatická instalace nových serverů

Všechny informace, které zde najdete se vztahují k verzi Spacewalk 1.5

Co Spacewalk vyžaduje ke svému běhu

  • 1GB RAM (2GB a více je doporučeno)
  • 20GB a více (100GB) místa na disku (kvůli lokálnímu repozitáři)
  • nějaký „normální“ procesor, stačí jedno jádro; DB je stejně limitována na toto jedno jádro…
  • databázi Oracle XE – je zdarma; podpora pro PosgreSQL je ve vývoji, ale zatím tam nefunguje vše
  • na serveru pak nainstalovaný Centos nebo RHEL, ideálně platformu i386

Na co si dát po instalaci a napojení serverů pozor

  • pokud uděláte špatný konfigurační soubor a deploy na servery, je možné odstřelit funkční servery „snadno a rychle“
  • na serverech byste neměli používat žádné repozitáře, ani přidávat balíčky mimo Spacewalk
  • pravidelně zálohujte Spacewalk Oracle DB, předejdete tak problémům „všechno je v DB a DB je fuč“

 

Jak je to s napojením RHEL na Spacewalk?

Pokud používáte RHEL, tak zřejmě vlastníte předplatné, abyste mohli updatovat servery z rhn.redhat.com. RedHat nabízí pro správu program RH Sattelite, který nabízí stejnou funkcionalitu jako Spacewalk a navíc je přímo napojen na rhn.redhat.com. Tedy stahuje si aktualizace a Errata, se kterými pak RH Sattelite pracuje.
Spacewalk samozřejmě tuto možnost nenabízí (na čem by pak výrobce vydělal?), ale je zde možnost, jak docílit podobné funkcionality – tedy napojení serverů s RHEL na Spacewalk servery. Fígl je založen na lokálním repozitáři s balíčky RHEL a následném importu těchto balíčků do Spacewalku. Pro připojení serverů, na kterých je RHEL, budete potřebovat cca 2x tolik diskového prostoru. CentOS je samozřejmě možné napojit do repozitářů na přímo, balíčky se tedy „duplikovat“ nebudou.

Pozor: Připojení RHEL serverů na Spacewalk není nijak podporované řešení, máte-li jakékoliv pochybnosti, zakupte si RH Sattelite s možností placené podpory.

Instalace Spacewalk serveru

Pokud budete chtít používat Spacewalk jako management nástroj pro RHEL, instalujte RHEL. Pokud pro CentOS, instalujte CentOS.

Instalace je doporučena na platformě i386. Spacewalk standardně využívá /var/… k ukládání balíčků v repozitáři. Proto na toto myslete už při instalaci OS. Repozitáře mají různou velikost (podle počtu balíčků a updatů), doporučuji počítat na jeden repozitář alespoň 10GB prostoru. V případě RHEL se prostor vynásobí 2x (zkráceně, 100GB by mělo na chvíli stačit).

Oficiální postup instalace je zde: https://fedorahosted.org/spacewalk/wiki/HowToInstall, nemá smysl ho zde opisovat.

Instalace v bodech
  • vypněte Firewall, vypněte Selinux. Pokud na použití trváte (což je správné, věnujte pozornost nastavení ať pak nehledáte „proč to nefunguje“)
  • přidáte si repozitář Spacewalku
  • přidáte si repozitář Epel
  • pro instalaci je třeba stáhnout Oracle XE, který je zdarma (po registraci) k dostání ze stránek Oracle.
  • celý návod na  instalaci Oracle XE je zde: https://fedorahosted.org/spacewalk/wiki/OracleXeSetup

Osobně jsem instaloval tyto verze Oracle:
oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm
oracle-instantclient11.2-sqlplus-11.2.0.2.0.i386.rpm
oracle-xe-univ-10.2.0.1-1.0.i386.rpm

Vlastní spacewalk se pak instaluje jako yum install spacewalk-oracle. Po instalaci následuje konfigurace spacewalku, kde je třeba vyplnit  informace o db:
LANG=C; spacewalk-setup –disconnected

Další postup je popsán zde: http://wiki.centos.org/HowTos/PackageManagement/Spacewalk v bodu „7.2.1. Activation Key“, následně je třeba vytvořit channel, do kterého se budou ukládat balíčky. Vlastní synchronizace s veřejně dostupnými repozitáři je nejsnadnější přes script dle bodu „12. Script to sync repos“. Jediné, co je tam špatně, je pojmenování scriptu s cestou “ /usr/bin/spacewalk-repo-sync“. Tento script totiž existuje, je součástí spacewalku a stará se o vlastní nacpání balíčků dovnitř.

Jak na přidání repozitáře pro RHEL?

Zdroj balíků pro RHEL není veřejně otevřen, proto je nutné udělat lokální repozitář, který bude syncovat data z rhn.redhat.com na souborový systém serveru. Tuto synchronizaci zprostředkuje program mrepo. Lokálně pak syncnuté balíčky nalijeme do Spacewalku.

Instalace mrepo

yum install mrepo

Konfigurační soubor /etc/mrepo.conf
Dejte pozor, aby odkazované adresáře existovali a bylo v nich dostatek místa.

vi /etc/mrepo.conf
[main]
 srcdir = /var/mrepo
 wwwdir = /var/www/mrepo
 confdir = /etc/mrepo.conf.d
 arch = i386
 mailto = mujmail@mojedomena.tld
 smtp-server = localhost
 rhnlogin = mujrhnlogin:mojerhnheslo
 lftp-commands = set hftp:use-head 0

[rhel-server-5-i386]
 name = Red Hat Advanced Server $release ($arch)
 release = 5
 arch = i386
 metadata = repomd
 iso = rhel-server-5.6-i386-dvd.iso
 updates = rhns:///rhel-i386-server-5
 rhel-i386-server-vt-5 = rhns:///rhel-i386-server-vt-5
mkdir  /var/mrepo
mkdir /var/www/mrepo
chown httpd:httpd /var/www/mrepo

do /var/mrepo nakopírujte ISO obraz instalačního DVD (rhel-server-5.6-i386-dvd.iso)
Pokud neexistuje soubor /etc/sysconfig/rhn/up2date-uuid s níže uvedeným obsahem, vytvořte ho. Rhnuuid vytvořte příkazem uuidgen:

vi /etc/sysconfig/rhn/up2date-uuid

uuid[comment]=Universally Unique ID for this server
rhnuuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

v souboru /etc/sysconfig/rhn/sources musí být následující obsah:

up2date default

Pro každou architekturu musí mít mrepo vygenerován  systemid.  Systemid vygenerujete níže uvedeným příkazem. Generování si vyžádá jméno a heslo k rhn a vyžaduje pro každou platformu a každou verzi volnou subscripci (předplatné updatu RHEL). Tedy abyste měli ve spacewalku RHEL5 a RHEL6 pro i386 i X86_64, budete potřebovat 4 subscripce.

gensystemid -r 5Server -a i386 /data/repo/var/mrepo/rhel-i386-server-5

Vlastní stažení balíčků a jejich update:

mrepo -uvvv

Vygenerování metadat repozitory:

mrepo -gvvv

Jakmile bude toto dokončeno, je možné se podívat na obsah repozitáře přes www a zkontrolovat, že je naplněn balíčky: http://mujserver/mrepo

Ve chvíli, kdy je repozitář v pořádku přístupný, vytvořte ve Spacewalku nový „channel“ s názvem  rhel-i386-server-5 a syncněte ho do spacewalku:

spacewalk-repo-sync --channel rhel-i386-server-5 --url http://mujserver/mrepo/rhel-server-5-i386/RPMS.updates --type yum

Příkazy pro synchronizaci pak dejte do scriptu, který spouštějte 1x denně cronem. Díky tomu zajistíte historii všech balíčků vydaných výrobcem. Tedy pokud vám nová verze balíčku nebude fungovat, budeme mít k dispozici další…

Synchronizace z otevřených repozitářů

Na serverech s RHEL se často instalují balíčky z repozitářů EPEL a rpmforge. Tyto repozitáře by tedy bylo více než vhodné synchronizovat do Spacewalku tak, aby byl na serverech použit jediný zdroj balíčků. Vzhledem k obrovskému počtu balíčků v obou repozitářích je vhodné syncovat jen balíčky, které potřebujeme. Toto může zajistit program reposync, který nám syncne vybrané balíčky na lokální server a pak je přidáme do spacewalku.

Vzorová část konfiguračního souboru /etc/reposync.conf

[rpmforge-el5-i386]
 name = RPMforge for Enterprise Linux 5 - i386
 baseurl = http://apt.sw.be/redhat/el5/en/i386/dag
 gpgkey = http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
 gpgcheck=1
 includepkgs=amavisd-new arc clamav* clamd unarj nagios-plugins

spuštění synchronizace vybraných balíčků z repozitáře na souborový systém serveru

reposync --repoid= rpmforge-el5-i386 -c /etc/reposync.conf -p /var/repo/rpmforge-el5-i386 -d -l -g -n >> $LOGFILE 2>&1

vygenerování metadat repozitáře

cd /var/repo/rpmforge-el5-i386/rpmforge-el5-i386/RPMS
createrepo /var/repo/rpmforge-el5-i386/rpmforge-el5-i386/RPMS >> $LOGFILE 2>&1

následuje sync do Spacewaku do správného channelu

 

Zdroje informací

http://wiki.centos.org/HowTos/PackageManagement/Spacewalk
http://www.codarama.com/drupal/?q=node/4

Poznatky z nasazení

  • na klientech si importujte gpg klíče výrobce balíčků, jinak instalace neproběhne
  • downgradovat yum přes Spacewalk není dobrý nápad
  • celkově downgradovat není až tak dobrý nápad, dejte pozor na major release různých programů, které mají častokrát zásadně odlišné konfigurace (nebudou po rebootu fungovat)
  • downgrade kernelu se neprovede, protože kernel se instaluje do systému jako další balík, tedy stačí v Grubu vybrat, který z kernelů se má bootovat jako default
  • nezapomeňte na zálohování Spacewalku a databáze
  • dodaný zálohovací script https://fedorahosted.org/spacewalk/wiki/SpacewalkBackup neodmazává logy, takže zaplňuje souborový systém až do vyčerpání alokace místa  v Oracle

 

Závěr

V článku jste se seznámili jak na Spacewalk – jak spravovat operační systém Linux a to konkrétně distribuce RedHat a CentOS. Instalaci a konfiguraci nabízíme i jako placenou službu. Pokud máte zájem o komerční konfiguraci nebo se potřebujete jen zeptat, napište mi mail na jan.vydrar@bcvsolutions.eu a domluvíme se.