Pulp ist ein Open-Source-Repository-Verwaltungstool, mit dem Sie Inhalte in Ihrer Organisation abrufen, spiegeln, hochladen und veröffentlichen können. Es kann verwendet werden, um verschiedene Arten von Inhalten wie Softwarepakete (von RPM-Paketen bis hin zu Ruby-Gems) sowie Ansible-Sammlungen, Container-Images und sogar beliebige Dateien zu verwalten.
Ein typischer Arbeitsablauf beginnt mit dem Abrufen von Softwarepaketen aus einem vorhandenen Repository (z. B. http://mirror.centos.org/centos/7/os/x86_64/) oder dem manuellen Hinzufügen von Paketen (für private Pakete, die in Ihrer Organisation erstellt wurden). Dann hilft Ihnen Pulp dabei, beliebige Sammlungen von Softwarepaketen zu erstellen, die von Clients genutzt werden können. Damit:
- Übernehmen Sie die Kontrolle darüber, welche Inhalte Verbrauchern zur Verfügung stehen
- Kann die Versionskontrolle verwenden
- Reduzieren Sie den Bandbreiten- und Speicherbedarf, indem Sie eine lokale, deduplizierte Quelle bereitstellen
Wenn Sie neu bei Pulp sind, lesen Sie den Einführungsartikel von Melanie Corr zur Verwaltung Ihrer Software-Repositories mit Pulp.
Verwalten Sie Debian-Pakete mit Pulp
Pulp ist auf Plugins angewiesen, um verschiedene Arten von Inhalten angemessen zu handhaben. Mit dem Pulp-RPM-Plug-in können Sie beispielsweise .rpm-Pakete verwalten. Mit dem Pulp Debian-Plugin können Sie .deb-Pakete innerhalb von APT-Repositories spiegeln, synchronisieren, hochladen und veröffentlichen. Das pulp_deb-Plugin ist unerlässlich, wenn Sie verbrauchbare Softwarepakete für Linux-Distributionen wie Debian und Ubuntu verwalten und bereitstellen möchten, und es handelt sich um kostenlose Open-Source-Software, die von der Pulp-Community bereitgestellt und gepflegt wird.
Mit dem Pulp Debian-Plugin können Sie Debian-Inhalte verwalten, indem Sie entfernte Repositories synchronisieren, eine Schnittstelle zum Hochladen Ihrer eigenen Inhalte bereitstellen und Inhalte in Repositories veröffentlichen.
Pulp unterstützt mehrere verschiedene Debian-Inhaltstypen, darunter Pakete, Paketindizes, Release-Dateien und mehr. "Inhaltstyp" bezieht sich entweder auf ein bestimmtes Artefakt oder auf Metadaten. Zum Beispiel eine Inhaltseinheit vom Typ package
bezieht sich auf ein .deb-Paket.
Das Synchronisieren eines entfernten Repositorys ist eine der Hauptfunktionen des Pulp Debian-Plugins und eine der Möglichkeiten, Inhalte zu erhalten. Der Synchronisationsprozess verwendet eine Remote-Definition, die eine URL, Distribution, Komponenten und Architekturen enthält:
- Die URL ist der Pfad zum entfernten APT-Repository.
- Die Verteilung ist der Pfad zwischen den
dists/
Verzeichnis des APT-Repositorys und das entsprechendeRelease
Datei. Dies ist normalerweise (aber nicht immer) der Codename oder die Suite der Debian-basierten Linux-Distribution (buster
). für Debian 10stretch
für Debian 9,focal
für Ubuntu 20.04 usw.). Ausführen vonlsb_release -cs
auf jedem Debian- oder Ubuntu-Host zeigt den Codenamen der Distribution. - Komponenten Beschreiben beliebiger Teilmengen von Repositories (
main
,contrib
, odernon-free
für Debian odermain
,restricted
,universe
, undmultiverse
für Ubuntu). Sie können dies verwenden, um Pakete innerhalb eines APT-Repositorys zu filtern und zu kategorisieren. - Die Architektur bezieht sich auf die Prozessorarchitektur, auf der ein Softwarepaket ausgeführt werden kann, am häufigsten
i386
,amd64
, oderarm64
. Wenn ein Softwarepaket nicht von einer bestimmten Prozessorarchitektur abhängt, kann die Architektur aufall
gesetzt werden .
Die Angabe einer Distribution ist obligatorisch, während die Definition von Komponenten und Architekturen optional ist. Wenn nicht definiert, synchronisiert Pulp automatisch alle Pakete, ohne nach Komponenten oder Architekturen zu filtern. Pulp verifiziert automatisch die GNU Privacy Guard-Signatur der Release
Datei, falls der Fernbedienung der entsprechende öffentliche GPG-Schlüssel zugewiesen wurde.
Ein Beispiel-Workflow
Mit der REST-API von Pulp ist es einfach, von einem Remote-Repository zu einer wörtlichen Veröffentlichung zu wechseln. Die folgenden API-Aufrufe gehen davon aus, dass Sie HTTPie verwenden.
Stellen Sie sich vor, Sie möchten Hosts innerhalb Ihrer Organisation .deb-Pakete bereitstellen. Der folgende grundlegende Arbeitsablauf führt Sie zu den ersten Schritten bei der Verwendung von Pulp und dem Pulp-Debian-Plugin.
1. Erstellen Sie ein lokales Repository
Erstellen Sie zunächst mit einem einzigen API-Aufruf ein lokales Repository in Pulp. Sie können dies mit HTTPie oder dem Curl-Befehl tun:
http post http://<hostname>:24817/pulp/api/v3/repositories/deb/apt/ name=<name_of_your_repository>
2. Erstellen Sie eine Fernbedienung
Erstellen Sie als Nächstes eine Fernbedienung. Dieser API-Aufruf erfordert eine URL und einen beliebigen name
Wert. Die Definition einer Distribution und Architektur ist optional:
http post http://<hostname>:24817/pulp/api/v3/remotes/deb/apt/ name="nginx.org" url="http://nginx.org/packages/debian" distributions="buster"
Unabhängig davon, ob Sie nur eine oder mehrere Distributionen definieren, synchronisiert Pulp später Pakete für alle Architekturen, da sie für diese Remote nicht definiert sind.
3. Synchronisieren
Der dritte und letzte Schritt zum Abrufen von Remote-Inhalten in Pulp besteht darin, die Remote mit Ihrem lokalen Repository zu synchronisieren. Sie tun dies, indem Sie den Sync-API-Endpunkt Ihres Repositorys aufrufen:
http post http://<hostname>:24817/pulp/api/v3/repositories/deb/apt/<uuid_repository>/sync/ remote=http://<hostname>:24817/pulp/api/v3/remotes/deb/apt/<uuid_remote>/
In diesem Beispielbefehl bezieht sich jede der UUIDs auf die internen Referenzen von Pulp, die als pulp_href
angezeigt werden durch die API. Dieser Schritt kann abhängig von Ihrer Umgebung, der Größe des Repositorys und der verfügbaren Bandbreite einige Zeit in Anspruch nehmen.
Machen Sie Ihren Pulp-Content konsumierbar
Nachdem Inhalte für Pulp durch Synchronisierung erworben wurden, werden sie für Clients konsumierbar.
1. Erstellen Sie eine Veröffentlichung
Veröffentlichungen basieren immer auf einem Pulp-Repository. Sie enthalten zusätzliche Einstellungen zum Veröffentlichen von Inhalten. Sie können den APT
verwenden Publisher auf jedem Repository des Typs APT, das .deb-Pakete enthält.
Der folgende API-Aufruf erstellt eine Veröffentlichung im wörtlichen Modus. Das heißt, es bietet genau die gleiche Struktur und den gleichen Inhalt wie das Remote-Repository:
http post http://<hostname>:24817/pulp/api/v3/publications/deb/verbatim/ repository=/pulp/api/v3/repositories/deb/apt/<uuid_repository>/
Ersetzen Sie die UUID durch das Repository, das Sie veröffentlichen möchten. Dieser Schritt kann je nach Größe des Repositorys einige Zeit in Anspruch nehmen.
2. Erstellen Sie eine Verteilung
Eine Distribution übernimmt die fertige Publikation und stellt sie über die Pulp-Content-App bereit, die sie für Ihre Benutzer verfügbar (oder „konsumierbar“) macht. Im Kontext eines Debian-Systems bedeutet dies, dass das Repository zu /etc/apt/sources.list
hinzugefügt werden kann und zur Installation von Software verwendet.
Der folgende API-Aufruf benötigt die UUID der im ersten Schritt erstellten Publikation:
http post http://<hostname>:24817/pulp/api/v3/distributions/deb/apt/ name="name_of_the_distribution" base_path="base_path_of_the_distribution" publication=http://<hostname>:24817/pulp/api/v3/publications/deb/verbatim/<uuid_publication>/
Der base_path
value ist Teil der URL, die von Clients verwendet wird, wenn sie auf das APT-Repository verweisen, und der Name kann beliebig sein. Das Aufrufen des API-Endpunkts der Distribution auf einer bestimmten veröffentlichten Distribution gibt die URL des Pulp-Repositorys zurück:
http get http://<hostname>:24817/pulp/api/v3/distributions/deb/apt/<uuid_distribution>/
Diese URL kann direkt von APT-Clients genutzt werden. Es kann jetzt zu /etc/apt/sources.list
hinzugefügt werden als gültiges Repository.
Pulp-API
Mit diesen API-Aufrufen können Sie ein APT-Repository mit Ihrer eigenen Pulp-Instanz synchronisieren und es wörtlich neu veröffentlichen, ohne die Pakete, Metadaten oder Signaturen zu berühren. Weitere Informationen und andere Veröffentlichungsmodi finden Sie in der API-Dokumentation und Funktionsübersicht.
Open-Source-Flexibilität
Weitere tolle Inhalte
- Kostenloser Online-Kurs:Technischer RHEL-Überblick
- Erfahren Sie fortgeschrittene Linux-Befehle
- Spickzettel herunterladen
- Finden Sie eine Open-Source-Alternative
- Lesen Sie Top-Linux-Inhalte
- Schauen Sie sich Open-Source-Ressourcen an
Ein wichtiger Aspekt von Pulp und seiner Plugin-Struktur ist, dass es nicht zuletzt aufgrund seiner Open-Source-Natur äußerst flexibel ist. Sie können Pulp als eigenständigen Dienst ausführen, müssen dies aber nicht. Es kann in etwas Größeres integriert werden.
Ich arbeite bei ATIX, wo wir begonnen haben, Pulp und das Pulp-Debian-Plugin in einem Projekt namens orcharhino zu verwenden. Es basiert auf Foreman und enthält das leistungsstarke Katello-Plug-in für zusätzliche Content-Management-Funktionen, das selbst für die Repository-Verwaltung auf Pulp angewiesen ist. Dadurch konnten wir unser Rechenzentrum mit automatisierter Systembereitstellung, Konfigurationsverwaltung und Patchverwaltung verwalten.
Mit anderen Worten, ATIX entwickelt das Pulp-Debian-Plug-In hauptsächlich für einen Katello-Anwendungsfall. Egal, ob Sie Katello oder Pulp oder nur ein bestimmtes Pulp-Plug-in benötigen, Sie können sicher sein, dass diese Modularität beabsichtigt ist.
Mit Pulp können Sie Remote-Software-Repositories spiegeln, private Softwarepakete hosten und verschiedene Arten von Inhalten auf einer Plattform verwalten.
Probieren Sie Pulp und das Pulp-Debian-Plug-In noch heute aus und scheuen Sie sich nicht, der Community beizutreten und sie um Hilfe zu bitten. Wir freuen uns über jedes Feedback.