pulp_deb 3.0 ATIX blog

pulp_deb 3.0 – die Zukunft ist strukturiert!

Heute möchten wir die pulp_deb 3.0-Version vorstellen! In diesem Blogartikel erklären wir, warum wir das tun, wie wir dazu kommen, es zu tun, und wie wir das ein oder andere bestehende Problem gelöst haben. Viel Spaß bei der Lektüre!

Warum bringt ATIX pulp_deb 3.0 heraus?

Unsere Kund:innen kennen das ATIX Engineering Team als Autor:innen der regelmäßigen orcharhino Releases. orcharhino ist ein Unternehmensprodukt, das auf dem Open-Source-Projekt Foreman/Katello basiert. Katello wiederum nutzt das Pulp-Projekt als Teil seines Backends. Pulp ist eine Plattform für die Verwaltung und Bereitstellung von Repositories. pulp_deb ist ein Pulp-Plug-in, mit dem die Unterstützung für APT-Repositories (Debian und Ubuntu) zu Pulp hinzugefügt wird. Seit ATIX die APT-Unterstützung für Katello eingeführt hat, sind wir stark an der Entwicklung von pulp_deb beteiligt. Seit der Neufassung für Pulp 3 haben wir die Hauptverantwortlichkeit für die Betreuung des Plug-ins übernommen. Nach jahrelangen inkrementellen Änderungen sind wir nun bereit für einen größeren Versionssprung!

Wie wir hierhergekommen sind

Um zu verstehen, was diese neue Version ausmacht, müssen wir erklären, was uns zu diesem Punkt geführt hat.

Wie Sie vielleicht wissen, ist Pulp 3 eine komplette Neufassung von Pulp 2. Soweit ich weiß, haben sie nicht eine einzige Zeile Code gemeinsam. pulp_deb für Pulp 3 war wie ein unbeschriebenes Blatt, so dass wir von Anfang an viele hart erarbeitete Lektionen aus den Tagen von Pulp 2 einfließen lassen konnten.

Da wir innerhalb eines sinnvollen Zeitrahmens Funktionsparität für die Funktionen erreichen mussten, auf die sich die APT-Unterstützung von Katello stützt, mussten wir auch einige unserer Designentscheidungen aus Pulp 2 wieder importieren, die die wir sonst vielleicht weggelassen hätten. Und wie das Leben so spielt, sind wir auch auf ganz neue Herausforderungen gestoßen, die speziell für Pulp 3 gelten.

Die größte Herausforderung bei pulp_deb im Vergleich zu anderen Pulp-Plug-ins wie pulp_rpm war schon immer, dass das APT-Repository-Format die Metadaten in jedem APT-Repository in eine oder mehrere Distributionen (auch als Releases bekannt) unterteilt, die wiederum in eine oder mehrere Komponenten unterteilt sind, die Paketindizes für eine oder mehrere Architekturen enthalten können. Das bedeutet, dass das pulp_deb-Plug-in nicht nur wissen muss, in welchem Repository sich ein .deb-Paket befindet (dies ist eine pulpcore-Funktionalität, die von Pulp-Plug-ins nicht neu erfunden werden muss), sondern auch aufzeichnen muss, zu welchen Kombinationen aus Distributionen und Komponenten jedes Paket gehört. Für Pulp 3 wird dies durch die Bereithaltung dieser Informationen in sogenannten „Strukturinhalten“ gelöst, die neben den Paketen selbst in den APT-Repositories von pulp_deb gespeichert werden.

Strukturierte Upload-API

Viele der Änderungen in pulp_deb 3.0 sind Verbesserungen im Umgang mit der APT-Repo-Struktur. Zum Beispiel erlaubt es der API-Endpunkt für das Hochladen/Erstellen von Paketen den Nutzer:innen nun, anzugeben, zu welcher Distribution und Komponente das hochgeladene Paket hinzugefügt werden soll. Auf diese Weise werden alle relevanten Strukturinhalte automatisch erstellt, ohne dass die User:innen ein umfassendes Verständnis von der Funktionsweise von pulp_deb haben muss.

Das Problem der kollidierenden Strukturdaten ist endlich behoben

Am wichtigsten ist jedoch, dass wir einen grundlegenden Designfehler mit den Strukturdaten behoben haben, der seit den Anfängen von pulp_deb für Pulp 3 bestand. Dieser Fehler machte es möglich, dass verschiedene Instanzen der Struktur-Daten genau dieselbe APT-Repository-Struktur repräsentieren konnten. Unter bestimmten Bedingungen, z.B. wenn Inhalte zwischen Repositories verschoben wurden, konnten kollidierenden Strukturdaten in einer einzigen Repository-Version landen. Das Veröffentlichen solcher Repository-Versionen scheiterte.

