Repository-Management mit Pulp

Manager

Wer freie Software einsetzt, hat oft mit mehreren Software-Repositories zu tun, die die gewünschte Software führen. Bei größeren Rechnerlandschaften gilt es dann, die Repository-Informationen auf allen Systemen zu hinterlegen und aktuell zu halten. Pulp hilft alternativ dazu beim zentralen Repository-Management.
Beinahe enzyklopädisch behandelt unser Schwerpunkt-Artikel über IPSEC verschlüsselte Verbindungen zwischen Linux, Windows, BSD, Solaris, Cisco- sowie ... (mehr)

Pulp versetzt den Admin in die Lage, viele verschiedene Software-Repositories an einer zentralen Stelle zu konsolidieren. Pulp kann dabei auf unterschiedlichste Quellen zurückgreifen, beispielsweise funktioniert die Abfrage eines regulären Yum-Servers genauso problemfrei wie der Zugriff auf das Red Hat Network oder auf Software-Pakete, die über einen Webserver zur Verfügung stehen. Pulp agiert hierbei nicht als Proxy zwischen den Clients und den verschiedenen Repositories, sondern spiegelt die Pakete lokal und akualisiert sie auch nach einem festgelegten Intervall. Für ausreichend Plattenplatz ist also im Vorfeld zu sorgen.

Pulp kann jedoch auch einzelne Repositories auf externe Server auslagern. Das Ganze nennt sich in der Pulp-Terminologie dann Content-Delivery-Server. Hierbei routet der zentrale Server bestimmte Client-Anfragen einfach an externe Server, die dann die Anfrage beantworten. Somit ist der Aufbau von geografisch verteilten Systemen sehr leicht möglich. Mithilfe von fein granulierten Zugriffsregeln stellt Pulp sicher, dass Clients nur bestimmte Repositories abfragen dürfen. Die Authentifizierung von Benutzern kann dabei sogar für einen LDAP-Server passieren, was also auch den Einsatz in sehr großen Umgebungen sicherstellt.

Im Bereich Reporting kann die Software ebenfalls punkten. So gibt es nicht nur eine Historie, die anzeigt, welches Client-System wann auf welches Repository zugegriffen hat, auch der aktuelle Paketstand der Clients lässt sich darstellen. Somit ist sehr leicht herauszubekommen, wenn ein wichtiges Update auf einem System noch nicht installiert ist. Für experimentierfreudige Admins ist es sicher auch interessant zu erwähnen, dass Pulp eine Rest-API mitbringt, mit der sich viele der anfallenden Aufgaben sehr bequem für Skripte automatisieren lassen. Die komplette Architektur einer Pulp-Umgebung zeigt Abbildung 1 .

Abbildung 1: Bei Pulp arbeiten viele verschiedene Komponenten zusammen.

Installation

Für den Einsatz von Pulp stehen derzeit fertige RPM-Pakete für Fedora, Red Hat Enterprise Linux sowie für Cent OS zur Verfügung [2] . Der Zugriff auf den Source-Code ist über ein entsprechendes Git-Repository [3] möglich. Nach dem Download der passenden Yum-Repository Konfigurationsdatei gelingt die Installation des Servers wie gewohnt mittels Yum ( Listing 1 ).

Listing 1

Installation mit Yum

 

Nach der Initialisierung der MongoDB-Datenbank ist der Server dann einsatzbereit. Es ist darauf zu achten, dass in der Konfigurationsdatei »/etc/pulp/pulp.conf« der passende Servername aufgeführt ist und dass Client-Systeme Zugang zu den Ports 5672, 5674 und 443 haben.

Die Client-Systeme benötigen ebenfalls Zugang zum bereits erwähnten Pulp-Repository. Am einfachsten ist es, dieses direkt bei der Installation der Systeme mit anzugeben. Findet eine automatisierte Installation der Systeme mittels Kickstart statt, so lässt sich die entsprechende Client-Software gleich mit installieren und konfigurieren. Die Systeme sind dann nach der Installation direkt einsatzbereit und eine manuelle Konfiguration entfällt.

Das Client Paket heißt »pulp-client« und ist im Idealfall auch auf dem Server zu installieren. Dies ist für Admin-Arbeiten notwendig. Wichtig ist, dass die Konfigurationsdatei der Clientsoftware, »/etc/pulp/client.conf« entsprechend angepasst wird, sodass sämliche Referenzen auf den Server über den FQDN (Fully qualified domainame) stattfinden ( Listing 2 ). Dies ist wichtig, da ansonsten die Zertifikatsverifizierung des Servers fehlschlägt. Im Zertifikat steht der FQDN des Servers. Versucht der Client nun über einen anderen Namen auf diesen zuzugreifen, so beschwert sich die Software über einen falschen Namen. Anschließend ist der Agent des Clients entsprechend zu starten ( »service pulp-agent start« ).

Listing 2

Servername in der Konfiguration

 

Soll neben dem eigentlichen Server auch ein Content-Delivery-Server zum Einsatz kommen, ist dafür die Installation des Pakets »pulp-cds« notwendig. Der Dienst ist dann über die Konfigurationsdatei »/etc/pulp/cds.conf« zu konfigurieren und mittels »service pulp-cds start« zu starten.

Pulp bringt von Haus aus einen Admin-Account mit. Diesen gilt es als Erstes zu ändern:

# pulp-admin -u admin -p admin user ↩
update --username admin --password
Enter new password for user admin:
Re-enter new password for user admin:
Successfully updated [ admin ]

Jede administrative Aktion auf dem Server erfordert eine vorherige Authentifizierung. Damit nun nicht bei jedem Befehl der Benutzername und das Passwort abgefragt werden, bietet es sich an, sich einmal auf dem Server anzumelden und die Benutzer-Credentials (in Form eines Benutzer-Zertifikates) unterhalb von »~/.pulp« zu speichern. Über das Kommando »auth logout« lassen sich diese wieder ins Nirvana befördern, beispielsweise wenn die Anmeldung mit anderen Credentials notwendig ist:

# pulp-admin auth login -u admin -p ↩
password
User credentials successfully stored at ↩
[/home/pulp-user/.pulp]

Neue Benutzer lassen sich über das Kommando »user« hinzufügen und auch wieder löschen oder modifizieren. Um dem Benutzer nun bestimmte Rechte zuzuweisen, muss man das Konto über das Kommando »permisson grant« entsprechend modifizieren und mit den notwendigen Rechten versehen. Anstatt einzelnen Benutzern Rechte zuzuweisen, besteht auch die Möglichkeit, diesen bestimmte Rollen zuzuweisen und dann den Rollen die gewünschten Rechte zu geben. So ist das Gruppieren von einzelnen Benutzern mit ähnlichen Rechten einfacher zu handhaben. Bestehende Rollen zeigt Pulp über das Kommando »role show« an, welche Rechte eine Rolle besitzt, erfahren Sie über das Kommando »role info« ( Listing 3 ).

Listing 3

Rechte per Rollen zuweisen

 

Repositories und Distributionen

Um nun den Server mit Daten zu versorgen, muss der Administrator die gewünschten Respositories synchronisieren. Pulp versteht unter einem Repository die Ansammlung von Software-RPMs, Update-RPMs sowie Installationsdateien (Distributionen) wie beispielsweise Kernel und Initrd. Das Anlegen und anschließende Synchronisieren eines Repositories erfolgt durch den folgenden Kommandozeilenaufruf:

# pulp-admin repo create --id Fedora14↩
-x86_64 --feed yum:http://download.fedora↩
project.org/pub/fedora/linux/releases/14/↩
Everything/x86_64/os/
Successfully created repository [ example ]
# pulp-admin repo sync --id Fedora14-x86_64

Den Status der Synchronisation zeigt Pulp mit dem Kommando »repo status --id Fedora14-x86_64« an. Daneben existieren weitere recht nützliche Kommandos, mit denen der Admin das Respository anpassen kann. So besteht beispielsweise die Möglichkeit, Filter zu erzeugen, sodass bestimmte Pakete nicht synchronisiert werden. Auch das automatische Aktualisieren eines Respositories ist über die Option »--schedule« möglich. Diese ist entweder direkt beim Anlegen des Respositories mit anzugeben, oder aber nachträglich. Das Kommando »repo update« gestattet es, einzelne Konfigurationseinstellungen nachträglich zu verändern.

Eine Übersicht sämlicher Distributionen zeigt Pulp mittels »distribution list« an ( Listing 4 ). Bei der Installation eines neuen Systems lässt sich die URL zu der gewünschten Distribution dann gleich mit angeben, sodass das Installationsprogramm die notwendigen Kernel-, Initrd- und Installer-Dateien direkt von hier downloaden kann.

Listing 4

Distributionen

 

Ist auf einem Client bereits das Paket »pulp-client« installiert und entsprechend konfiguriert, muss man ihn im nächsten Schritt beim Pulp-Server registrieren. Das übernimmt der Aufruf von »pulp-client consumer create --id client1« . Dieser Schritt lässt sich natürlich genauso wie die Installation des Pakets automatisieren, beispielsweise als Teil eines Kickstart-Profils. Mittels »pulp-client repo list« erhält der Client dann im Anschluss eine Liste aller zur Verfügung stehenden Repositories des Servers ( Listing 5 ). Die Zeile »Sync Schedule« zeigt hier im Cron-Format an, zu welchem Zeitpunkt das Repository zu aktualisieren ist. Im Beispiel also täglich um 0:10.

Listing 5

Übersicht der Repositories

 

Artikel als PDF herunterladen

Repositories managen mit Pulp 3,14 MB

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023