第8章 コンテンツビューの管理

Red Hat Satellite 6 では、コンテンツビューを使用して リポジトリーからカスタマイズリポジトリーを作成します。作成するには、使用するリポジトリーを定義し、特定のフィルターをコンテンツに適用します。このフィルターにはパッケージフィルター、パッケージグループフィルター、およびエラータフィルターが含まれます。コンテンツビューを使用して、特定の環境が使用するソフトウェアのバージョンを定義できます。たとえば、実稼働 環境では古いバージョンのパッケージを含むコンテンツビューを使用し、開発 環境では新しいバージョンのパッケージを含むコンテンツビューを使用するなどです。

コンテンツビューは各環境でリポジトリーセットを作成し、Satellite Server が保存して管理します。アプリケーションライフサイクルの次の環境にコンテンツビューをプロモートすると、それに対応する Satellite Server のリポジトリーがパッケージを更新して公開します。

 開発テスト実稼働

コンテンツビューのバージョンとコンテンツ

バージョン 2 - example_software-1.1-0.noarch.rpm

バージョン 1 - example_software-1.0-0.noarch.rpm

バージョン 1 - example_software-1.0-0.noarch.rpm

テストと実稼働のリポジトリーには example_software-1.0-0.noarch.rpm パッケージが含まれています。コンテンツビューのバージョン 2 を開発環境からテスト環境にプロモートすると、テスト環境のリポジトリーが再作成され、example_software-1.1-0.noarch.rpm パッケージが含まれるようになります。

 開発テスト実稼働

コンテンツビューのバージョンとコンテンツ

バージョン 2 - example_software-1.1-0.noarch.rpm

バージョン 2 - example_software-1.1-0.noarch.rpm

バージョン 1 - example_software-1.0-0.noarch.rpm

こうすることで、システムは特定の環境専用となり、その環境が新しいコンテンツビューを使用する際には更新を受け取ることができます。

スナップショットのフィルタリングと作成に使用するコンテンツビューを作成する一般的なワークフローは、以下の通りです。

  1. コンテンツビューを作成します。
  2. コンテンツビューに使用するリポジトリーと Puppet モジュールを追加します。
  3. 任意で、コンテンツビューのコンテンツを絞り込むフィルターを 1 つまたは複数作成します。
  4. コンテンツビューを公開します。
  5. 任意で、コンテンツビューを別の環境にプロモートします。
  6. コンテンツホストをコンテンツビューにアタッチします。

コンテンツビューでリポジトリーを割り当てないと、/etc/yum.repos.d/redhat.repo ファイルは空になり、登録済みのシステムで更新を受け取ることができません。

ホストを関連付けるコンテンツビューは 1 つだけにすることができます。複数のコンテンツビューにホストを関連付けるには、複合コンテンツビューを作成します。詳細は「複合コンテンツビューの作成」を参照してください。

8.1. コンテンツビューの作成

以下の手順を使用してシンプルなコンテンツビューを作成します。

手順

コンテンツビューを作成するには、以下の手順を行います。

  1. Satellite Web UI で コンテンツ > コンテンツビューに移動して、新規ビューの作成をクリックします。
  2. 名前 フィールドで、ビューの名前を入力します。Red Hat Satellite 6 では、入力した名前から、ラベル フィールドに自動的に入力されます。
  3. 説明 フィールドに、ビューの説明を入力します。
  4. 保存 をクリックして、コンテンツビューを作成します。
  5. リポジトリーの選択 エリアで、コンテンツビューに追加するリポジトリーを選択して、リポジトリーの追加 をクリックします。
  6. 新規バージョンの公開 をクリックし、説明 フィールドに、変更をログに記録するバージョンについての情報を入力します。
  7. 保存をクリックします。
  8. オプション: Yum リポジトリーでメタデータを再生成させるには、コンテンツビューバージョンの アクション リストから、リポジトリーメタデータの再生成 を選択します。

コンテンツビューウィンドウでコンテンツビューを表示できます。コンテンツビューに関する詳細情報を表示するには、コンテンツビュー名をクリックします。

コンテンツビューにホストを登録するには、『ホストの管理』ガイドの「ホストの登録」を参照してください。

CLI をご利用の場合

  1. リポジトリー ID の一覧を取得します。

    # hammer repository list --organization "My_Organization"
  2. コンテンツビューを作成し、リポジトリーに追加します。

    # hammer content-view create \
    --name "Example_Content_View" \
    --description "Example Content View" \
    --repository-ids 1,2 \
    --organization "My_Organization"

    --repository-ids オプションを使用すると、hammer repository list コマンドの出力で ID が分かります。

  3. ビューを公開します。

    # hammer content-view publish \
    --name "Example_Content_View" \
    --description "Example Content View" \
    --organization "My_Organization"

Satellite Server がビューの新バージョンを作成し、ライブラリー環境に公開します。

8.2. モジュールストリームの表示

Satellite で、コンテンツビューにリポジトリーのモジュールストリームを表示できます。

手順

コンテンツビューにリポジトリーのモジュールストリームを表示するには、次の手順を行います。

  1. Satellite Web UI で、コンテンツ > コンテンツビュー に移動して、表示するモジュールが含まれるコンテンツビューを選択します。
  2. バージョン タブをクリックし、表示するコンテンツビューバージョンを選択します。
  3. モジュールストリーム タブをクリックして、コンテンツビューに利用できるモジュールストリームを表示します。
  4. フィルター フィールドを使用して、モジュールのリストを絞り込みます。
  5. モジュールについての情報を表示するには、モジュールをクリックします。

8.3. Puppet モジュールを含むコンテンツビューの作成

以下の手順を使用して、フィルターなしで、リポジトリーを 1 つ使用するコンテンツビューを作成します。

手順

Puppet モジュールありのコンテンツビューを作成するには、以下の手順を行います。

  1. Satellite Web UI で コンテンツ > コンテンツビューに移動して、新規ビューの作成をクリックします。
  2. 名前 フィールドで、ビューの名前を入力します。Red Hat Satellite 6 では、入力した名前から、ラベル フィールドに自動的に入力されます。
  3. 説明 フィールドに、ビューの説明を入力します。
  4. 保存をクリックします。
  5. リポジトリーの選択 エリアで、コンテンツビューに追加するリポジトリーを選択して、リポジトリーの追加 をクリックします。
  6. Puppet モジュール タブで 新規モジュールの追加 をクリックします。
  7. 追加するモジュールを探し、バージョンの選択 をクリックします。
  8. 最新を使用 のエントリーに移動し、アクション コラムの バージョンの選択 をクリックします。
  9. 公開するには、バージョン タブをクリックし、新規バージョンの公開 をクリックします。説明 フィールドに、変更をログに記録する説明を入力し、保存 をクリックします。

コンテンツビューにホストを登録するには、『ホストの管理』ガイドの「ホストの登録」を参照してください。

8.4. コンテンツビューのプロモート

以下の手順を使用して、異なるライフサイクル環境全体に、コンテンツビューをプロモートします。

コンテンツビュープロモーションのパーミッション要件

環境にコンテンツビューをプロモートするために、管理者以外のユーザーには以下の 2 つのパーミッションが必要になります。

  1. promote_or_remove_content_views
  2. promote_or_remove_content_views_to_environment

promote_or_remove_content_views パーミッションで、ユーザーがプロモートできるコンテンツビューを制限します。

promote_or_remove_content_views_to_environment パーミッションで、コンテンツビューのプロモート先となる環境を制限します。

上記のパーミッションを使用すると、指定の環境に指定のコンテンツビューをプロモートし、それ以外の環境にはプロモートできないように、ユーザーパーミッションを割り当てることができます。たとえば、テスト環境へのプロモーションはできるが、実稼働環境にはできないようにユーザーを制限できます。

コンテンツビューをプロモートできるようにするには、ユーザーに両パーミッションを割り当てる必要があります。

手順

コンテンツビューをプロモートするには、以下の手順を行います。

  1. Satellite Web UI で、コンテンツ > コンテンツビュー に移動して、プロモートするコンテンツビューを選択します。
  2. コンテンツビューの バージョン タブをクリックします。
  3. プロモートするバージョンを選択し、アクション 列で、プロモート をクリックします。
  4. コンテンツビューをプロモートする環境を選択し、バージョンのプロモート をクリックします。
  5. プロモート ボタンを再度クリックします。今度は テスト 環境を選択して バージョンのプロモート をクリックします。
  6. 最後に プロモート ボタンを再度押します。Production 環境を選択し、バージョンのプロモート をクリックします。

これでこのコンテンツビューのリポジトリーが全環境に表示されます。

CLI をご利用の場合

  • コンテンツビューのプロモートには、毎回 hammer content-view version promote を使用します。

    # hammer content-view version promote \
    --content-view "Database" \
    --version 1 \
    --to-lifecycle-environment "Development" \
    --organization "My_Organization"
    # hammer content-view version promote \
    --content-view "Database" \
    --version 1 \
    --to-lifecycle-environment "Testing" \
    --organization "My_Organization"
    # hammer content-view version promote \
    --content-view "Database" \
    --version 1 \
    --to-lifecycle-environment "Production" \
    --organization "My_Organization"

    これで Database のコンテンツが全環境で利用可能になります。

コンテンツビューにホストを登録するには、『ホストの管理』ガイドの「ホストの登録」を参照してください。

8.5. 複合コンテンツビューの概要

複合コンテンツビューは、複数のコンテンツビューのコンテンツを組み合わせます。たとえば、オペレーティングシステムとアプリケーションの管理に別々のコンテンツビューを使用していたとします。複合コンテンツビューを使用して、この 2 つのコンテンツビューのコンテンツを新規リポジトリーに統合できます。元のコンテンツビューのリポジトリーはそのまま存在し、統合したコンテンツには新規リポジトリーを使用します。

さまざまなデータベースサーバーをサポートするアプリケーションを開発する場合には、example_application は次のように表示されます。

example_software

アプリケーション

データベース

オペレーティングシステム

4 つの異なるコンテンツビューの例:

  • Red Hat Enterprise Linux (オペレーティングシステム)
  • PostgreSQL (データベース)
  • MariaDB (データベース)
  • example_software (アプリケーション)

以前のコンテンツビューから、2 つの複合コンテンツビューを作成できます。

PostgreSQL データベースの複合コンテンツビューの例:

複合コンテンツビュー 1: PostgreSQL の example_software

example_software (アプリケーション)

PostgreSQL (データベース)

Red Hat Enterprise Linux (オペレーティングシステム)

MariaDB の複合コンテンツビューの例:

複合コンテンツビュー 2: MariaDB の example_software

example_software (アプリケーション)

MariaDB (データベース)

Red Hat Enterprise Linux (オペレーティングシステム)

これで各コンテンツビューは別個に管理して公開されます。アプリケーションのバージョンを作成すると、複合コンテンツビューの新バージョンを公開することになります。複合コンテンツビューの作成時に、自動公開 オプションを選択することも可能です。自動公開オプションを選択して、複合コンテンツビューに含まれるコンテンツビューが再公開されると、自動的に複合コンテンツビューが再公開されます。

リポジトリーの制限事項

複合コンテンツビューは、各リポジトリーで 1 つしか許可されません。たとえば、同じリポジトリーを使用したコンテンツビューを 2 つ追加しようとすると、Satellite Server はエラーをレポートします。

8.6. 複合コンテンツビューの作成

手順

複合コンテンツビューを作成するには、以下の手順を行います。

  1. Satellite Web UI で コンテンツ > コンテンツビューに移動して、新規ビューの作成をクリックします。
  2. 名前 フィールドで、ビューの名前を入力します。Red Hat Satellite 6 では、入力した名前から、ラベル フィールドに自動的に入力されます。
  3. 説明 フィールドに、ビューの説明を入力します。
  4. 複合ビュー? チェックボックスを選択して、複合コンテンツビューを作成します。
  5. オプション: コンテンツビューが再公開されると複合コンテンツビューが自動的に再公開されるようにするには、自動公開 チェックボックスを選択します。
  6. 保存をクリックします。
  7. コンテンツビューの追加 エリアで、複合コンテンツビューに追加するコンテンツビューを選択して、Add Content Views をクリックします
  8. Publish New Version をクリックして、複合コンテンツビューを公開します。説明 フィールドに説明を入力し、保存 をクリックします。
  9. プロモート をクリックし、複合コンテンツビューをプロモートするライフサイクル環境を選択し、説明を入力して、バージョンのプロモート をクリックします。

