第7章 コンテンツビューの作成
Red Hat Satellite 6 では、コンテンツビューを使用して Definitive Media Library (DML) のコアリポジトリーからカスタマイズリポジトリーを作成します。使用するリポジトリーを定義し、特定のフィルターをコンテンツに適用することで、これが作成されます。このフィルターにはパッケージフィルター、パッケージグループフィルター、およびエラータフィルターが含まれます。コンテンツビューは、特定の環境が使用するソフトウェアのバージョンを定義する方法として使用されます。前章でも説明したように、実稼働環境では古いバージョンのパッケージを含むコンテンツビューが使用されている間、開発環境では新しいバージョンのパッケージを含むコンテンツビューが使用されることがあります。
コンテンツビューは各環境にまたがるリポジトリーセットを作成し、Satellite Server がこれを保存、管理します。アプリケーションライフサイクルのある環境から次の環境にコンテンツビューをプロモートすると、それに対応する Satellite Server 上のリポジトリーがパッケージを更新、公開します。例えば、Exampleware パッケージが含まれているコンテンツビューを使用するとします。
開発 | テスト | 実稼働 | |
---|---|---|---|
コンテンツビューのバージョンとコンテンツ |
バージョン 2 - exampleware-1.1-0.noarch.rpm |
バージョン 1 - exampleware-1.0-0.noarch.rpm |
バージョン 1 - exampleware-1.0-0.noarch.rpm |
テストと実稼働のリポジトリーには、exampleware-1.0-0.noarch.rpm
パッケージが含まれています。コンテンツビューのバージョン 2 を開発からテスト環境にプロモートすると、テスト環境のリポジトリーが再生成され、exampleware-1.1-0.noarch.rpm
パッケージが含まれるようになります。
開発 | テスト | 実稼働 | |
---|---|---|---|
コンテンツビューのバージョンとコンテンツ |
バージョン 2 - exampleware-1.1-0.noarch.rpm |
バージョン 2 - exampleware-1.1-0.noarch.rpm |
バージョン 1 - exampleware-1.0-0.noarch.rpm |
こうすることで、システムは特定の環境専用となり、その環境が新バージョンのコンテンツビューを使用する際には更新を受け取ることができます。
本章では、異なるタイプのコンテンツビューの作成方法と、これに各種フィルターを適用する方法について説明します。
7.1. シンプルなコンテンツビューの作成
この例では、リポジトリー 2 つとフィルターなしというシンプルなコンテンツビューを作成します。リポジトリーは、Red Hat Enterprise Linux リポジトリーと Satellite Tools リポジトリーになります。このコンテンツビューには Red Hat Enterprise Linux の全 RPM が含まれるので、公開には数分かかる場合があります。
Web UI をご利用の場合
コンテンツ > コンテンツビュー に移動し、新規ビューの作成 をクリックします。ビューの詳細 のフォームが表示されます。以下の情報を入力します。
-
名前 - ビューの簡単な名前。
Base
と入力します。 - ラベル - ビューの内部 ID。Red Hat Satellite 6 では、名前 に入力した内容に基づいてこのフィールドに値が自動的に入力されます。
-
説明 - ビューの簡単な説明。
Base operating system
と入力します。 - 複合ビュー - 複合コンテンツビューを使用するかどうかを定義します。チェックを外しておきます。
保存 をクリックします。
これで新規コンテンツビューのエントリーが作成され、リポジトリーを追加することができます。Red Hat Enterprise Linux 7 Server RPMs (Kickstart RPMs ではありません) と Red Hat Satellite Tools のリポジトリーを選択し、リポジトリーの追加 をクリックします。これでコンテンツビューにこれらのリポジトリーから全パッケージが追加されます。
これでコンテンツビューを公開する準備ができました。バージョン に移動し、新規バージョンの公開 をクリックします。Satellite Server が新規バージョン (バージョン 1) についての詳細を提供し、説明 にこのバージョンについての説明が入力できます。ここには、新規コンテンツビューの変更を記録しておくことができます。Initial content view for our operating system
と入力し、保存 をクリックします。
Satellite Server がビューの新バージョンを作成し、ライブラリー環境に公開します。
CLI をご利用の場合
リポジトリー ID の一覧を取得します。
# hammer repository list --organization "ACME"
この例では、2 つのリポジトリーはそれぞれ ID に 1 と 2 を使用しています。
ID | 名前 |
---|---|
1 |
Red Hat Enterprise Linux 7 Server RPMs x86_64 7Server |
2 |
Red Hat Satellite Tools 6.2 (RHEL 7 Server RPM x86_64 向け) |
コンテンツビューを作成し、リポジトリーに追加します。
# hammer content-view create \ --name "Base" \ --description "Base operating system" \ --repository-ids 1,2 \ --organization "ACME"
ビューを公開します。
# hammer content-view publish \ --name "Base" \ --description "Initial content view for our operating system" \ --organization "ACME"
Satellite Server がビューの新バージョンを作成し、ライブラリー環境に公開します。
7.2. Puppet モジュールを含むコンテンツビューの作成
この例では、リポジトリー 1 つとフィルターなしというコンテンツビューを作成します。リポジトリーは、PostgreSQL リポジトリーになります。
Web UI をご利用の場合
コンテンツ > コンテンツビュー に移動し、新規ビューの作成 をクリックします。ビューの詳細 のフォームが表示されます。以下の情報を入力します。
-
名前 - ビューの簡単な名前。
Database
と入力します。 - ラベル - ビューの内部 ID。Red Hat Satellite 6 では、名前 に入力した内容に基づいてこのフィールドに値が自動的に入力されます。
-
説明 - ビューの簡単な説明。
PostgreSQL Database
と入力します。 - 複合ビュー - 複合コンテンツビューを使用するかどうかを定義します。チェックを外しておきます。
保存 をクリックします。
これで新規コンテンツビューのエントリーが作成されます。PostgreSQL のリポジトリーを選択し、リポジトリーの追加 をクリックします。これでコンテンツビューに PostgreSQL リポジトリーから全パッケージが追加されます。
Puppet モジュール に移動し、新規モジュールの追加 をクリックします。これでインポート済みの Puppet モジュールが表示されます。postgresql
モジュールまでスクロールし、バージョンの選択 をクリックします。
最新を使用 のエントリーをスクロールし、アクション コラムの バージョンの選択 をクリックします。
Puppet モジュールがコンテンツビューに追加されました。新バージョンを公開します。
バージョン に移動し、新規バージョンの公開 をクリックします。説明 に Initial RPMs and Puppet module for database
と入力し、保存 をクリックします。
Satellite Server がビューの新バージョンを作成し、ライブラリー環境に公開します。
CLI をご利用の場合
リポジトリー ID の一覧を取得します。
# hammer repository list --organization "ACME"
必要になるのは PostgreSQL RPM リポジトリーのみで、Puppet モジュールリポジトリーは必要ありません。この例では、PostgreSQL RPMs の ID に 4 を使用します。
ID | 名前 |
---|---|
4 |
PostgreSQL 9.5 |
コンテンツビューを作成し、リポジトリーに追加します。
# hammer content-view create \ --name "Database" --description "PostgreSQL Database" \ --repository-ids 4 \ --organization "ACME"
ビューを公開します。
# hammer content-view publish \ --name "Database" \ --description "Initial RPMs and Puppet module for database" \ --organization "ACME"
Satellite Server がビューの新バージョンを作成し、ライブラリー環境に公開します。
7.3. コンテンツビューのプロモート
Satellite Server はここまでに 2 つのコンテンツビューを公開し、ライブラリー環境でリポジトリーが利用可能になっています。この内の 1 つのコンテンツビューをプロモートしてリポジトリーが他の環境で利用可能になるようにしましょう。
管理者以外のユーザーは環境にコンテンツビューをプロモートするために、以下の 2 つのパーミッションが必要になります。
-
promote_or_remove_content_views
-
promote_or_remove_content_views_to_environment
.
promote_or_remove_content_views
パーミッションは、ユーザーがプロモートできるコンテンツビューを制限します。
promote_or_remove_content_views_to_environment
パーミッションは、コンテンツビューのプロモート先となる環境を制限します。
これらのパーミッションを使用すると、どのユーザーがどのコンテンツビューをどの環境にプロモートできるか、またはできないかということを指定できます。例えば、テスト環境へのプロモーションはできるが、実稼働環境にはできない、という制限を設定できます。こうすることで、複数レベルの認証が提供されます。
あるユーザーがコンテンツビューをプロモートできるようになるには、この両方のパーミッションを割り当てる必要があります。
Web UI をご利用の場合
Database コンテンツビューの バージョン 画面を開いていることを確認します。バージョンテーブルの バージョン 1.0 で、アクションコラムにある プロモート をクリックします。プロモーション対象を選択することができる画面が開きます。Development 環境を選択し、バージョンのプロモート をクリックします。数分でプロモーションが完了します。
プロモート ボタンを再度クリックします。今度は Testing 環境を選択して バージョンのプロモート をクリックします。
プロモート ボタンを再度クリックします。Production 環境を選択して バージョンのプロモート をクリックします。
これでこのコンテンツビューのリポジトリーが全環境に表示されます。
CLI をご利用の場合
hammer content-view version promote
を毎回使用してコンテンツビューをプロモートします。
# hammer content-view version promote \ --content-view "Database" \ --version 1 \ --to-lifecycle-environment "Development" \ --organization "ACME" # hammer content-view version promote \ --content-view "Database" \ --version 1 \ --to-lifecycle-environment "Testing" \ --organization "ACME" # hammer content-view version promote \ --content-view "Database" \ --version 1 \ --to-lifecycle-environment "Production" \ --organization "ACME"
これで Database のコンテンツが全環境で利用可能になります。
7.4. コンテンツフィルターの定義
コンテンツビューでは、フィルターを使って特定の RPM コンテンツを含めたり制限したりします。フィルターを使用しないと、選択したリポジトリーからのすべてのものを含めることになってしまいます。
コンテンツフィルターは以下のいずれかのタイプになります。
- 組み込み - ビューに組み込むコンテンツを定義します。このフィルターの動作は、コンテンツなしから始まり、選択したリポジトリーから追加するコンテンツを選択する、という流れになります。複数のコンテンツアイテムを組み合わせる場合には、このフィルターを使用します。
- 除外 - ビューから除外するコンテンツを定義します。このフィルターの動作は、選択したリポジトリーからのすべてのコンテンツから始まり、除外するコンテンツを選択する、という流れになります。リポジトリーのほとんどのコンテンツを使用したいものの、ブラックリスト化されたパッケージなど、特定のパッケージを除外したい場合にこのフィルターを使用します。このフィルターでは、リポジトリーで選択したコンテンツ以外のすべてのコンテンツを使用します。
組み込みと除外のフィルターの組み合わせを使用してコンテンツビューを公開すると、最初に組み込みフィルターが適用され、次に除外フィルターが適用されます。この場合、組み込むコンテンツを選択し、このサブセットから除外するコンテンツを選択することになります。
また、フィルターの対象となるコンテンツには以下の 4 タイプがあります。
- パッケージ - 名前とバージョンに基づいてパッケージにフィルターを適用します。
- パッケージグループ - フィルターに追加するパッケージグループを選択します。パッケージグループ一覧は、コンテンツビューに追加されたリポジトリーに基づきます。
- エラータ - ID 別 - フィルターに追加する特定のエラータを選択します。エラータ一覧は、コンテンツビューに追加されたリポジトリーに基づきます。
- エラータ - 日付およびタイプ別 - フィルターに追加する発行済みまたは更新済みエラータの日付範囲およびタイプ (バグ修正、機能強化、またはセキュリティー)を選択します。
フィルターは、フィルター内に記載されているパッケージの依存関係を解決するものではありません。フィルターにパッケージの依存関係を追加してください。必要な依存関係の判定には、テストが必要になる場合があります。
コンテンツフィルターの使用例を見ていきましょう。
例 1
ベースの Red Hat Enterprise Linux パッケージでリポジトリーを作成します。このフィルターでは、Red Hat Enterprise Linux リポジトリーがコンテンツビューに追加されている必要があります。
フィルター:
- 包含タイプ: 組み込み
- コンテンツタイプ: パッケージグループ
- フィルター: Base パッケージグループのみを選択します。
例 2
セキュリティーアップデートを除く、特定日以降の全エラータを除外するリポジトリーを作成します。重要なセキュリティーアップデートは即座に適用すべきですが、これらを除いて定期的にシステムアップデートを実行する場合などにこれは便利です。このフィルターでは、Red Hat Enterprise Linux リポジトリーがコンテンツビューに追加されている必要があります。
フィルター:
- 包含タイプ: 除外
- コンテンツタイプ: エラータ - 日付およびタイプ別
- フィルター: バグ修正 と 機能強化 のエラータタイプのみを選択し、セキュリティー は選択解除します。日付タイプ を 更新日 に設定します。開始日 をエラータを制限する日付に設定します。終了日 は空白にしてセキュリティー以外の新たなエラータがフィルターされないようにします。
例 3
例 1 と例 2 の組み合わせで、ベース OS パッケージのみが必要ですが、最近のバグ修正と機能強化エラータを除外します。この場合、同一のコンテンツビューに 2 つのフィルターが適用されている必要があります。コンテンツビューは組み込みフィルターを最初に処理してから、除外フィルターを適用します。
フィルター 1:
- 包含タイプ: 組み込み
- コンテンツタイプ: パッケージグループ
- フィルター: Base パッケージグループのみを選択します。
フィルター 2:
- 包含タイプ: 除外
- コンテンツタイプ: エラータ - 日付およびタイプ別
- フィルター: バグ修正 と 機能強化 のエラータタイプのみを選択し、セキュリティー は選択解除します。日付タイプ を 更新日 に設定します。開始日 をエラータを制限する日付に設定します。終了日 は空白にしてセキュリティー以外の新たなエラータがフィルターされないようにします。
コンテンツフィルターの機能例については、以下のアーティクルを参照してください: "How do content filters work in Satellite 6"
7.5. コンテンツフィルターの作成
本ガイドのシナリオでは、ACME のベースオペレーティングシステムで特定日以降のエラータアイテムを制限するコンテンツフィルターを作成します。
Web UI をご利用の場合
コンテンツ > コンテンツビュー に移動し、Base
コンテンツビューを選択します。Yum コンテンツ > フィルター に移動し、新規フィルター をクリックします。以下の詳細を入力します。
-
名前 -
Errata Filter
- コンテンツタイプ: エラータ - 日付およびタイプ別
- 包含タイプ: 除外
-
説明 -
Exclude errata items from the last year, with the exception of security updates
(セキュリティー更新以外で、昨年からのエラータアイテムを除外)
保存 をクリックします。
エラータの日付範囲 画面が表示されます。ここでは、エラータのタイプと日付の範囲が選択できます。機能強化 と バグ修正 のみを選択します。
[ ] セキュリティー [X] 機能強化 [X] バグ修正
日付タイプ では 発行日 (エラータの発行日) または 更新日 (エラータの最終更新日) を選択します。エラータが作成後に更新されていない場合は、発行日 と 更新日 は同じになります。発行日 では、エラータアイテムは発行日でフィルタリングされるだけで、そのエラータになされた更新は除外されないことに注意してください。
開始日 では、1 年前の今日の日付を選択します。
終了日 は空白にしておきます。
保存 をクリックします。
このフィルターを使用するリポジトリーを指定することもできます。影響するリポジトリー タブを選択してリポジトリーを指定します。この例では、フィルターで使用するリポジトリーは 1 つのみです。
これでフィルターが完成しました。新規バージョンの公開 をクリックして、完成したリポジトリーを公開します。バージョンの詳細 では 説明 に Adding errata filter
と入力します。保存 をクリックします。
コンテンツビューが公開されると、コンテンツ コラムのパッケージとエラータ (セキュリティーエラータを除く) 数が公開前のリポジトリーと比べて少なくなります。これは、フィルターが昨年からのセキュリティー以外のエラータを正常に除外したことを意味します。
このコンテンツビューを 開発、テスト、実稼働 の各環境に プロモート します。
CLI をご利用の場合
フィルターをコンテンツビューに追加します。--inclusion false
オプションを使ってフィルターを除外フィルターに設定します。
# hammer content-view filter create \ --name "Errata Filter" \ --type erratum --content-view "Base" \ --description "Exclude errata items from the last year, with the exception of security updates" \ --inclusion false \ --organization "ACME"
フィルターにルールを追加します。
# hammer content-view filter rule create \ --content-view "Base" \ --content-view-filter "Errata Filter" \ --start-date "2015-01-01" \ --types enhancement,bugfix \ --date-type updated \ --organization "ACME"
コンテンツビューを公開します。
# hammer content-view publish \ --name "Base" \ --description "Adding errata filter" \ --organization "ACME"
ビューを各環境にプロモートします。
# hammer content-view version promote \ --content-view "Base" \ --version 1 \ --to-lifecycle-environment "Development" \ --organization "ACME" # hammer content-view version promote \ --content-view "Base" \ --version 1 \ --to-lifecycle-environment "Testing" \ --organization "ACME" # hammer content-view version promote \ --content-view "Base" \ --version 1 \ --to-lifecycle-environment "Production" \ --organization "ACME"
7.6. 複合コンテンツビューの定義
複合コンテンツビューは、複数のコンテンツビューからコンテンツを組み合わせます。例えば、ベース OS とアプリケーションの管理に別々のコンテンツビューを使用していたとします。複合コンテンツビューを使用すると、この 2 つのコンテンツビューのコンテンツを新たなリポジトリーに統合できます。元のコンテンツビューのリポジトリーはそのまま存在しますが、組み合わされたコンテンツには新規リポジトリーが使用されます。
本ガイドのシナリオでは、企業が異なるデータベースサーバーをサポートするアプリケーションを開発しているとします。一般的なアプリケーションスタックは以下のようになります。
Exampleware Stack |
---|
アプリケーション |
データベース |
オペレーティング・システム |
この企業が 以下の4 つの個別コンテンツビューを開発するとします。
- Red Hat Enterprise Linux (オペレーティングシステム)
- PostgreSQL (データベース)
- MariaDB (データベース)
- Exampleware (アプリケーション)
すると、次に 2 つの複合コンテンツビューを作成できます。1 つ目には PostgreSQL データベースを使います。
複合コンテンツビュー 1 - PostgreSQL 上の Exampleware |
---|
Exampleware (アプリケーション) |
PostgreSQL (データベース) |
Red Hat Enterprise Linux (オペレーティングシステム) |
もう 1 つには MariaDB を使います。
複合コンテンツビュー 2 - MariaDB 上の Exampleware |
---|
Exampleware (アプリケーション) |
MariaDB (データベース) |
Red Hat Enterprise Linux (オペレーティングシステム) |
これで各コンテンツビューは別個に管理、公開されます。アプリケーションスタックの新バージョンを作成すると、複合コンテンツビューの新バージョンを公開することになります。
複合コンテンツビューは、各リポジトリーで 1 つしか許可されません。例えば、あるリポジトリーを使用したコンテンツビュー 2 つを含めようとすると、Satellite Server はエラーをレポートします。
7.7. 複合コンテンツビューの作成
既存のコンテンツビュー 2 つを組み合わせたコンテンツビューを ACME 用に作成します。
Web UI をご利用の場合
コンテンツ > コンテンツビュー に移動して 新規ビューの作成 をクリックします。以下の詳細を入力します。
-
名前 -
Stack
-
説明 -
A stack that includes a base operating system and a database
- 複合ビュー? - チェックを入れます。
複合コンテンツビュー用のコンテンツビュー一覧が表示されます。Base と Database の両方のコンテンツビューを選択します。Base コンテンツビューには 2 つのバージョンが含まれているので、どちらかを選択します。ここでは、エラータフィルターが含まれているバージョン 2 を選択します。コンテンツビューとバージョンを選択したら、コンテンツビューの追加 をクリックします。
新バージョンの公開 をクリックして、複合コンテンツビューを公開します。説明 に Initial version of Stack
と記入して 保存 をクリックします。
公開が完了すると、コンテンツ コラムに含まれた全コンテンツビューのパッケージ、エラータ、Puppet モジュールカウントがレポートされます。
この複合コンテンツビューを 開発、テスト、実稼働 の各環境に プロモート します。
通常のコンテンツビューと同じように、複合コンテンツビューもアプリケーションライフサイクルの各環境で公開、プロモートされていることが確認できます。
CLI をご利用の場合
複合コンテンツビューを作成する前に、既存のコンテンツビューのバージョン ID が必要になります。
# hammer content-view version list \ --full-results true \ --organization "ACME"
本シナリオでは、Database v1.0 のバージョン ID は 5 で、Base v2.0 のバージョン ID は 6 になります。Stack
という名前の新規の複合コンテンツビューを作成し、--component-ids
オプションでバージョン ID を渡します。
# hammer content-view create \ --composite \ --name "Stack" \ --description "A stack that includes a base operating system and a database" \ --component-ids 4,14 \ --organization "ACME"
複合コンテンツビューを公開します。
# hammer content-view publish \ --name "Stack" \ --description "Initial version of Stack" \ --organization "ACME"
複合コンテンツビューを全環境にプロモートします。
# hammer content-view version promote \ --content-view "Stack" \ --version 1 \ --to-lifecycle-environment "Development" \ --organization "ACME" # hammer content-view version promote \ --content-view "Stack" \ --version 1 \ --to-lifecycle-environment "Testing" \ --organization "ACME" # hammer content-view version promote \ --content-view "Stack" \ --version 1 \ --to-lifecycle-environment "Production" \ --organization "ACME"
7.8. 環境とコンテンツビューへのシステム登録
コンテンツビューが利用可能になったので、システムを環境とビューに登録することができます。
7.8.1. RHEL システムをサブスクリプションマネージャーに登録する
まず、テスト用の Red Hat Enterprise Linux 7 クライアントシステムに root
ユーザーとしてログインし、Satellite Server 用のコンシューマー RPM をダウンロードします。これはホストの pub
ディレクトリーに配置されています。例えば、ホスト名が satellite6.example.com
の Satellite Server の場合、以下のコマンドを登録するクライアントで実行します。
[root@client ~]# rpm -Uvh http://satellite6.example.com/pub/katello-ca-consumer-latest.noarch.rpm
以下のコマンドを実行して、Satellite Server 上の環境とコンテンツビューを一覧表示します。
[root@client ~]# subscription-manager environments --org "acme"
クライアントシステムを Satellite Server 上の環境とコンテンツビューに登録します。
[root@client ~]# subscription-manager register --org "acme" --environment "Development/Stack"
クライアントシステムは、ACME 組織に所属する Satellite Server ユーザーのユーザー名とパスワードを尋ねます。別の方法では、アクティベーションキーを使用してシステムを登録することもできます。これについては、8章アクティベーションキーの管理 で説明しています。
クライアントシステムは、これで開発環境にある Stack コンテンツビューから公開されたリポジトリーを使用します。
7.8.2. Atomic Host をサブスクリプションマネージャーに登録する
以下の手順では、サブスクリプションマネージャーで Atomic Host を登録する方法を説明します。
Satellite Server から katello-rhsm-consumer
を取得します。
[root@atomic_client ~]# wget http://satellite.example.com/pub/katello-rhsm-consumer
katello-rhsm-consumer
のモードを実行可能に変更します。
[root@atomic_client ~]# chmod +x katello-rhsm-consumer
katello-rhsm-consumer
を実行します。
[root@atomic_client ~]# ./katello-rhsm-consumer
Red Hat サブスクリプションマネージャー
に登録します。
[root@atomic_client ~]# subscription-manager register
Atomic はアプライアンスとして機能するので、これに katello-agent
をインストールすることは推奨されません。
7.9. 章の概要
本章では、コンテンツビューを使用して DML の既存コンテンツから独自のリポジトリーをカスタマイズする方法について説明しました。以下の方法がありました。
- RPM のある基本的なコンテンツビューの作成
- RPM と Puppet モジュールのあるコンテンツビューの作成
- コンテンツフィルターを使った RPM コンテンツの組み込みと除外
- 複数のコンテンツビューを統合した複合コンテンツビュー
- システムの Satellite Server への登録と特定のコンテンツビューからのコンテンツの消費
次章では、アクティベーションキーと、それを使ったシステム登録およびアプリケーションライフサイクル環境からのコンテンツへのアクセスについて説明します。