付録D Satellite Server 間でのコンテンツ同期

Red Hat Satellite 6.4 では、Satellite 間の同期 (ISS) を使ってアップストリームとダウンストリームのサーバー間でコンテンツを同期します。ISS のコンテキストでは、アップストリームとはコンテンツのエクスポート元となるサーバーを指し、ダウンストリームとはインポート先となるサーバーを指します。

ISS は以下の 2 つのシナリオに対処します。

  • 接続済みと非接続の Satellite Server があり、前者から後者にコンテンツを伝達する場合。
  • プライマリー Satellite Server から他の Satellite Server に一部のコンテンツを伝達する場合。たとえば、IT 部門が検証したコンテンツビュー (CV) から、ダウンストリーム Satellite に yum コンテンツを伝達する場合。
注記

Satellite Server から Capsule Server へのコンテンツ同期では ISS は使用できないことに注意してください。Capsule Server はネイティブで同期をサポートします。詳細は『Red Hat Satellite 6 のプランニング』「Capsule Server の概要」を参照してください。

Satellite 6.4 は、エクスポートをディレクトリーセット (デフォルト) または ISO ファイルとしてサポートします。エクスポートしたものは、別の Satellite Server にインポートできます。これは以前の Satellite バージョンにあった katello-disconnected スクリプトに代わるものです。このスクリプトはリポジトリーをディレクトリー構造にエクスポートし、これを別の Satellite Server にインポートするというものでした。Satellite 6.4 では、エクスポートとインポートの機能はすべてコマンドラインで実行されます。

注記

エクスポートされるのは RPM、キックスタート、および ISO ファイルのみです。パッケージフィルターなどのコンテンツビューの定義およびメタデータはエクスポートされません。Satellite 6.4 では、Puppet、Docker、または OSTree コンテンツのエクスポートはサポートされていません。インポートは通常のリポジトリー同期で発生し、常にライブラリー環境に届けられます。

非接続のユースケースは、Satellite とそのクライアントがインターネットには接続されていないエアギャップと呼ばれるネットワークを使用するお客様に幅広く用いられています。このような非接続 Satellite にコンテンツを伝達する唯一の方法は、接続済み Satellite からのエクスポートになります。

重要

双方向の同期は非接続環境では使用されません。非接続サーバーから接続済みサーバーにコンテンツが渡されることはありません。

図D.1 エアギャップネットワークにおける ISS での情報フロー

Information Flow in ISS in an Air-gapped Network

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/cache/pulp/ および /var/lib/pulp/ ディレクトリーには、エクスポートプロセス中に作成される一時ファイル用にエクスポートされるリポジトリーと同等サイズの空き容量が必要になります。これはデフォルトのエクスポートディレクトリーとは別の容量になります。
  • ダウンストリームの Satellite Server には、有効にする予定のコンテンツに必須のマニフェストとエンタイトルメントが必要になります。エンタイトルメントがないダウンストリーム Satellite ではリポジトリーを有効にできません。
  • リポジトリーのダウンロードポリシーは 即時 に設定する必要があります。このポリシーは Satellite が最初にメタデータと他のリポジトリー情報をダウンロードするかどうか、またリクエストがあった場合に実際のリポジトリーのみをダウンロードするかどうかを指定します。このポリシーが 即時 に設定されていないと、ISS は正常に機能しません。

必須オプションの設定方法は、「ISS の設定」 で説明しています。

D.3. サポートされる同期オプション

Satellite 6.4 では以下の同期オプションがサポートされています。

  • ディレクトリーまたは ISO ファイルへのリポジトリーのエクスポート。
  • ディレクトリーまたは ISO ファイルへの環境または CV バージョンの全リポジトリーのエクスポート。カスタム製品はインポートのプロセス中に再作成することはできますが、Red Hat 製品はマニフェストを使用して作成する必要があるので、再作成されません。
  • RPM ファイルとエラータのデータに基づく増分エクスポート。

これらの同期オプションには、コンテンツのタイプによってエクスポートとインポートの履歴詳細が含まれます。以下は例となります。

  • リポジトリー同期履歴には、エクスポートの発生時刻の他にアップストリームソースの情報が含まれます。
  • CV 同期履歴には、インポートの時刻、バージョン、アップストリームソースの他にエクスポート時刻とバージョンが含まれます。

D.4. チャンク ISO ファイルの使用

Satellite 6.4 はチャンク ISO ファイルへのエクスポートをサポートしています。チャンク ISO は split ISO と類似のものですが、大きな違いが 1 つあります。Satellite は ISO ファイルのサイズを追跡し、ISO に追加されているファイルの合計がそのサイズを超えると、Satellite はその ISO への書き込みを停止し、新しい ISO を作成します。この利点は ISO のファイルサイズを指定 (たとえば 4.7 GB) することができ、かつそれより大きなリポジトリーをエクスポートできることです。これにより、DVD に書き込み可能な複数の 4.7 GB ISO ファイルが作成されます。

チャンクと分割の違いは、分割の split ユーティリティーは ISO のファイル形式を認識しないため、同じシリーズの次のファイル用に書き込み可能な新しい ISO ファイルを作成しないという点です。この方法では、全ファイルを 1 カ所にコピーして連結し、連結した 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/cache/pulp/ ディレクトリーに一時ファイルが作成され、/var/lib/pulp/ に転送されます。つまり、エクスポートプロセス時には、エクスポートされるリポジトリーの 2 倍のサイズのストレージ容量が必要になります。エクスポートが完了したら、一時ファイルは削除されます。

エクスポートディレクトリーの作成

  1. エクスポートディレクトリーを作成します。

    # mkdir /var/www/html/pub/export
  2. foreman ユーザーにエクスポートディレクトリーでの書き込みおよび読み取りパーミッションを付与します。

    # chown foreman:foreman /var/www/html/pub/export
  3. 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 をご利用の場合

  1. Web UI で、管理 > 設定 に移動して、コンテンツ タブをクリックします。
  2. 名前 カラムで pulp_export_destination 変数を探して、 フィールドをクリックします。
  3. フィールドに /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.5"  \
--download-policy immediate

Web UI をご利用の場合

Web UI を使ってグローバルでデフォルトのダウンロードポリシーを変更するには、以下の手順を実行します。

  1. 管理 > 設定 に移動します。
  2. コンテンツ タブで default_download_policy を探します。
  3. 値フィールドの編集アイコンをクリックします。
  4. 値を 即時 に設定して 保存 をクリックします。

Web UI で既存のリポジトリーのダウンロードポリシーを変更するには、以下の手順を実行します。

  1. Web UI で コンテンツ > 製品 に移動して、該当製品名をクリックします。
  2. リポジトリー タブで必要なリポジトリー名をクリックし、ダウンロードポリシー フィールドを見つけて、編集アイコンをクリックします。
  3. リストから 即時 を選択して、保存 をクリックします。

D.6. コンテンツのエクスポート

本セクションでは、お使いのアップストリームサーバーから異なるタイプのコンテンツをエクスポートし、1 つ以上のダウンストリームサーバーにインポートする方法を説明します。コンテンツのインポートの詳細は「コンテンツのインポート」を参照してください。

アップストリームとダウンストリームのサーバー間の同期は、現在、完全な分離を必要とするエアギャップ環境などの非接続デプロイメントでサポートされています。

D.6.1. リポジトリーのエクスポート

  1. hammer repository list コマンドを使用して、エクスポートするリポジトリーを一覧表示し、エクスポートで使用する ID を特定します。
  2. アップストリームサーバーからコンテンツをエクスポートするには、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. コンテンツビューバージョンのディレクトリーへのエクスポート

コンテンツビューの特定のバージョンをディレクトリーにエクスポートできます。つまり、特定の CV に、要件に合うようなラベルを付けることができます。これで、エクスポートのトラッキングと更新が容易になります。

前提条件

  • CV の全リポジトリーのダウンロードポリシーを 即時 に設定していることを確認します。ポリシーが 即時 に設定されていないリポジトリーは、エクスポートできません。
  • 製品が、必要な日に同期されることを確認します。

