úterý 6. listopadu 2012

RedHat Local Repo - reposync createrepo

Rešil jsem takový malý problém. Mám 10 RHEL 6.3 serverů a při jejich aktualizaci nechci balíky stahovat pokaždé z RedHat RHN. S tím že Squid HTTP proxy je jen průtokáčem a nic se nekešuje :-( Komunikace s RHN se provádí skrze xmlrpc bránu.

1352209629.189   1482 192.192.42.13 TCP_MISS/000 2206 CONNECT xmlrpc.rhn.redhat.com:443 - FIRST_UP_PARENT/192.192.42.42 -

První plánované řešení bylo použít RHN Proxy Server. Tento server je součástí komerčního RedHat Network Satellite. Jistou variantou bylo použít komunitní verzi SpaceWalk, ale pro 10 serverů je to moc velký moloch, který se vyplatí používat jen u velkých firem o desítkách serverů.

Pan Google mě přivedl na tento návod. Kde se použije poněkud jednodužší řesení s reposync. Jeden s 10ti serverů vybereme jako ten pro stahovaní repo. Všechny servery jsou registrovány v RHN. 11cty server je CentOS, kde je zprovozněn NFS server, kde je repo fyzicky umístěný.

Vypíši si použité repositáře na RHEL serveru:

yum repolist 
repo id
rhel-x86_64-server-6
rhel-x86_64-server-ha-6
rhel-x86_64-server-supplementary-6


Příkazy pro synchronizaci repository. Je zapotřebí balík yum-utils

reposync -p /data/nfs/repo/ --repoid=rhel-x86_64-server-ha-6 -l
reposync -p /data/nfs/repo/ --repoid=rhel-x86_64-server-supplementary-6 -l
reposync -p /data/nfs/repo/ --repoid=rhel-x86_64-server-6 -l


Pro funkční repo musíme nainstalovat balíček createrepo

yum install createrepo

createrepo /data/nfs/repo/
...
Saving Primary metadata
Saving file lists metadata
Saving other metadata


V adresáři kam se syncují repositáře se vytvoří adresář repodata s metadaty o aktualizacích. Vzhledem k tomu, že tři uvedené repo obsahuji 16GB dat je vytvoření metadat o 9tisících souborech poněkud zdlouhavé.

ls -1 repodata/

filelists.xml.gz
other.xml.gz
primary.xml.gz
repomd.xml


Nastavení yum na jednotlivých RHEL serverech.

vi /etc/yum.repos.d/local.repo

[rhel-localrepo]
name=Local Red Hat Enterprise Linux $releasever - $basearch
baseurl=file:///data/nfs/repo
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


Vypneme RHN krom aktualizačního serveru.

vi /etc/yum/pluginconf.d/rhnplugin.conf
[main]
enabled = 0


Provedeme aktualizace, za předpokladu, že všechny RHEL servery maji namontován NFS svazek do /data/nfs/repo.

yum clean all
yum list updates
yum update


A na závěr taková rejpavá poznámka. Proč ty komerční krámy musí být tak komplikované? CentOS má veřejné repo a např. Debianí svět má svou APT-Cacher NG.

Žádné komentáře: