Creating and using a local repository

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

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

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

注釈

[managing clusters in an air-gapped](air-gapped/)環境用の特定の命令が利用可能です。

TPAでローカルリポジトリを作成する

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

ディレクトリ構造の作成

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

tpaexec configure --enable-local-repo …

これにより、クラスター構成が生成され、 local-repo ディレクトリとOS固有のサブディレクトリが作成されます。 details of the layoutについては以下を参照してください。

リポジトリにデータを入力し、メタデータを生成する

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

ローカルリポジトリを手動で作成する

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

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

たとえば、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/10` にコピーする場合、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/buster
#  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 .

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 で提供するパッケージのみを使用できます。)