3.7. 一般的なクライアント RPM のワークフロー
CCSP は、さまざまなバージョンの Red Hat Enterprise Linux と、その上で利用できるさまざまなレイヤード製品を提供できます。このようなコンテンツを提供する Red Hat リポジトリーに加えて、これらの Red Hat Enterprise Linux バージョンおよびレイヤード製品のクライアント設定 RPM への更新を提供するためのカスタムリポジトリーが必要になります。カスタムリポジトリーは、各 Red Hat Enterprise Linux バージョンおよび別売の各レイヤード製品ごとに作成する必要があります。たとえば、ベースとなる Red Hat Enterprise Linux 8 オファリングと Red Hat Enterprise Linux 上の SAP 用に別々のカスタムリポジトリーが必要になります。これらのカスタムリポジトリーに、対応するクライアント設定 RPM を格納します。これらの RPM を更新 (新しいリポジトリーの追加や期限切れの証明書の更新など) するたびに、対応するカスタムリポジトリーに新しいバージョンをアップロードします。
改ざんされていない正式なパッケージをユーザーが確実にインストールできるように、すべての RPM に GPG 鍵で署名することを推奨します。ただし、パッケージへの署名は RHUI の範囲外です。そのため、社内で利用可能なツールを使用してクライアント設定 RPM に署名する必要があります。カスタムリポジトリーを作成する場合、必要なのは、RHUA 上のパブリック GPG 公開鍵をカスタムリポジトリーで使用できるように設定することだけです。鍵は rhui-manager
によってクライアント設定 RPM に自動的に追加され、dnf 設定内のカスタムリポジトリーに使用されます。
手順
次の例では、x86_64 アーキテクチャー上のベース Red Hat Enterprise Linux 8 のクライアント設定 RPM 用に、カスタムリポジトリーを作成します。
# rhui-manager repo create_custom --protected --repo_id client-config-rhel-8-x86_64 --display_name "RHUI Client Configuration for RHEL 8 on x86_64" --gpg_public_keys /root/RPM-GPG-KEY-my-cloud
必要に応じて別のリポジトリー ID と表示名を使用することもできます。また、実際の GPG 鍵ファイルを指定してください。
関連する Red Hat リポジトリーを追加します。次の YAML ファイルには、バージョン管理されていないリポジトリーを使用した、x86_64 アーキテクチャー上のベース Red Hat Enterprise Linux 8 用の一般的なリポジトリーセットが含まれています。
# cat rhel-8-x86_64.yaml name: Red Hat Enterprise Linux 8 on x86_64 repo_ids: - codeready-builder-for-rhel-8-x86_64-rhui-debug-rpms-8 - codeready-builder-for-rhel-8-x86_64-rhui-rpms-8 - codeready-builder-for-rhel-8-x86_64-rhui-source-rpms-8 - rhel-8-for-x86_64-appstream-rhui-debug-rpms-8 - rhel-8-for-x86_64-appstream-rhui-rpms-8 - rhel-8-for-x86_64-appstream-rhui-source-rpms-8 - rhel-8-for-x86_64-baseos-rhui-debug-rpms-8 - rhel-8-for-x86_64-baseos-rhui-rpms-8 - rhel-8-for-x86_64-baseos-rhui-source-rpms-8 - rhel-8-for-x86_64-supplementary-rhui-debug-rpms-8 - rhel-8-for-x86_64-supplementary-rhui-rpms-8 - rhel-8-for-x86_64-supplementary-rhui-source-rpms-8
上記の YAML ファイルを使用してこれらすべてのリポジトリーを追加および同期するには、次のコマンドを実行します。
# rhui-manager repo add_by_file --file rhel-8-x86_64.yaml --sync_now
エンタイトルメント証明書を作成します。証明書で許可されるリポジトリーラベルのリストが必要です。多くの場合、リポジトリーラベルはリポジトリー ID と同じです。ただし、リポジトリー ID に特定の Red Hat Enterprise Linux マイナーバージョンが含まれている場合は、ラベルにマイナーバージョンは含まれず、メジャーバージョンのみが含まれます。ベース Red Hat Enterprise Linux リポジトリーの場合、ID は同一であるため、次の Python コードを使用して上記の YAML ファイルから ID を抽出できます。
import yaml with open("rhel-8-x86_64.yaml") as repoyaml: repodata = yaml.safe_load(repoyaml) print(",".join(repodata["repo_ids"]))
出力をクリップボードにコピーし、環境変数 ($labels など) として保存します。
# labels=<paste the contents of the clipboard here>
エンタイトルメント証明書を作成するときは、Red Hat Enterprise Linux リポジトリーラベルに加えて、カスタムリポジトリーをラベルのコンマ区切りリストに追加する必要もあります。次のコマンドを実行して、Red Hat Enterprise Linux リポジトリーとカスタムリポジトリーの両方へのアクセスを許可するエンタイトルメント証明書を作成します。
# rhui-manager client cert --name rhel-8-x86_64 --dir /root --days 3650 --repo_label $labels,client-config-rhel-8-x86_64
会社のポリシーで証明書の有効期間が 1 年、2 年などに制限されている場合は、それに応じて
--days
引数の値を変更します。このコマンドは、ファイル
/root/rhel-8-x86_64.crt
と/root/rhel-8-x86_64.key
を作成します。これらのファイルは次のステップで必要になります。クライアント設定 RPM を作成します。
# rhui-manager client rpm --dir /tmp --rpm_name rhui-client-rhel-8-x86_64 --rpm_version 1.0 --entitlement_cert /root/rhel-8-x86_64.crt --private_key /root/rhel-8-x86_64.key
任意の RPM 名またはバージョンを使用してください。上記の値を指定すると、コマンドによって RPM が作成され、その場所が出力されます。場所は次のとおりです。
/tmp/rhui-client-rhel-8-x86_64-1.0/build/RPMS/noarch/rhui-client-rhel-8-x86_64-1.0-1.noarch.rpm
この RPM を RHUA からシステムに転送し、適切な GPG 鍵 (カスタムリポジトリーの作成時に
--gpg_public_keys
パラメーターとして使用した公開鍵に対応する秘密鍵) を使用して RPM に署名します。その後、たとえば、クラウド環境内の Red Hat Enterprise Linux 8 x86_64 イメージに、署名済み RPM をプリインストールすることができます。また、署名済み RPM を RHUA に転送し、x86_64 上の Red Hat Enterprise Linux 8 のカスタムリポジトリーにアップロードする必要があります。# rhui-manager packages upload --repo_id client-config-rhel-8-x86_64 --packages /root/signed/rhui-client-rhel-8-x86_64-1.0-1.noarch.rpm
検証
カスタムリポジトリーの内容を確認します。
# rhui-manager packages list --repo_id client-config-rhel-8-x86_64
このコマンドは、アップロードした RPM ファイルを出力するためのものです。
CDS ノードと HAProxy ノードを設定 (このガイドで後ほど説明) してから、テスト仮想マシンにクライアント設定 RPM をインストールし、テスト仮想マシンで次のコマンドを実行して、関連するすべてのリポジトリーへのアクセスを確認することもできます。
# yum -v repolist
このコマンドは、設定された Red Hat Enterprise Linux 8 リポジトリーとクライアント設定 RPM 用のカスタムリポジトリーを出力するためのものです。
クライアント設定 RPM の更新
クライアント設定 RPM を再ビルドする必要がある場合は、バージョン番号を増やします。
前回の呼び出しで
1.0
を使用した場合は、2.0
などを使用します。他のパラメーターはそのままにします。# rhui-manager client rpm --dir /tmp --rpm_name rhui-client-rhel-8-x86_64 --rpm_version 2.0 ...
再度、新しい RPM に署名し、RHUA に転送して、カスタムリポジトリーにアップロードします。
# rhui-manager packages upload --repo_id client-config-rhel-8-x86_64 --packages /root/signed/rhui-client-rhel-8-x86_64-2.0-1.noarch.rpm
- これで、以前のバージョンの RPM がインストールされているクライアント仮想マシンを新しいバージョンに更新できます。新しい RPM をアップロードしたときに、更新されたリポジトリーデータを dnf で再ロードするには、クライアント仮想マシン上の dnf キャッシュを消去する必要がある場合があります。
1 つのエンタイトルメント証明書で x86_64 リポジトリーと ARM64 リポジトリーを組み合わせないでください。このような証明書を使用して rhui-manager
によってクライアント設定 RPM を作成すると、ターゲットクライアント仮想マシン上で両方のアーキテクチャーへのアクセスが提供されるため、競合が発生する可能性があります。その場合、rh-cloud.repo
ファイルを変更し、rhui-manager
の外部で RPM を再ビルドする必要があります。クライアント設定 RPM を作成するときに --dir/tmp
を使用した場合、アーティファクトが /tmp/rhui-client-rhel-8-x86_64-1.0/build/
に保存されることに注意してください。RPM の再ビルドの詳細は、Red Hat Enterprise Linux ドキュメントの ソフトウェアのパッケージ化および配布 を参照してください。
現在、特定のリポジトリー (たとえば、-debug
リポジトリーや -source
リポジトリー) がデフォルトで無効になっている状態で rhui-manager
に rh-cloud.repo
ファイルを作成させることはできません。その場合、rh-cloud.repo
ファイルを変更し、rhui-manager
の外部で RPM を再ビルドする必要があります。この問題は BZ#1772156 で追跡されています。
関連情報
基本的なツールを使用してパッケージに署名する方法の一般的な情報については、How to sign rpms with GPG も参照してください。