Pullpは、組織内のコンテンツのフェッチ、ミラーリング、アップロード、および公開を支援するオープンソースのリポジトリ管理ツールです。ソフトウェアパッケージ(RPMパッケージからRuby gemまで)、Ansibleコレクション、コンテナイメージ、さらには任意のファイルなど、さまざまな種類のコンテンツを管理するために使用できます。
一般的なワークフローは、既存のリポジトリ(http://mirror.centos.org/centos/7/os/x86_64/など)からソフトウェアパッケージをフェッチするか、手動でパッケージを追加する(組織内で構築されたプライベートパッケージの場合)ことから始まります。次に、Pulpは、クライアントが使用できるソフトウェアパッケージの任意のコレクションを作成するのに役立ちます。それで、あなたは:
- 消費者が利用できるコンテンツを管理できます
- バージョン管理を使用できます
- ローカルの重複排除されたソースを提供することにより、帯域幅とストレージのニーズを削減します
Pulpを初めて使用する場合は、Pulpを使用してソフトウェアリポジトリを管理する方法に関するMelanieCorrの紹介記事をお読みください。
Pulpを使用してDebianパッケージを管理する
パルプは、さまざまなタイプのコンテンツを適切に処理するためにプラグインに依存しています。たとえば、Pulp RPMプラグインを使用すると、.rpmパッケージを管理できます。 Pulp Debianプラグインを使用すると、APTリポジトリ内で.debパッケージをミラーリング、同期、アップロード、および公開できます。パルプコミュニティによって提供および保守されている無料のオープンソースソフトウェアである、DebianやUbuntuなどのLinuxディストリビューション用の消耗品ソフトウェアパッケージを管理および提供する場合は、pulp_debプラグインが不可欠です。
Pulp Debianプラグインを使用すると、リモートリポジトリを同期し、独自のコンテンツをアップロードするためのインターフェイスを提供し、コンテンツをリポジトリに公開することで、Debianコンテンツを管理できます。
Pulpは、パッケージ、パッケージインデックス、リリースファイルなど、いくつかの異なるDebianコンテンツタイプをサポートしています。 「コンテンツタイプ」とは、特定のアーティファクトまたはメタデータのいずれかを指します。たとえば、タイプpackage
のコンテンツユニット .debパッケージを指します。
リモートリポジトリの同期は、Pulp Debianプラグインの主な機能の1つであり、コンテンツを取得する方法の1つです。同期プロセスでは、URL、ディストリビューション、コンポーネント、およびアーキテクチャを含むリモート定義を使用します。
- URL リモートAPTリポジトリへのパスです。
- 配布
dists/
間のパスです APTリポジトリのディレクトリと関連するRelease
ファイル。これは通常(常にではありませんが)DebianベースのLinuxディストリビューションのコードネームまたはスイートです(buster
Debian10の場合stretch
Debian9の場合focal
Ubuntu 20.04など)。lsb_release -cs
を実行しています DebianまたはUbuntuホストでは、ディストリビューションのコードネームが表示されます。 - コンポーネント リポジトリの任意のサブセットを記述します(
main
、contrib
、またはnon-free
Debianの場合、またはmain
、restricted
、universe
、およびmultiverse
Ubuntuの場合)。これを使用して、APTリポジトリ内のパッケージをフィルタリングおよび分類できます。 - アーキテクチャ ソフトウェアパッケージを実行できるプロセッサアーキテクチャを指し、最も一般的には
i386
、amd64
、またはarm64
。ソフトウェアパッケージが特定のプロセッサアーキテクチャに依存していない場合は、アーキテクチャをall
に設定できます。 。
ディストリビューションの指定は必須ですが、コンポーネントとアーキテクチャの定義はオプションです。未定義の場合、Pulpはコンポーネントまたはアーキテクチャをフィルタリングせずにすべてのパッケージを自動的に同期します。パルプは、Release
のGNUPrivacyGuard署名を自動的に検証します ファイル、対応するGPG公開鍵がリモートに割り当てられている必要があります。
PulpのRESTAPIを使用すると、リモートリポジトリから逐語的な出版物に簡単に移動できます。次のAPI呼び出しは、HTTPieを使用していることを前提としています。
組織内のホストに.debパッケージを提供したいとします。次の基本的なワークフローは、PulpおよびPulpDebianプラグインを使用するための最初のステップを示しています。
1。ローカルリポジトリを作成する
単一のAPI呼び出しでPulpにローカルリポジトリを作成することから始めます。これは、HTTPieまたはcurlコマンドを使用して実行できます。
http post http://<hostname>:24817/pulp/api/v3/repositories/deb/apt/ name=<name_of_your_repository>
2。リモートを作成する
次に、リモートを作成します。このAPI呼び出しには、URLと任意のname
が必要です 価値。ディストリビューションとアーキテクチャの定義はオプションです:
http post http://<hostname>:24817/pulp/api/v3/remotes/deb/apt/ name="nginx.org" url="http://nginx.org/packages/debian" distributions="buster"
1つだけのディストリビューションを定義する場合でも、複数のディストリビューションを定義する場合でも、Pulpは、このリモートでは未定義であるため、後ですべてのアーキテクチャのパッケージを同期します。
3。同期
リモートコンテンツをPulpにフェッチするための3番目の最後のステップは、リモートをローカルリポジトリに同期することです。これを行うには、リポジトリの同期APIエンドポイントを呼び出します。
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>/
このサンプルコマンドでは、各UUIDは、pulp_href
として表示されるPulpの内部参照を参照しています。 APIによって。この手順は、環境、リポジトリのサイズ、および使用可能な帯域幅によっては、時間がかかる場合があります。
同期によってパルプのコンテンツを取得した後、クライアントが消費できるようになります。
1。パブリケーションを作成する
パブリケーションは常にパルプリポジトリに基づいています。コンテンツの公開方法に関する追加の設定が含まれています。 APT
を使用できます .debパッケージを含むAPTタイプのリポジトリのパブリッシャー。
次のAPI呼び出しは、逐語的モードでパブリケーションを作成します。つまり、リモートリポジトリとまったく同じ構造とコンテンツを提供します。
http post http://<hostname>:24817/pulp/api/v3/publications/deb/verbatim/ repository=/pulp/api/v3/repositories/deb/apt/<uuid_repository>/
UUIDを公開するリポジトリに置き換えます。リポジトリのサイズによっては、この手順に時間がかかる場合があります。
2。ディストリビューションを作成する
ディストリビューションは完成したパブリケーションを取得し、Pulpコンテンツアプリを介して提供します。これにより、ユーザーはそれを利用可能(または「消耗品」)にします。 Debianシステムのコンテキストでは、これはリポジトリを/etc/apt/sources.list
に追加できることを意味します ソフトウェアをインストールする方法として使用されます。
次のAPI呼び出しには、最初のステップで作成されたパブリケーションのUUIDが必要です。
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>/
base_path
valueは、クライアントがAPTリポジトリを参照するときに使用するURLの一部であり、名前は任意にすることができます。特定の公開されたディストリビューションでディストリビューションのAPIエンドポイントを呼び出すと、パルプリポジトリのURLが返されます:
http get http://<hostname>:24817/pulp/api/v3/distributions/deb/apt/<uuid_distribution>/
このURLは、APTクライアントが直接使用できます。これで、/etc/apt/sources.list
に追加できます。 有効なリポジトリとして。
これらのAPI呼び出しを使用すると、パッケージ、メタデータ、または署名に触れることなく、APTリポジトリを独自のPulpインスタンスに同期し、そのまま再公開できます。詳細およびその他の公開モードについては、APIドキュメントと機能の概要を参照してください。
より優れたコンテンツ
- 無料のオンラインコース:RHELの技術概要
- 高度なLinuxコマンドを学ぶ
- チートシートをダウンロード
- オープンソースの代替案を見つける
- トップLinuxコンテンツを読む
- オープンソースリソースを確認してください
パルプとそのプラグイン構造の重要な側面の1つは、オープンソースの性質により、非常に柔軟であるということです。パルプをスタンドアロンサービスとして実行できますが、実行する必要はありません。より大きなものに統合することができます。
私はATIXで働いており、orcharhinoというプロジェクトでPulpとPulpDebianプラグインの使用を開始しました。 Foremanに基づいており、追加のコンテンツ管理機能のための強力なKatelloプラグインが含まれています。このプラグイン自体は、リポジトリ管理をPulpに依存しています。これにより、自動化されたシステム導入、構成管理、パッチ管理でデータセンターを管理できるようになりました。
言い換えれば、ATIXは主にKatelloのユースケースを念頭に置いてPulpDebianプラグインを開発しています。 Katello、Pulp、または特定のPulpプラグインが必要な場合でも、このモジュール性は仕様によるものであるため、安心してご利用いただけます。
Pulpを使用すると、リモートソフトウェアリポジトリをミラーリングし、プライベートソフトウェアパッケージをホストし、1つのプラットフォームでさまざまな種類のコンテンツを管理できます。
今日、PulpとPulp Debianプラグインを試してみてください。恐れずに参加して、コミュニティに助けを求めてください。あらゆるフィードバックを歓迎します。