Creating and using a local repository#

クラスターディレクトリ内にローカルリポジトリを作成すると、TPAはリポジトリ内のパッケージをクラスターインスタンスで利用できるようにします。これは、追加のパッケージをクラスターにシップする簡単な方法です。

オプションで、このリポジトリ のみを使用するようにインスタンスを構成するようにTPAに指示することもできます。つまり、他のすべてを無効にします。この場合、rsync、Pythonなどの基本的な依存関係から始めて、展開中に必要な すべての*パッケージを提供する必要があります。

ローカルリポジトリを手動で作成するか、TPAにローカルリポジトリを作成してもらうことができます。両方の手順を以下に示します。

注釈

特定の指示は Managing clusters in a disconnected or air-gapped environment 環境で使用できます。

TPAを使用したローカルリポジトリの作成#

TPAには、このようなローカルリポジトリの作成に役立つツールが含まれています。具体的には、 --enable-local-repo スイッチをtpaexec configure とともに使用して、ローカルリポジトリとして使用する空のディレクトリ構造を作成できます。 tpaexec download-packages は、その構造に必要なパッケージを設定します。

ディレクトリ構造の作成#

ローカルリポジトリでクラスターを構成するには、次のコマンドを実行します。

tpaexec configure --enable-local-repo …

これにより、クラスター構成が生成され、local-repo ディレクトリとOS固有のサブディレクトリが作成されます。 ローカルリポジトリのレイアウト については、以下を参照してください。

リポジトリにデータを設定し、メタデータを生成する#

tpaexec download-packages を実行して、クラスターに必要なすべてのパッケージをローカルリポジトリにダウンロードします。結果のリポジトリには、すべてのパッケージの完全な依存関係ツリーが含まれるため、このリポジトリからクラスター全体をインストールできます。リポジトリのメタデータも自動的に作成され、すぐに使用できます。

ローカルリポジトリの手動作成#

ローカルリポジトリのレイアウト#

ローカルリポジトリを手動で作成するには、最初に適切なディレクトリ構造を作成する必要があります。 --enable-local-repo を使用する場合、TPAは、クラスター用に選択したOSに基づいて、local-repo ディレクトリとその内にOS固有のサブディレクトリたとえば local-repo/Debian/12 を作成します。この構造は、手動で作成したリポジトリにも使用することをお勧めします。

たとえば、RedHat 8を実行しているクラスターは次のレイアウトになる場合があります。

local-repo/
`-- RedHat
    |-- 8.5 -> 8
    `-- 8
        `-- repodata

インスタンスごとに、TPAはlocal-repo の次のサブディレクトリを順番に検索し、最初に見つけたものを使用します。

  • <distribution>/<version> 、例 RedHat/8.5

  • <distribution>/<major version> 、例 RedHat/8

  • <distribution>/<release name> 、例 Ubuntu/focal

  • <distribution> 、例 Debian

  • local-repo ディレクトリ自分自身。

これらのディレクトリが存在しない場合、もちろん、TPAはターゲットインスタンスにローカルリポジトリをセットアップしようとしません。

リポジトリの設定とメタデータの生成#

tpaexec deploy を実行する前に、以下で詳しく説明する手順を完了する必要があります。

リポジトリにデータを設定するには、含めるパッケージを適切なディレクトリにコピーします。次に、以下で詳しく説明するように、システムに適切なツールを使用してメタデータを生成します。

注釈

制御ノードつまりtpaexecを実行するマシンでメタデータを生成する必要があります。 TPAは、メタデータとパッケージをターゲットインスタンスにコピーします。

注釈

インスタンスが使用するサブディレクトリにメタデータを生成する必要があります。つまり、パッケージを`local-repo/Debian/12` にコピーする場合、local-repo/Debian ではなくそのディレクトリにメタデータを作成する必要があります。

Debian / Ubuntuリポジトリのメタデータ#

Debianベースのディストリビューションの場合、dpkg-dev パッケージをインストールします。

sudo apt-get update && sudo apt-get install -y dpkg-dev

これで、 dpkg-scanpackages を使用してメタデータを生成できます。

cd local-repo/Debian/bookworm

#  download/copy .deb package files

dpkg-scanpackages . | gzip > Packages.gz

RedHat / SLESリポジトリのメタデータ#

最初に、createrepo パッケージをインストールします。

sudo yum install -y createrepo

これで、 createrepo を使用してメタデータを生成できます。

cd local-repo/RedHat/8

#  download/copy .rpm package files

createrepo .

RHEL 8+リポジトリでは、次の追加手順を実行する必要があります。

repo2module --module-name tpa --module-stream local --module-version 1 --module-context f32 . modules.yaml
modifyrepo_c --mdtype=modules modules.yaml repodata/
dnf clean all

TPAがローカルリポジトリを使用する方法#

リポジトリのコピー#

TPAはrsyncを使用して、生成されたメタデータを含むリポジトリーディレクトリの内容をターゲットインスタンス上のディレクトリにコピーします。

rsyncがインスタンスでまだ利用できない場合、TPAはそれをインストールできますつまり apt-get install rsync またはyum install rsync 。ただし、 use_local_repo_only を設定している場合、rsyncパッケージはローカルリポジトリに含まれる必要があります。必要に応じて、TPAはscpを使用してrsyncパッケージのみをコピーし、残りをコピーする前にインストールします。

リポジトリー構成#

ローカルリポジトリのコンテンツをターゲットインスタンスにコピーした後、TPAは宛先ディレクトリをローカルつまり、URLベースではなくパスベースのリポジトリとして構成します。

たとえば、リポジトリーディレクトリにexample.deb を提供する場合、他のリポジトリーのパッケージと同様に、apt-get install example を実行するだけでインストールできます。

パッケージのインストール#

TPAは、提供されたコンテンツでリポジトリを構成しますが、同じパッケージが別のリポジトリから利用可能な場合、どれをインストールするかはパッケージマネージャーの判断にあります特定のバージョンを指定しない限り、通常は最新です。

ただし、 use_local_repo_only: yes を設定すると、TPAは他のすべてのパッケージリポジトリを無効にするため、インスタンスはlocal-repo で提供したパッケージのみを使用できます。