Shipping packages from a local repo

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

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

クイックスタート

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

tpaexec configure --enable-local-repo …

これにより、クラスター構成が生成され、 local-repo ディレクトリとOS固有のサブディレクトリが作成されます。

recommended layout の詳細については、以下を参照してください。

切断された環境

Managing clusters in a disconnected or Air-Gapped environment でクラスターを管理する手順を参照してください

環境。

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

デフォルトでは、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はターゲットインスタンスにローカルリポジトリを設定しようとしません。

このようにして、RedHat固有のパッケージをRedHat/8 の下に、Ubuntu固有のパッケージをUbuntu/focal の下に配置でき、インスタンスは適切なパッケージを自動的に使用します。異なるディストリビューションを実行しているインスタンスがない場合、それらはすべて同じサブディレクトリを使用します。

リポジトリーへの入力

tpaexec download-packages を実行して、クラスターに必要なすべてのパッケージをlocal-repoにダウンロードします。

tpaexec deploy を実行する前に、パッケージを適切なリポジトリディレクトリにコピーし、リポジトリのメタデータを生成する必要があります。

必要なパッケージをリポジトリーディレクトリにコピーした後、OS固有のツールを使用してリポジトリーメタデータを生成する必要があります。

コントロールノード、つまり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リポジトリのメタデータ

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

$ sudo yum install -y createrepo

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

$ cd local-repo/RedHat/8
#  download/copy .rpm package files

$ createrepo .

リポジトリーのコピー

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