Web UI をご利用の場合

  1. コンテンツ > コンテンツビュー に移動し、新規ビューの作成 をクリックします。以下の詳細を入力して CV を作成します。

    1. 名前: CV の簡単な名前。Export_CV と入力します。
    2. ラベル: CV の内部 ID。Red Hat Satellite 6 では、名前 に入力した内容に基づいて、このフィールドに値が自動的に入力されます。
    3. 説明: プレーンテキスト形式の CV の説明。
    4. 複合ビュー?: 複合ビューを使用するかどうかを定義します。チェックを外しておきます。
  2. 送信 をクリックして変更を保存します。
  3. リポジトリーの選択 画面で、リポジトリーの選択 テーブルから新しい CV に追加するリポジトリーを選択します。リポジトリーの追加 をクリックして、CV に選択したパッケージを追加します。
  4. Yum コンテンツ > フィルター に移動し、新規フィルター をクリックします。以下の詳細を入力して、エラータ以外のパッケージを含むフィルターを作成します。

    1. 名前: フィルターの簡単な名前。Non-errata Products と入力します。
    2. コンテンツタイプ: フィルターに追加するコンテンツタイプのリスト。パッケージ を選択します。
    3. 包含タイプ: コンテンツを CV に包含または除外するかを定義するリスト。包含 を選択します。
    4. 説明 - フィルターの簡単な説明 (任意)。Include all non-errata Products と入力します。
    5. 保存 をクリックします。
    6. Include RPM 画面で、エラータのないすべての RPM を含めます。 のチェックを外します。
  5. Yum コンテンツ > フィルター に移動し、新規フィルター にクリックします。以下の詳細を入力し、必要な日付範囲に基づいてエラータパッケージを含むフィルターを作成します。

    1. 名前: フィルターの簡単な名前。Erratas untill YYYY-MM-DD と入力します。
    2. コンテンツタイプ: フィルターに追加するコンテンツタイプのリスト。Erratum - Date and Type を選択します。
    3. 包含タイプ: コンテンツを CV に包含または除外するかを定義するリスト。包含 を選択します。
    4. 説明: フィルターの簡単な説明 (任意)。Include errata products untill YYYY-MM-DD と入力します。
    5. 保存 をクリックします。
    6. On the エラータの日付範囲 画面が表示されます。エラータタイプで セキュリティー機能強化バグ修正 のすべてを選択します。
    7. データタイプ更新日 にチェックを入れます。
    8. 開始日 および 終了日 を入力して、製品に日付のフィルターを設定します。
    9. 保存 をクリックします。
  6. 新バージョンの公開 をクリックします。説明 フィールドにリポジトリーの日付範囲を入力することが推奨されます。Force Yum Metadata Regeneration のチェックは外します。
  7. 保存 をクリックすると、CV バージョンを公開して、エクスポートする準備ができました。

CLI をご利用の場合

  1. hammer content-view create コマンドを使用して、新しい CV を作成します。

    # hammer content-view create \
    --name "Export_CV" \
    --organization "Default Organization"
  2. hammer content-view add-repository コマンドを使用して、CV にリポジトリーを追加します。

    # hammer content-view add-repository \
    --name "Export_CV" \
    --product "Red Hat Satellite" \
    --repository "Red Hat Satellite Tools 6 for RHEL 7 Server RPMs x86_64" \
    --organization "Default Organization"
    # hammer content-view add-repository \
    --name "Export_CV" \
    --product "Red Hat Satellite Capsule" \
    --repository "Red Hat Satellite Capsule Tools 6.2 for RHEL 7 Server RPMs x86_64" \
    --organization "Default Organization"
  3. 新しい CV にフィルターを設定するには、以下を行います。

    1. hammer content-view filter create コマンドを実行して、エラータ以外のパッケージを含むフィルターを作成します。

      # hammer content-view filter create \
      --content-view "Export_CV" \
      --inclusion true \
      --name "Non-errata_Products" \
      --type rpm \
      --original-packages true \
      --organization "Default Organization"
    2. hammer content-view filter create コマンドを使用して、エラータパッケージを含むフィルターを作成します。

      # hammer content-view filter create \
      --content-view "Export_CV" \
      --inclusion true \
      --name "Erratas until YYYY-MM-DD" \
      --type erratum \
      --organization "Default Organization"
    3. hammer content-view filter rule create コマンドを使用して、日付範囲を定義するルールを作成します。

      # hammer content-view filter rule create \
      --content-view "Export_CV" \
      --content-view-filter "Erratas until YYYY-MM-DD" \
      --end-date YYYY-MM-DD \
      --types security,enhancement,bugfix \
      --organization "Default Organization"
  4. hammer content-view publish コマンドを使用して CV バージョンを公開して、エクスポートする準備ができました。--description オプションの下で、リポジトリーの日付範囲を入力することが推奨されます。

    # hammer content-view publish \
    --name "Export_CV" \
    --description "Repositories until YYYY-MM-DD" \
    --force-yum-metadata-regeneration true \
    --async \
    --organization "Default Organization"

エクスポートするコンテンツビューバージョンの決定

  1. hammer content-view version list コマンドを使用して、エクスポートするコンテンツビューのバージョンを指定します。以下は例となります。

    $ hammer content-view version list \
    --organization "Default Organization"
    ---|-------------------------------|---------|-----------------------
    ID | NAME                          | VERSION | LIFECYCLE ENVIRONMENTS
    ---|-------------------------------|---------|-----------------------
    3  | Export_CV 2.0                 | 2.0     | Library
    2  | Export_CV 1.0                 | 1.0     | Library
    1  | Default Organization View 1.0 | 1.0     | Library
    ---|-------------------------------|---------|-----------------------

