Advertisements

Verwalten Sie Inhalte mit Pulp Debian

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-Edelsteinen) 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. https://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:

  • Gewinnen Sie die Kontrolle darüber, welche Inhalte für Verbraucher verfügbar sind
  • 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 und 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. Beispielsweise 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 Synchronisierungsprozess verwendet eine Remote-Definition, die eine URL, Verteilung, Komponenten und Architekturen enthält:

  • Der URL ist der Pfad zum entfernten APT-Repository.
  • Der Verteilung ist der Weg zwischen dists/ Verzeichnis des APT-Repositorys und der relevanten Release Datei. Dies ist normalerweise (aber nicht immer) der Codename oder die Suite der Debian-basierten Linux-Distribution (buster für Debian 10, stretch für Debian 9, focal für Ubuntu 20.04 usw.). Betrieb lsb_release -cs auf jedem Debian- oder Ubuntu-Host zeigt den Codenamen der Distribution.
  • Komponenten beliebige Teilmengen von Repositories beschreiben (main, contrib, oder non-free für Debian, bzw main, restricted, universe, und multiverse für Ubuntu). Sie können dies verwenden, um Pakete innerhalb eines APT-Repositorys zu filtern und zu kategorisieren.
  • Der die Architektur bezieht sich auf die Prozessorarchitektur, auf der ein Softwarepaket am häufigsten ausgeführt werden kann i386, amd64, oder arm64. Wenn ein Softwarepaket nicht von einer bestimmten Prozessorarchitektur abhängt, kann die Architektur auf eingestellt werden all.

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 durch Ihre ersten Schritte bei der Verwendung von Pulp und dem Pulp Debian-Plugin.

pulp-debian-workflow.jpg

Bild von Maximilian Kolb

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 eine beliebige 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="https://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 angezeigt werden pulp_href 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-Inhalt 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. Du kannst den … benutzen APT Publisher in jedem Repository des APT-Typs, 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 hinzugefügt werden kann /etc/apt/sources.list und als Möglichkeit zur Installation von Software verwendet.

Der folgende API-Aufruf benötigt die UUID der im ersten Schritt erstellten Veröffentlichung:

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 nun ergänzt werden /etc/apt/sources.list als gültiges Repositorium.

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

Mehr großartige Inhalte

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. Damit konnten wir unser Rechenzentrum mit automatisierter Systembereitstellung, Konfigurationsverwaltung und Patch-Verwaltung verwalten.

Mit anderen Worten, ATIX entwickelt das Pulp-Debian-Plug-in hauptsächlich mit Blick auf 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.

Verwalten Sie Inhalte mit Pulp Debian

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top