CLI をご利用の場合

  1. 複合コンテンツビューを作成する前に、既存のコンテンツビューのバージョン ID を一覧表示します。

    # hammer content-view version list \
    --organization "My_Organization"
  2. 新しい複合コンテンツビューを作成し、--component-ids オプションを使用して、コンテンツビューバージョン ID のコンマ区切りのリストを追加します。--auto-publish オプションを yes に設定すると、複合コンテンツビューに含まれるコンテンツビューが再公開されると、自動的に複合コンテンツビューが再公開されます。

    # hammer content-view create \
    --composite \
    --auto-publish yes \
    --name "Example_Composite_Content_View" \
    --description "Example Composite Content View" \
    --component-ids Content_View_Version_IDs \
    --organization "My_Organization"
  3. 複合コンテンツビューを公開します。

    # hammer content-view publish \
    --name "Example_Composite_Content_View" \
    --description "Initial version of Composite Content View" \
    --organization "My_Organization"
  4. 複合コンテンツビューを全環境にプロモートします。

    # hammer content-view version promote \
    --content-view "Example_Composite_Content_View" \
    --version 1 \
    --to-lifecycle-environment "Development" \
    --organization "My_Organization"
    # hammer content-view version promote \
    --content-view "Example_Composite_Content_View" \
    --version 1 \
    --to-lifecycle-environment "Testing" \
    --organization "My_Organization"
    # hammer content-view version promote \
    --content-view "Example_Composite_Content_View" \
    --version 1 \
    --to-lifecycle-environment "Production" \
    --organization "My_Organization"

8.7. コンテンツフィルターの概要

コンテンツビューでは、フィルターを使って特定の RPM コンテンツを追加したり制限したりします。フィルターを使用しないと、選択したリポジトリーからのすべてのコンテンツが含まれてしまいます。

コンテンツフィルターには、次の 2 種類があります。

表8.1 フィルタータイプ

フィルタータイプ説明

包含

コンテンツなしの状態から開始し、選択したリポジトリーから追加するコンテンツを選択します。このフィルターを使用して、複数のコンテンツアイテムを組み合わせます。

除外

選択したリポジトリーからのコンテンツがすべてある状態から開始し、除外するコンテンツを選択します。リポジトリーのほとんどのコンテンツを使用するものの、ブラックリスト化されたパッケージなど、特定のパッケージは除外する場合にこのフィルターを使用します。このフィルターでは、選択したコンテンツ以外、リポジトリーにあるコンテンツすべてを使用します。

包含と除外のフィルターの組み合わせ

包含と除外のフィルターの組み合わせを使用してコンテンツビューを公開すると、最初に包含フィルターが適用され、次に除外フィルターが適用されます。この場合には、先に、含めるコンテンツを選択してから、このサブセットから除外するコンテンツを選択することになります。

コンテンツタイプ

また、フィルターの対象となるコンテンツには以下の 4 つのタイプがあります。

表8.2 コンテンツタイプ

コンテンツタイプ説明

パッケージ

名前とバージョン番号に基づいてパッケージをフィルタリングします。

パッケージグループ

パッケージグループ別に、パッケージをフィルタリングします。パッケージグループの一覧は、コンテンツビューに追加されたリポジトリー別になっています。

エラータ - ID 別

フィルターに追加する特定のエラータを選択します。エラータ一覧は、コンテンツビューに追加されたリポジトリー別になっています。

エラータ - 日付およびタイプ別

フィルターに追加する発行済みまたは更新済みの日付範囲およびエラータタイプ (バグ修正、機能強化、またはセキュリティー) を選択します。

パッケージの依存関係の解決とフィルター

フィルターは、フィルター内に記載されているパッケージの依存関係を解決するものではありません。フィルターにパッケージの依存関係を追加してください。必要な依存関係の判定には、テストが必要になる場合があります。

8.8. コンテンツフィルターの例

カスタムコンテンツフィルターをビルドするには、以下のいずれかの例の手順に従います。

例 1

ベースの Red Hat Enterprise Linux パッケージでリポジトリーを作成します。このフィルターでは、Red Hat Enterprise Linux リポジトリーがコンテンツビューに追加されている必要があります。

フィルター:

  • 包含タイプ: 組み込み
  • コンテンツタイプ: パッケージグループ
  • フィルター: Base パッケージグループのみを選択します。

例 2

セキュリティーアップデートを除く、特定日以降の全エラータを除外するリポジトリーを作成します。これは、重要なセキュリティーアップデートは即座に適用する必要があるが、その他のシステムアップデートは定期的に実行する場合に便利です。このフィルターでは、Red Hat Enterprise Linux リポジトリーをコンテンツビューに追加しておく必要があります。

