付録D Satellite Server 間でのコンテンツ同期
Red Hat Satellite 6.2 では、Satellite 間の同期 (ISS) を使ってアップストリームとダウンストリームのサーバー間でコンテンツを同期します。ISS のコンテキストでは、アップストリームとはコンテンツのエクスポート元となるサーバーを指し、ダウンストリームとはインポート先となるサーバーを指します。
ISS は以下の 2 つのシナリオに対処します。
- 接続済みと非接続の Satellite Server があり、前者から後者にコンテンツを伝達する場合。
-
プライマリー Satellite Server から他の Satellite Server に一部のコンテンツを伝達する場合。例えば、IT 部門が検証したコンテンツビュー (CV) から
yum
コンテンツをダウンストリーム Satellite に伝達する場合。
Satellite Server から Capsule Server へのコンテンツ同期では ISS は使用できないことに注意してください。Capsule Server はネイティブで同期をサポートします。詳細は Red Hat アーキテクチャーガイド を参照してください。
Satellite 6.2 は、エクスポートをディレクトリーセット (デフォルト) または ISO ファイルとしてサポートします。エクスポートされたものは、別の Satellite Server にインポート可能になります。これは以前の Satellite バージョンにあった katello-disconnected
スクリプトに代わるものです。このスクリプトはリポジトリーをディレクトリー構造にエクスポートし、これを別の Satellite Server にインポートするというものでした。Satellite 6.2 では、エクスポートとインポート機能はすべてコマンドラインで実行されます。
エクスポートされるのは RPM、キックスタート、および ISO ファイルのみです。パッケージフィルターなどのコンテンツビューのメタデータはエクスポートされません。Satellite 6.2 では、Puppet、Docker、または OSTree コンテンツのエクスポートはサポートされていません。インポートは通常のリポジトリー同期で発生し、常にライブラリー環境に届けられます。
非接続のユースケースは、Satellite とそのクライアントがインターネットには接続されていないエアギャップと呼ばれるネットワークを使用するお客様に幅広く用いられています。このような非接続 Satellite にコンテンツを伝達する唯一の方法は、接続済み Satellite からのエクスポートになります。
双方向の同期は非接続環境では使用されません。非接続サーバーから接続済みサーバーにコンテンツが渡されることはありません。
図D.1 エアギャップネットワークにおける ISS での情報フロー
D.1. Satellite Server、Capsule Server、および ISS
ISS は Red Hat Satellite のデプロイメントで独特な役割を果たします。デプロイメントに ISS を含めると、メンテナンスやバックアップを必要とする個別の Satellite Server を維持することと同等になります。ISS はクライアントにフェイルオーバーメカニズムを提供するものではなく、バックアップやリカバリーシステムとして設計されたものでもありません。これは Satellite Server 間での情報共有を図るものです。ISS の実装の主なユースケースとしては、インターネットや外部のコンテンツに接続されていない Satellite Server があり、インターネットに接続されている別の Satellite のコンテンツを同期する必要がある場合が挙げられます。セキュリティーや他の理由で管理インフラストラクチャーを完全に分離する必要がある場合に、このユースケースを適用できます。
別の管理 web UI およびプラットフォームを維持せずにローカルクライアントの管理とプロビジョニングを希望する場合は、Capsule Server のセットアップを検討してください。
D.2. 前提条件
- Red Hat Satellite 6 では Satellite 6.2 以降でのみ ISS が利用可能です。これには Red Hat Enterprise Linux 6.7、7.2、もしくはそれ以降が必要になります。
- エクスポートディレクトリーは、少なくとも 1 つの Red Hat Enterprise Linux エクスポートを受け入れられるサイズである必要があります。デフォルトではエクスポートディレクトリーは /var/lib/pulp/katello-export/ になります。
- /var/lib/pulp/ ディレクトリーには、エクスポートプロセス中に作成される一時ファイル用にエクスポートされるリポジトリーと同等サイズの空き容量が必要になります。これはデフォルトのエクスポートディレクトリーとは別の容量になります。
- ダウンストリームの Satellite Server には、有効にする予定のコンテンツに必須のマニフェストとエンタイトルメントが必要になります。エンタイトルメントがないダウンストリーム Satellite ではリポジトリーを有効にできません。
- リポジトリーのダウンロードポリシーは 即時 に設定する必要があります。このポリシーは Satellite が最初にメタデータと他のリポジトリー情報をダウンロードするかどうか、またリクエストがあった場合に実際のリポジトリーのみをダウンロードするかどうかを指定します。このポリシーが 即時 に設定されていないと、ISS は正常に機能しません。
必須オプションの設定方法は、「ISS の設定」 で説明しています。
D.3. サポートされる同期オプション
Satellite 6.2 では以下の同期オプションがサポートされています。
- ディレクトリーまたは ISO ファイルへのリポジトリーのエクスポート。
- ディレクトリーまたは ISO ファイルへの環境または CV バージョンの全リポジトリーのエクスポート。カスタム製品はインポートのプロセス中に再作成することはできますが、Red Hat 製品はマニフェストを使って作成する必要があるので、再作成されません。
- RPM ファイルとエラータのデータに基づく増分エクスポート。
これらの同期オプションには、コンテンツのタイプによってエクスポートとインポートの履歴詳細が含まれます。例えば以下のものです。
- リポジトリー同期履歴には、エクスポートの発生時刻の他にアップストリームソースの情報が含まれます。
- CV 同期履歴には、インポートの時刻、バージョン、アップストリームソースの他にエクスポート時刻とバージョンが含まれます。
D.4. チャンク ISO ファイルの使用
Satellite 6.2 はチャンク ISO ファイルへのエクスポートをサポートしています。チャンク ISO は split ISO と類似のものですが、1 つ大きな違いがあります。Satellite は ISO ファイルのサイズを追跡し、ISO に追加されているファイルの合計がそのサイズを超えると、Satellite はその ISO への書き込みを停止し、新しい ISO を作成します。この利点は ISO のファイルサイズを指定することができ (例えば 4.7 GB)、かつそれよりお大きなリポジトリーをエクスポートできることです。これにより、DVD に書き込み可能な複数の 4.7 GB ISO ファイルが作成されます。
チャンクと分割の違いは、分割の split
ユーティリティーは ISO のファイル形式を認識しないため、同じシリーズの次のファイル用に書き込み可能な新しい ISO ファイルを作成しないという点です。この方法では、全ファイルを1カ所にコピーし、それらを連結し、その単一の大きな ISO をループバックでマウントする必要があります。
--iso-mb-size
パラメーターを使うと、ISO エクスポートファイルのサイズを指定できます。デフォルト値は片面の単一層 DVD のサイズである 4380 MB です。
D.5. ISS の設定
本セクションでは、ISS の設定方法について説明します。これを正しく設定しないと同期が失敗する可能性があるので、重要な手順になります。
D.5.1. エクスポート先の設定
Satellite 間の同期 (ISS) は、pulp_export_destination にあるようにデフォルトで /var/lib/pulp/katello-export/ ディレクトリーを使用します。このディレクトリーを変更するには、新規ディレクトリーを作成して Pulp エクスポート先を設定する必要があります。これを指定できるのは Satellite の管理者のみで、Satellite が任意のファイルシステムに書き込みしないように SELinux とその他のパーミッションも設定されています。
よく使用されるディレクトリーは、エクスポート後にシンボリックリンクを作成すると便利です。エクスポートされるリポジトリーと CV にはリポジトリーディレクトリー構造の前に組織名と環境名が付けられるので、パスが長すぎることになりかねません。
この例で使用されているディレクトリーは、デモ用です。実際に使用するエクスポートディレクトリーには必要となるエクスポート RPM と ISO ファイルに十分な容量があることを確認してください。 「コンテンツ管理ストレージの定義」 ではストレージ要件を推定する方法についての情報があります。エクスポートプロセス中には、/var/lib/pulp/ ディレクトリーに一時ファイルが作成されます。つまり、エクスポートプロセス中には、エクスポートされるリポジトリーの 2 倍のサイズのストレージ容量が必要になります。エクスポートが完了したら、一時ファイルは削除されます。
エクスポートディレクトリーの作成
エクスポートディレクトリーを作成します。
# mkdir /var/www/html/pub/export
foreman
ユーザーにエクスポートディレクトリーでの書き込みおよび読み取りパーミッションを付与します。# chown foreman:foreman /var/www/html/pub/export
SELinux コンテキストを設定します。
# semanage fcontext -a -t httpd_sys_rw_content_t \ "/var/www/html/pub/export(/.*)?" # restorecon -RvF /var/www/html/pub/export # ls -Zd /var/www/html/pub/export \ drwxr-xr-x. foreman foreman \ system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/pub/export
エクスポート先の設定
CLI をご利用の場合
コマンドラインでエクスポート先を変更するには、以下のフォーマットで hammer
コマンドを使用します。
# hammer settings set \
--name pulp_export_destination \
--value your-export-directory
例えば、エクスポート先に /var/www/html/pub/export/ を指定するには、以下を入力します。
# hammer settings set \ --name pulp_export_destination \ --value /var/www/html/pub/export
Web UI をご利用の場合
- 管理 > 設定 に移動して、Katello タブをクリックします。
-
名前
のコラムで pulp_export_destination を探して値
フィールドをクリックします。 -
値
フィールドに /var/www/html/pub/export などのエクスポート先を入力して、保存
をクリックします。
D.5.2. ダウンロードポリシーの設定
ISS では ダウンロードポリシー を 即時 に設定する必要があります。これをグローバルに設定すると、すべての組織で作成される新規リポジトリーに適用されます。または、各リポジトリーに個別に設定することもできます。デフォルト値を変更しても既存設定は変更されます。
CLI をご利用の場合
グローバルでデフォルトのダウンロードポリシーを変更するには、以下のコマンドを使用します。
# hammer settings set \ --name default_download_policy \ --value immediate
特定のリポジトリーのポリシーを変更する場合は、組織のリポジトリーを以下のコマンドで一覧表示できます。
# hammer repository list \
--organization-label <organization-label>
既存のリポジトリーのダウンロードポリシーを変更するには、以下のコマンド使用します。
# hammer repository update \
--organization-label <organization-label> \
--product "Red Hat Enterprise Linux Server" \
--name "Red Hat Enterprise Linux 7 Server Kickstart x86_64 7.2" \
--download-policy immediate
Web UI をご利用の場合
Web UI を使ってグローバルでデフォルトのダウンロードポリシーを変更するには、以下の手順を実行します。
- 管理 > 設定 に移動します。
-
Katello タブで
default_download_policy
を探します。 - 値フィールドの編集アイコンをクリックします。
-
値を 即時 に設定して
保存
をクリックします。
Web UI で既存のリポジトリーのダウンロードポリシーを変更するには、以下の手順を実行します。
- コンテンツ > 製品 に移動して、該当製品名をクリックします。
- リポジトリー タブで必要なリポジトリーをクリックし、ダウンロードポリシー フィールドの編集アイコンをクリックします。
-
ドロップダウンリストから 即時 を選択して、
保存
をクリックします。
D.6. コンテンツのエクスポート
本セクションでは、お使いのアップストリームサーバーから異なるタイプのコンテンツをエクスポートし、1 つ以上のダウンストリームサーバーにインポートする方法について説明します。アップストリームとダウンストリームのサーバー間の同期は、完全な分離を必要とするエアギャップ環境などの非接続デプロイメントでサポートされています。
D.6.1. リポジトリーのエクスポート
アップストリームサーバーからのコンテンツのエクスポートには hammer repository export
コマンドを使用します。このコマンドは、pulp_export_destination で指定されているディレクトリーにコンテンツをエクスポートします。ISS ではデフォルトでディレクトリーにエクスポートします。--export-to-iso 1 パラメーターを使用すると、ディレクトリーではなく ISO ファイルにエクスポートすることができます。例を示します。
# hammer repository export --id 1 [--export-to-iso 1]
--export-to-iso パラメーターを使用する場合は、1 (ISO) または 0 (ディレクトリー) のいずれかを指定する必要があります。このパラメーターにはデフォルト値はありません。
D.6.2. コンテンツビューバージョン (CVV) のディレクトリーへのエクスポート
リポジトリーはすべて、コンテンツビューバージョンでディレクトリーにエクスポートすることができます。つまり、特定の CV に要件に合うようなラベル付けをすることで (例えば "Repos to Export")、整理が容易になります。これはすべてが単一のディレクトリー内にあるためです。これでエクスポートのトラッキングと更新が容易になります。
エクスポートするコンテンツビューバージョンの決定
-
hammer content-view version list
コマンドを使ってエクスポートする CVV を判断します。例を示します。
$ hammer content-view version list \ --organization "Organization_Name" ---|----------------------|---------|----------------------- ID | NAME | VERSION | LIFECYCLE ENVIRONMENTS ---|----------------------|---------|----------------------- 14 | cdn.megacorp.com 1.0 | 1.0 | Library, Production ---|----------------------|---------|-----------------------
CVV をエクスポートするには以下を実行します。
-
hammer content-view version export
コマンドで CV をエクスポートします。
# hammer content-view version export --id 14
エクスポートディレクトリーにリンクを追加すると、サブスクリプション URL での使用が容易になります。例を示します。
$ tree megacorp-cdn_megacorp_com-v1.0 megacorp-cdn_megacorp_com-v1.0 |-- megacorp |-- content_views | |-- cdn_megacorp_com | | |-- 1.0
バージョンディレクトリーへのシンボリックリンクを作成し、そのリンクを使用します。
$ ln -s megacorp-cdn_megacorp_com-v1.0/megacorp/ \ content_views/cdn_megacorp_com/1.0 cdn-latest
サブスクリプション CDN URL がエクスポート元をポイントするように設定するには、シンボリックリンクを使用します。
$ hammer organization update \ --name "Mega Subsidiary" \ --redhat-repository-url \ http://megacorp.com/pub/cdn-latest Organization updated
D.6.3. 増分更新
最新の更新を受信する際に、Satellite Server から大型リポジトリーのエクスポートを回避するには、増分更新を利用する方法があります。これは、特定の日時以降に 1 つ以上の同期イベントごとになされたローカルのリポジトリーへの変更をエクスポートするものです。
増分更新のリポジトリーを作成するには、hammer repository export
コマンドで --since
オプションを使用します。例を示します。
# hammer repository export \
--id 1 [--export-to-iso 1] \
--since [ <ISO_Date> ]
ここでの ISO_Date は 2010-01-01T12:00:00Z
のような ISO 8601 形式になります。
計算に使用されるタイムスタンプは、RPM Satellite Server で同期された時間です。例えば、Red Hat が月曜日に RPM をリポジトリーに追加して水曜日に再度追加したとすると、木曜日にはローカルリポジトリーの同期はできず、火曜日の日付を使って水曜日分の更新のみが得られます。
変更をリポジトリーに追加するほかに、この機能は Default Organization View のコンテンツビューで便利ですが、公開済み CV ではそれほど活用できません。
増分エクスポートから同期する際には、--incremental
オプションを hammer repository synchronize
コマンドで使用するようにしてください。このオプションを使用せず、リポジトリーの "Mirror on Sync" が有効になっていると、Satellite Server はインポートを完全なインポートとして扱い、増分エクスポートにない全データを消去してしまいます。このようなシナリオからリカバリーするには、完全なエクスポートとそこからの同期という時間のかかるものになります。
D.7. コンテンツのインポート
Red Hat Satellite 6.2 では現在、非接続環境にあるアップストリーム Satellite Server からエクスポートされたコンテンツのインポートをサポートしています。この方法は、インターネットアクセスのない非接続の Satellite Server に使用し、サーバー間で DVD などの物理的なメディアによるコンテンツの移動が必要になります。
D.7.1. リポジトリーのインポート
この方法は、ダウンストリームサーバーで hammer repository sync
コマンドを使用するもので、カスタムまたは増分コンテンツをインポートする場合に必要になります。
ダウンストリームサーバーには、実際には "import" というコマンドはありません。プロセスは通常のリポジトリー同期で、アップストリームサーバーからエクスポートされたコンテンツをソースとして使用します。
ダウンストリームサーバーにコンテンツをインポートする前に、何がエクスポートされたかを確認します。アップストリームサーバーで hammer repository-set list
コマンドを実行し、エクスポートされたものを確認します。例を示します。
$ hammer repository-set list \ --organization "Mega Subsidiary" \ --product "Red Hat Enterprise Linux Server" \ | grep kickstart 1952 | kickstart | Red Hat Enterprise Linux 6 Server (Kickstart) 1951 | kickstart | Red Hat Enterprise Linux 5 Server (Kickstart) 2455 | kickstart | Red Hat Enterprise Linux 7 Server (Kickstart)
リポジトリーの有効化
ダウンストリームで
hammer repository-set enable
コマンドを使ってエクスポートファイルからのリポジトリーを有効にします。例を示します。$ hammer repository-set enable \ --organization "Mega Subsidiary" \ --product "Red Hat Enterprise Linux Server" \ --basearch x86_64 --releasever 7.2 --id 2455
リポジトリーの同期
該当組織のリポジトリーを一覧表示して、ID を確認します。
$ hammer repository list --organization "Mega Subsidiary" ---|--------------------------------------------------------| ID | NAME | 44 | Red Hat Enterprise Linux 7 Server Kickstart x86_64 7.2 |
hammer repository synchronize
コマンドを使って必要なリポジトリーを同期します。例を示します。$ hammer repository synchronize --id 44
増分エクスポートから同期する際には、
--incremental
オプションを使用してください。
D.7.2. Red Hat リポジトリーとしてのコンテンツビューのインポート
前提条件
- アップストリームの Satellite Server に Red Hat リポジトリーのコンテンツビューがあること。
- アップストリームの Satellite Server からコンテンツビューをエクスポートしていること。
- エクスポートされたコンテンツビューをある場所またはメディアにコピーして、ダウンストリームシステムから利用可能になっていること。
コンテンツビューのインポート
- エクスポートされたコンテンツビューのある場所もしくはメディアをダウンストリームの Satellite Server にマウントします。
-
データを HTTPS ではなく HTTP で利用可能にします。例えば
/var/www/html/pub/export/
にコピーします。 - Web UI で コンテンツ > Red Hat サブスクリプション に移動します。
- マニフェストの管理 をクリックします。
- アクション タブでアドレスフィールドを選択するか、Red Hat CDN URL の右側にある編集アイコンをクリックします。
-
アドレスをエクスポートされたコンテンツビュー内のディレクトリーの場所に設定します。例えば、エクスポートが
/export/Default_Organization-Test_Product-One/Default_Organization/Library/
を含んでいる場合、URL をhttp://localhost/pub/export/Default_Organization-Test_Product-One/Default_Organization/Library
と設定します。