GitLab Community Edition mit Spacewalk verteilen

GitLab-Pakete in Spacewalk

Für interessierte Hobbyisten und kleinere Firmen steht die beliebte GitHub-Alternative GitLab als kostenlose Community Edition bereit. Zur Installation wird ein Skript bereitgestellt, welches die einzelnen Software-Pakete bezieht und installiert. Wer einen Blick in den Quellcode dieses Skripts wirft, erkennt, dass sich dieses hierbei konventioneller YUM-Repositories bedient. Prinzipiell lässt sich GitLab also auch komfortabel über ein bestehendes Spacewalk-, Red Hat Satellite- oder SUSE Manager-System verteilen.

GitLab bietet für verschiedene RPM-basierende Linux-Distributionen entsprechende YUM-Repositories (Binär- und Quellcode-Pakete) an. Die folgende Tabelle listet URLs für einige gängige Linux-Distributionen zur Verteilung mit Spacewalk auf:

Fedora 21, i386https://packages.gitlab.com/gitlab/gitlab-ce/fedora/21/i386
Fedora 21, x86_64https://packages.gitlab.com/gitlab/gitlab-ce/fedora/21/x86_64
Fedora 22, i386https://packages.gitlab.com/gitlab/gitlab-ce/fedora/22/i386
Fedora 22, x86_64https://packages.gitlab.com/gitlab/gitlab-ce/fedora/22/x86_64
RHEL/CentOS 6, i386https://packages.gitlab.com/gitlab/gitlab-ce/el/6/i386
RHEL/CentOS 6, x86_64https://packages.gitlab.com/gitlab/gitlab-ce/el/6/x86_64
RHEL/CentOS 7, x86_64https://packages.gitlab.com/gitlab/gitlab-ce/el/7/x86_64
Scientific Linux 6, i386https://packages.gitlab.com/gitlab/gitlab-ce/el/6/i386
Scientific Linux 6, x86_64https://packages.gitlab.com/gitlab/gitlab-ce/el/6/x86_64
Scientific Linux 7, x86_64https://packages.gitlab.com/gitlab/gitlab-ce/el/7/x86_64
Oracle Linux 6, i386https://packages.gitlab.com/gitlab/gitlab-ce/ol/6/i386
Oracle Linux 6, x86_64https://packages.gitlab.com/gitlab/gitlab-ce/ol/6/x86_64
Oracle Linux 7, x86_64https://packages.gitlab.com/gitlab/gitlab-ce/ol/7/x86_64
DistributionURL

Zuerst muss der GPG-Key des YUM-Repositories auf dem Spacewalk-System unter /var/www/html/pub abgelegt werden, damit bereits registrierte Systeme ohne Internet-Zugang den Schlüssel importieren können. Wird dies nicht erledigt, weigern sich registrierte Systeme feige, die Pakete zu installieren, da der entsprechende Schlüssel nicht importiert wurde:

1spacewalk# curl https://packages.gitlab.com/gpg.key -o /var/www/html/pub/RPM-GPG-KEY-gitlab
2client# rpm --import http://spacewalk/pub/RPM-GPG-KEY-gitlab

Kommen Kickstart oder Aktivierungsschlüssel zum Einsatz, ist es ratsam, diesen Schlüssel auch im Spacewalk-Backend (unterhalb Systeme, Kickstart, GPG- und SSL-Schlüssel) zu hinterlegen. Auf dem Spacewalk-System müssen ein neues Repository und ein Software-Kanal erstellt werden. Hierzu wird innerhalb der Spacewalk-Oberfläche auf die Menü-Elemente Channels, Software-Channels verwalten, Repositories verwalten und Repository anlegen geklickt. Im folgenden Dialog werden die folgenden Angaben gemacht:

Repository-Labelz. B. gitlab-ce-centos7-x86_64
Repository-URLPassende URL aus oberer Tabelle, z. B. https://packages.gitlab.com/gitlab/gitlab-ce/el/7/x86_64
Filter(kein)

Anschließend kann der dazugehörige Software-Channel erstellt werden. Hierzu werden innerhalb der Spacewalk-Oberfläche die Menü-Elemente Software-Channels verwalten und Channel erstellen angewählt. Der folgende Dialog wird folgendermaßen ausgefüllt:

Channel-NameLesbarer Name, z. B. GitLab CE EL7 x86_64
Channel-LabelInterner Bezeichner, z. B. gitlab-ce-centos7-x86_64
Parent-ChannelÜbergeordneter Software-Kanal, z. B. CentOS 7
Channel-ZusammenfassungGitLab Community Edition for Enterprise Linux 7 x86_64
GPG-Schlüssel-URLhttps://packages.gitlab.com/gpg.key
GPG-Schlüssel-ID
E15E78F4
GPG-Schlüssel-Fingerprint
1A4C 919D B987 D435 9396  38B9 1421 9A96 E15E 78F4

Im Reiter Repositories muss das zuvor angelegte Repository ausgewählt werden. Es empfiehlt sich, die GPG-Schlüssel-ID und den -Fingerprint nochmals zu überprüfen, da sich der Schlüssel seit der Erstellung dieses Artikel geändert haben kann:

1$ gpg --with-fingerprint /var/www/html/pub/RPM-GPG-KEY-gitlab
2pub 4096R/E15E78F4 2015-04-17 GitLab B.V. (package repository signing key) <packages@gitlab.com>
3 Key fingerprint = 1A4C 919D B987 D435 9396 38B9 1421 9A96 E15E 78F4

Die erste fett markierte Angabe entspricht der GPG-Schlüssel-ID, die zweite Markierung zeigt den zugehörigen Fingerprint.

Anschließend erfolgt die initiale Synchronisation des Netzwerkspiegels, beispielsweise mit spacewalk-repo-sync:

 1# spacewalk-repo-sync --channel gitlab-ce-centos7-x86_64
 2======================================
 3| Channel: gitlab-ce-centos7-x86_64
 4======================================
 5
 6Repo URL: https://packages.gitlab.com/gitlab/gitlab-ce/el/7/x86_64
 7Packages in repo: 18
 8Packages already synced: 0
 9Packages to sync: 18
10...

Alternativ kann die Synchronisation auch über die Web-Oberfläche erfolgen. Hierzu wird unterhalb der Reiter Repositories und Sync die Schaltfläche Jetzt synchronisieren ausgewählt. In diesem Zuge kann auch gleich die automatische Synchronisation konfiguriert werden. Sofern die YUM-Repositories über einen Cronjob synchronisiert werden, muss dieser angepasst werden. Beispielsweise:

1# vi /etc/cron.daily/spacewalk_sync.cron
2...
3/usr/bin/spacewalk-repo-sync --channel gitlab-ce-centos7-x86_64 >/dev/null
4
5ESC ZZ

Auf den registrierten Client-Systemen kann GitLab nun wie folgt installiert werden:

1# yum install -y postfix openssh-server yum-utils pygpgme curl
2# yum -q makecache -y --disablerepo='*' --enablerepo='gitlab-ce-centos7-x86_64'
3# yum install gitlab-ce
4# gitlab-ctl reconfigure

Sofern die Firewall korrekt konfiguriert wurde, kann GitLab anschließend über den Web-Browser erreicht werden. 🙂

Übersetzungen: