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.
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
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