Obwohl diese Fälle so selten sind, dass die meisten Benutzer:innen wahrscheinlich noch nie davon gehört haben, können sie sehr problematisch sein, wenn sie auftreten. Darüber hinaus hat sich das von uns so bezeichnete Problem der „kollidierenden Strukturdaten“ zunehmend zu einem Hindernis für neue Funktionen entwickelt, die wir hinzufügen möchten, einschließlich aller Verbesserungen der Lebensqualität bei der Verwendung strukturierter Inhalte.

Mit pulp_deb 3.0 ist das Problem behoben, und alle bestehenden doppelten Strukturdaten-Einträge werden während des Upgrades durch eine Datenbankmigration zusammengeführt. Da es sich um eine Datenbankmigration handelt, die Daten verändert, empfehlen wir dringend, vor dem Upgrade ein Backup zu erstellen. Im Durchschnitt sollten Nutzer:innen während des Upgrades mit einer zusätzlichen Zeit von 30 Minuten für die Durchführung der Migration rechnen. Die tatsächliche Zeit kann erheblich variieren, da sie davon abhängt, wie viele kollidierende Strukturdaten-Einträge vorhanden sind und welche Systemressourcen verfügbar sind.

Publikationen sind standardmäßig strukturiert

In der Vergangenheit mussten Benutzer:innen bei der Verwendung des APT-Publishers von pulp_deb explizit den Publikationsmodus „einfach“ und/oder „strukturiert“ angeben. Der „einfache“ Modus ist im Wesentlichen ein Workaround, um den Umgang mit strukturierten Inhalten zu vermeiden. Mit pulp_deb ≥ 3.0 ist der „strukturierte“ Modus standardmäßig aktiviert und der „einfache“ Modus standardmäßig deaktiviert. In Zukunft wird der „einfache“ Modus als überholt betrachtet, aber wir gehen davon aus, dass es ihn noch eine ganze Weile geben wird, da wir ihn erst dann abschaffen, wenn alle API-Workflows die Erstellung konsistenter strukturierter Inhalte für jede erstellte Repository-Version garantieren.

Beiträge der Community

Ich freue mich auch, berichten zu können, dass die Version 3.0 mehrere Beiträge aus der Community vom Microsoft Azure Core Linux Team enthält, das nun die APT-Repositories von Microsoft mit Pulp hostet. Weitere Informationen zu diesem Projekt finden man in diesem GitHub-Repository. Einige Highlights aus ihren pulp_deb-Beiträgen:

Andere Schmankerl

  • Pulp CLI: Wir haben eine neue Version von pulp-cli-deb veröffentlicht, welche neue Unterbefehle enthält. Damit kann man Inhalte hochladen, auflisten, filtern und mehr.

  • Dokumentation: Wir haben die ersten drei Kapitel der Plug-in-Dokumentation komplett überarbeitet und erweitert. Der Schwerpunkt liegt dabei auf einfach zu verwendenden, strukturierten Workflow-Beispielen mit Pulp CLI.

  • Testsuite: Wir haben die pulp_deb-Testsuite komplett überarbeitet, um das pytest Framework zu verwenden und nicht mehr von pulp-smash abhängig zu sein. Dies macht es einfach, die Testabdeckung hinzuzufügen, die notwendig ist, um neue Funktionen vom Status „experimentell“ auf „vollständig unterstützt“ zu bringen. Außerdem nehmen wir damit eine Vorreiterrolle bei den allgemeinen pytest-Konvertierungsbemühungen innerhalb der Pulp Community ein.

  • Roadmap: Die neue Version der Dokumentation enthält einen Abschnitt „Roadmap und experimentell“, um einen Hinweis darauf zu geben, wohin sich das Plug-in als nächstes entwickeln könnte (keine konkreten Versprechen).

  • Katello: Bitte lesen Sie meinen Foreman Community RFC darüber, wie wir strukturierte APT-Repos innerhalb von Katello in Zukunft verwenden wollen.

Fazit

Der pulp_deb 3.0 Release stellt den bedeutendsten Punkt in der Entwicklung des pulp_deb-Plug-ins seit 2.6.1 dar, dem ersten GA-Release für Pulp 3 vor fast 3 Jahren! Er stellt den Höhepunkt vieler vorheriger Veröffentlichungen dar. Ein grundlegender Fehler im Design wurde behoben. Die Dokumentation wurde mit nutzungsfreundlichen Beispielen auf der Grundlage von Pulp CLI neu geschrieben. Die Pulp CLI für pulp_deb-Befehle decken nun mehr der wichtigsten Arbeitsabläufe ab. Die Testsuite steht nach der Konvertierung auf solidem Fundament. Design-Workarounds aus den Pulp-2-Tagen lassen wir hinter uns, und wir stellen die Weichen für eine neue, vollständig strukturierte Zukunft. Auf dieser neuen Grundlage werden derzeit mehrere neue Funktionen stabilisiert. Ein großes Dankeschön geht an alle in der Pulp Community sowie an alle hier bei ATIX, die dazu beigetragen haben, dies zu ermöglichen!

The following two tabs change content below.

Quirin Pamp

Neueste Artikel von Quirin Pamp (alle ansehen)