コンテンツビューバージョンのエクスポート:

  1. hammer content-view version export コマンドを使用して、コンテンツビューのバージョンをエクスポートします。

    # hammer content-view version export --id 3

D.6.3. 増分エクスポート

更新時に大容量のリポジトリーのエクスポートを回避するために、増分更新を使用して Satellite Server からの最近の更新だけをエクスポートすることができます。増分更新は、特定の日時に設定した同期イベントを使用して、ローカルのリポジトリーに加えた最近の更新をエクスポートします。

増分更新のリポジトリーを作成するには、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 ではそれほど活用できません。

D.7. コンテンツのインポート

Red Hat Satellite 6.4 では現在、非接続環境にあるアップストリーム Satellite Server からエクスポートされたコンテンツのインポートをサポートしています。この方法は、インターネットアクセスのない非接続の Satellite Server に使用し、サーバー間で DVD などの物理的なメディアによるコンテンツの移動が必要になります。

D.7.1. リポジトリーのインポート

前提条件

リポジトリーのインポート:

  1. リポジトリーに対してデータを、HTTPS ではなく HTTP で利用可能にします。たとえば、エクスポートしたディレクトリーを、ダウンストリームサーバーの /var/www/html/pub/export/ ディレクトリーにコピーします。これにより、デフォルトで HTTP で利用できるようになります。
  2. Web UI で、コンテンツ > サブスクリプション に移動します。
  3. マニフェストの管理 を選択します。
  4. マニフェストのインポート/削除 タブでは、Red Hat CDN URL アドレスフィールドを、エクスポートしたリポジトリー内で、content ディレクトリーおよび listing ファイルの場所を一致させます。

    たとえば、エクスポートしたリポジトリーが /var/www/html/pub/export/Default_Organization-Red_Hat_Enterprise_Linux_7_Server_RPMs_x68_64 にある場合は、URL を http://satellite.example.com/pub/export/Default_Organization-Red_Hat_Enterprise_Linux_7_Server_RPMs_x68_64/Default_Organization/Library/ に設定します。

  5. 保存 をクリックします。
  6. コンテンツ > Red Hat リポジトリー に移動し、エクスポートしたリポジトリーを有効にします。

D.7.2. Red Hat リポジトリーとしてのコンテンツビューのインポート

前提条件

注記

また、カスタムリポジトリーは、カスタム製品、たとえば切断した Satellite にインポートできます。Red Hat コンテンツ配信ネットワーク (CDN) の詳細は『Red Hat Satellite 6 のプランニング』「Content Delivery Network (CDN) Structure」を参照してください。

コンテンツビューのインポート

  1. データを、HTTPS ではなく、HTTP で利用可能にします。たとえば、ダウンストリームサーバーの /var/www/html/pub/export/ ディレクトリーにコピーします。
  2. Web UI で、コンテンツ > サブスクリプション に移動します。
  3. マニフェストの管理 を選択します。
  4. マニフェストのインポート/削除 タブで、Red Hat CDN URL アドレスフィールドを設定し、エクスポートしたコンテンツビューの content ディレクトリーおよび listing ファイルを一致します。

    たとえば、エクスポートした CV が /var/www/html/pub/export/Default_Organization-Export_CV-v1.0 にある場合は、URL を http://satellite.example.com/pub/export/Default_Organization-Export_CV-v1.0/Default_Organization/content_views/Export_CV/1.0/ に設定します。

  5. 保存 をクリックします。
  6. コンテンツ > Red Hat リポジトリー に移動し、エクスポートしたリポジトリーを有効にします。
  7. ダウンストリームサーバーで、hammer organization update コマンドを入力して、組織に新しいリポジトリーを追加します。以下のように、エクスポートしたコンテンツビューのバージョンに対応するディレクトリーにアドレスを設定します。

    $ hammer organization update \
    --name "Default Organization" \
    --redhat-repository-url \
    http://satellite.example.com/pub/export/Default_Organization-Export_CV-v1.0/Default_Organization/content_views/Export_CV/1.0/
    
    Organization updated

D.7.3. 増分インポート

増分更新を同期する場合は、増分同期の設定を使用する必要があります。Satellite Web UI で、リポジトリーの「Mirror on Sync (同期時のミラーリング)」設定を無効にしてから同期するようにしてください。Hammer CLI を使用している場合には、「--incremental」オプションを追加する必要があります。増分同期設定を使用しない場合は、リポジトリーのコンテンツが削除され、増分更新からのコンテンツのみが残ります。誤った上書きを元に戻すには、すべてエクスポートをしてから再度同期する必要があります。