フィルター:

  • 包含タイプ: 除外
  • コンテンツタイプ: エラータ - 日付およびタイプ別
  • フィルター: バグ修正機能強化のエラータタイプのみを選択し、セキュリティーの選択は解除します。日付タイプ更新日に設定します。エラータを制限する日付を開始日に設定します。終了日は空白にして、セキュリティー以外の新たなエラータにフィルターが適用されないようにします。

例 3

例 1 と例 2 の組み合わせで、オペレーティングシステムパッケージのみが必要で、最近のバグ修正と機能強化エラータを除外します。この場合には、同一のコンテンツビューにアタッチされた 2 つのフィルターが必要です。コンテンツビューは組み込みフィルターを最初に適用してから、除外フィルターを適用します。

フィルター 1:

  • 包含タイプ: 組み込み
  • コンテンツタイプ: パッケージグループ
  • フィルター: Base パッケージグループのみを選択します。

フィルター 2:

  • 包含タイプ: 除外
  • コンテンツタイプ: エラータ - 日付およびタイプ別
  • フィルター: バグ修正機能強化のエラータタイプのみを選択し、セキュリティーの選択は解除します。日付タイプ更新日に設定します。エラータを制限する日付を開始日に設定します。終了日は空白にして、セキュリティー以外の新たなエラータにフィルターが適用されないようにします。

コンテンツフィルターの機能例については、How do content filters work in Satellite 6 を参照してください。

8.9. コンテンツフィルターの作成

以下の手順を使用して、コンテンツフィルターを作成します。フィルターをビルドする方法の例については、「コンテンツフィルターの例」を参照してください。

手順

コンテンツフィルターを作成するには、以下の手順を行います。

  1. Satellite Web UI で、コンテンツ > コンテンツビュー に移動して、コンテンツビューを選択します。
  2. Yum コンテンツ > フィルターに移動し、新規フィルターをクリックします。
  3. 名前 フィールドに、フィルターの名前を入力します。
  4. コンテンツタイプ の一覧から、絞り込むコンテンツタイプを選択します。新しいフィルターのコンテンツタイプに選択した内容に応じて、異なるオプションが表示されます。
  5. 包含タイプ リストから、包含 または 除外 を選択します。
  6. 説明 フィールドに、フィルターの説明を入力し、保存 をクリックします。
  7. コンテンツタイプ に入力した内容に応じて、必要なフィルターを作成するルールを追加します。
  8. 影響のあるリポジトリー タブをクリックして、どのリポジトリーがこのフィルターを使用するかを選択します。
  9. 新規バージョンの公開 をクリックして、フィルタリングされたリポジトリーを公開します。説明 フィールドに変更の説明を入力し、保存 をクリックします。

このコンテンツビューを全環境にプロモートできます。

CLI をご利用の場合

  1. フィルターをコンテンツビューに追加します。--inclusion false オプションを使用して、フィルターを除外フィルターに設定します。

    # hammer content-view filter create \
    --name "Errata Filter" \
    --type erratum --content-view "Example_Content_View" \
    --description "My latest filter" \
    --inclusion false \
    --organization "My_Organization"
  2. フィルターにルールを追加します。

    # hammer content-view filter rule create \
    --content-view "Example_Content_View" \
    --content-view-filter "Errata Filter" \
    --start-date "YYYY-MM-DD" \
    --types enhancement,bugfix \
    --date-type updated \
    --organization "My_Organization"
  3. コンテンツビューを公開します。

    # hammer content-view publish \
    --name "Example_Content_View" \
    --description "Adding errata filter" \
    --organization "My_Organization"
  4. ビューを各環境にプロモートします。

    # hammer content-view version promote \
    --content-view "Example_Content_View" \
    --version 1 \
    --to-lifecycle-environment "Development" \
    --organization "My_Organization"
    # hammer content-view version promote \
    --content-view "Example_Content_View" \
    --version 1 \
    --to-lifecycle-environment "Testing" \
    --organization "My_Organization"
    # hammer content-view version promote \
    --content-view "Example_Content_View" \
    --version 1 \
    --to-lifecycle-environment "Production" \
    --organization "My_Organization"