コンテンツライフサイクル管理

コンテンツライフサイクル管理では運用クライアントを更新する前にパッケージをカスタマイズおよびテストできます。 これは、限られたメンテナンスウィンドウ中に更新を適用する必要がある場合に特に役立ちます。

コンテンツライフサイクル管理では、ソフトウェアチャンネルをソースとして選択し、必要に応じて環境に合わせて調整して、運用クライアントにインストールする前に徹底的にテストすることがでます。

ベンダチャンネルを直接変更することはできませんが、パッケージとカスタムパッチを追加または削除することで、それらのチャンネルのクローンを作成し、クローンを変更することができます。 これらのクローンチャンネルをテストクライアントに割り当てて、クライアントが期待どおりに動作することを確認できます。

デフォルトでは、クローンベンダチャンネルは元のベンダチャンネルと一致し、依存関係を自動的に選択します。 /etc/rhn/rhn.confに次のオプションを追加することにより、クローンチャンネルの自動選択を無効にできます。

java.cloned_channel_auto_selection = false

次に、すべてのテストに合格すると、クローンチャンネルを運用サーバにプロモートできます。

これは、ソフトウェアチャンネルがライフサイクルで移動できる一連の環境を通じて実現されます。 ほとんどの環境ライフサイクルには、少なくともテスト環境と運用環境が含まれていますが、必要な数の環境を持つことができます。

このセクションでは、基本的なコンテンツライフサイクル手順、および使用可能なフィルタについて説明します。 より具体的な例については、コンテンツライフサイクル管理の例を参照してください。

1. コンテンツライフサイクルプロジェクトの作成

コンテンツライフサイクルを設定するには、プロジェクトから開始する必要があります。 プロジェクトでは、ソフトウェアチャンネルソース、パッケージの検索に使用されるフィルタ、およびビルド環境について定義します。

プロシージャ: コンテンツライフサイクルプロジェクトの作成
  1. SUSE Manager Web UIで、コンテンツライフサイクル  プロジェクトに移動し、プロジェクトの作成をクリックします。

  2. ラベル]フィールドに、プロジェクトのラベルを入力します。 [ラベル]フィールドには、小文字、数字、ピリオド、ハイフン、およびアンダースコアのみを入力できます。

  3. 名前]フィールドに、プロジェクトのわかりやすい名前を入力します。

  4. 作成ボタンをクリックして、プロジェクトを作成し、プロジェクトページに戻ります。

  5. Attach/Detach Sources(ソースの割り当て/取り外し)をクリックします。

  6. ソース]ダイアログで、ソースタイプを選択し、プロジェクトの ベースチャンネルを選択します。 チャンネルが必須か推奨されるかに関する情報を含め、選択したベースチャンネルで使用可能な子チャンネルが表示されます。

  7. 必要な子チャンネルをオンにし、保存をクリックして、プロジェクトページに戻ります。 選択したソフトウェアチャンネルが表示されているはずです。

  8. フィルタの割り当て/取り外しをクリックします。

  9. フィルタ]ダイアログで、プロジェクトに割り当てるフィルタを選択します。 新しいフィルタを作成するには、新しいフィルタの作成をクリックします。

  10. 環境の追加をクリックします。

  11. 環境ライフサイクル]ダイアログで、最初の環境に、名前、ラベル、および説明を付けて、保存をクリックします。 [ラベル]フィールドには、小文字、数字、ピリオド、ハイフン、およびアンダースコアのみを入力できます。

  12. ライフサイクルのすべての環境が完了するまで、環境の作成を続行します。 作成時に[前に挿入]フィールドで環境を選択することで、ライフサイクルの環境の順序を選択できます。

2. フィルタタイプ

SUSE Managerでは、プロジェクトの構築に使用するコンテンツを制御するために、さまざまなタイプのフィルタを作成できます。 フィルタを使用すると、ビルドに含めるパッケージまたはビルドから除外するパッケージを選択できます。 たとえば、すべてのカーネルパッケージを除外したり、一部のパッケージの特定のリリースのみを含めることができます。

サポートされているフィルタは次のとおりです。

  • パッケージのフィルタリング

    • by name(名前別)

    • by name, epoch, version, release, and architecture(名前、エポック、バージョン、リリース、およびアーキテクチャ別)

    • by provided name(指定された名前別)

  • パッチフィルタリング

    • by advisory name(アドバイザリ名別)

    • by advisory type(アドバイザリタイプ別)

    • by synopsis(概要別)

    • by keyword(キーワード別)

    • by date(日付別)

    • by affected package(影響を受けるパッケージ別)

  • モジュール

    • by stream(ストリーム別)

パッケージの依存は、コンテンツのフィルタリング中には解決されません。

フィルタで使用できるマッチャーは複数あります。 使用できるマッチャーは、選択したフィルタ タイプによって異なります。

使用できるマッチャーは次のとおりです。

  • 含む

  • 一致(正規表現の形式を取る必要があります)

  • 等しい

  • 新しい

  • 新しいか等しい

  • 古いか等しい

  • 古い

  • 新しいか等しい

2.1. フィルタの ruleパラメータ

各フィルタには許可または拒否のいずれかに設定できるruleパラメータがあります。 フィルタは次のように処理されます。

  • パッケージまたはパッチが拒否フィルタを満たす場合は、結果から除外されます。

  • パッケージまたはパッチが許可フィルタを満たす場合は、結果に含まれます(拒否フィルタによって除外された場合でも)。

この動作は、一般的な 拒否 フィルタを使用して多数のパッケージまたはパッチを除外し、特定の 許可 フィルタで特定のパッケージまたはパッチを「チェリーピック」する場合に役立ちます。

コンテンツフィルタは組織内でグローバルなものであり、プロジェクト間で共有できます。

プロジェクトにすでに構築されたソースが含まれている場合、環境を追加すると、既存のコンテンツが自動的に入力されます。 コンテンツは、サイクルの以前の環境から引き出されます(存在していた場合)。 以前の環境がない場合は、プロジェクトソースが再度構築されるまで空のままになります。

3. フィルタテンプレート

いくつかの一般的なシナリオでフィルタの作成を支援するため、SUSE Managerにはフィルタテンプレートが用意されています。 これらのテンプレートを適用すると、特定のユースケースに合わせてカスタマイズされた一連のフィルタを事前に作成できます。

このセクションでは、使用可能なテンプレートとその使用方法について説明します。

3.1. SUSE製品に基づくライブパッチ処理

ライブパッチ処理を含むプロジェクトでは、ライブパッチパッケージのみがクライアントに更新として提供されるように、定期的な将来のカーネルパッケージを除外する必要があります。 一方で、システムの整合性を維持するために、すでにインストールされている通常のカーネルパッケージを含める必要があります。

このテンプレートを適用すると、この動作を実現するために必要な3つのフィルタが作成されます。

  • ベースカーネルバージョンと同じkernel-defaultパッケージを含むパッチを許可する

  • reboot_suggestedキーワードを含むパッチを拒否する

  • installhint(reboot-needed)という名前を提供するパッケージを含むパッチを拒否する

ライブパッチ処理プロジェクトの設定方法の詳細については、administration:content-lifecycle-examples.adoc#exclude-higher-kernel-versionを参照してください。

プロシージャ: テンプレートの適用
  1. SUSE Manager Web UIで、コンテンツライフサイクル  フィルタに移動して、Create Filter(フィルタの作成)をクリックします。

  2. ダイアログで、テンプレートを使用するをクリックします。それに応じて入力が変更されます。

  3. プレフィクス]フィールドに名前のプレフィクスを入力します。 この値は、テンプレートによって作成された個々のフィルタの名前の前に追加されます。 テンプレートがプロジェクトのコンテキストで適用されている場合、このフィールドにはプロジェクトラベルが事前に入力されます。

  4. テンプレート]フィールドで、[SUSE製品に基づくライブパッチ処理]を選択します。

  5. 製品]フィールドで、ライブパッチ処理を設定する製品を選択します。

  6. カーネル]フィールドで、選択した製品で使用可能なバージョンのリストからカーネルバージョンを選択します。以降の通常のカーネルパッチを拒否するフィルタは、このバージョンに基づきます。

  7. 保存をクリックして、フィルタを作成します。

  8. コンテンツライフサイクル  プロジェクトに移動して、プロジェクトを選択します。

  9. フィルタの割り当て/取り外しをクリックします。

  10. 指定したプレフィクスを持つフィルタを3つ選択し、保存をクリックします。

3.2. システムに基づくライブパッチ処理

特定の登録済みシステムにインストールされているカーネルバージョンに基づいてライブパッチ処理プロジェクトを設定する場合、「システムに基づくライブパッチ処理」テンプレートを使用できます。

このテンプレートを適用すると、この動作を実現するために必要な3つのフィルタが作成されます。

  • ベースカーネルバージョンと同じkernel-defaultパッケージを含むパッチを許可する

  • reboot_suggestedキーワードを含むパッチを拒否する

  • installhint(reboot-needed)という名前を提供するパッケージを含むパッチを拒否する

ライブパッチ処理プロジェクトの設定方法の詳細については、administration:content-lifecycle-examples.adoc#exclude-higher-kernel-versionを参照してください。

プロシージャ: テンプレートの適用
  1. SUSE Manager Web UIで、コンテンツライフサイクル  フィルタに移動して、Create Filter(フィルタの作成)をクリックします。

  2. ダイアログで、テンプレートを使用するをクリックします。 それに応じて入力が変更されます。

  3. プレフィクス]フィールドに、名前のプレフィクスを入力します。 この値はテンプレートによって作成されたすべてのフィルタの名前の前に追加されます。 テンプレートがプロジェクトのコンテキストで適用されている場合は、このフィールドにはプロジェクトラベルが事前に入力されます。

  4. テンプレート]フィールドで、[固有のシステムに基づくライブパッチ処理]を選択します。

  5. システム]フィールドで、リストからシステムを選択するか、システム名の入力を開始して、オプションを絞り込みます。

  6. カーネル]フィールドで、選択したシステムにインストールされているバージョンのリストからカーネルバージョンを選択します。 以降の通常のカーネルパッチを拒否するフィルタは、このバージョンに基づきます。

  7. 保存をクリックして、フィルタを作成します。

  8. コンテンツライフサイクル  プロジェクトに移動して、プロジェクトを選択します。

  9. フィルタの割り当て/取り外しをクリックします。

  10. 指定したプレフィクスを持つフィルタを3つ選択し、保存をクリックします。

3.3. デフォルトのAppStreamモジュール

プロジェクトに含まれているモジュラーリポジトリですべてのモジュールを使用できるようにする場合は、このフィルタテンプレートを使用してモジュールを自動的に追加できます。

このテンプレートを適用すると、モジュールごとにAppStreamフィルタとそのデフォルトストリームが作成されます。

このプロセスがプロジェクトのページから実行された場合、フィルタは自動的にプロジェクトに追加されます。追加されない場合は、作成されたフィルタをコンテンツライフサイクル  フィルタに一覧表示し、必要に応じて任意のプロジェクトに追加できます。

個々のフィルタを編集して別のモジュールストリームを選択したり、ターゲットリポジトリからそのモジュールを除外するために完全に削除したりできます。

すべてのモジュールストリームが相互に互換性があるわけではないため、個々のストリームを変更すると、モジュール間依存関係を正常に解決できない可能性があります。 この場合、プロジェクトの詳細ページのフィルタペインに問題を説明するエラーが表示され、すべてのモジュールの選択が互換性を持つようになるまでビルドボタンは無効になります。

Red Hat Enterprise Linux 9以降、モジュールには定義済みのデフォルトストリームがありません。 したがって、Red Hat Enterprise Linux 9のソースでこのテンプレートを使用しても効果はありません。

AppStreamリポジトリをコンテンツライフサイクル管理で設定する方法の詳細については、administration:content-lifecycle-examples.adoc#appstream-filtersを参照してください。

プロシージャ: テンプレートの適用
  1. SUSE ManagerのWeb UIで、Content Lifecycle  Projectsに移動し、プロジェクトを選択します。

  2. フィルタ]セクションで、フィルタの割り当て/取り外しをクリックし、新しいフィルタの作成をクリックします。

  3. ダイアログで、テンプレートを使用するをクリックします。 それに応じて入力が変更されます。

  4. プレフィクス]フィールドに、名前のプレフィクスを入力します。 この値はテンプレートによって作成されたすべてのフィルタの名前の前に追加されます。 テンプレートがプロジェクトのコンテキストで適用されている場合は、このフィールドにはプロジェクトラベルが事前に入力されます。

  5. テンプレート]フィールドで、[デフォルトのAppStreamモジュール]を選択します。

  6. チャンネル]フィールドで、モジュールを取得するモジュラーチャンネルを選択します。このドロップダウンには、モジュラーチャンネルのみが表示されます。

  7. 保存をクリックして、フィルタを作成します。

  8. フィルタ]セクションまでスクロールして、新しく割り当てられたAppStreamフィルタを確認します。

  9. 個々のフィルタを編集/削除して、ニーズに合わせてプロジェクトを調整できます。

4. コンテンツライフサイクルプロジェクトの構築

プロジェクトを作成し、環境を定義し、ソースとフィルタを割り当てたら、初めてプロジェクトを構築できます。

構築によって、割り当てられたソースにフィルタが適用され、プロジェクトの最初の環境にそれらが複製されます。

複数のコンテンツプロジェクトのソースとして同じベンダチャンネルを使用できます。 この場合、SUSE Managerはクローンチャンネルごとに新しいパッチクローンを作成しません。 代わりに、1つのパッチクローンがすべてのクローンチャンネル間で共有されます。 これにより、パッチが撤回された場合やパッチ内のパッケージが変更された場合など、ベンダがパッチを変更すると問題が発生する可能性があります。 コンテンツプロジェクトの1つを構築すると、コンテンツプロジェクトの他の環境や組織内の他のコンテンツプロジェクトチャンネルにチャンネルがある場合でも、クローンパッチを共有するすべてのチャンネルがデフォルトでオリジナルと同期されます。 この動作は、組織の設定で自動パッチ同期をオフにすることで変更できます。 パッチを共有しているすべてのチャンネルのパッチを後で手動で同期するには、ソフトウェア  管理  チャンネルに移動し、同期するチャンネルをクリックして、[同期]サブタブに移動します。 パッチを手動で同期しても、パッチを共有するすべての組織チャンネルに影響します。

プロシージャ: コンテンツライフサイクルプロジェクトの構築
  1. SUSE Manager Web UIで、コンテンツライフサイクル  プロジェクトに移動し、構築するプロジェクトを選択します。

    プロジェクトを構築する前に、利用可能な環境があることを確認してください。

  2. 割り当てられたソースとフィルタを確認し、ビルドをクリックします。

  3. このビルドの変更または更新を説明するバージョンメッセージを提供します。

  4. 環境ライフサイクル ]セクションでビルドの進行状況を監視できます。

ビルドが完了すると、環境バージョンが1つ増え、ソフトウェアチャンネルなどのビルドソースをクライアントに割り当てることができます。

5. 環境のプロモート

プロジェクトが構築されると、構築されたソースを順次、環境にプロモートできます。

プロシージャ: 環境のプロモート
  1. SUSE Manager Web UIで、コンテンツライフサイクル  プロジェクトに移動し、作業するプロジェクトを選択します。

  2. 環境ライフサイクル]セクションで、後継環境にプロモートする環境を見つけ、Promote(プロモート)をクリックします。

  3. 環境ライフサイクル ]セクションでビルドの進行状況を監視できます。

6. 環境にクライアントを割り当てる

コンテンツライフサイクルプロジェクトを構築およびプロモートすると、SUSE Managerはソフトウェアチャンネルのツリーを作成します。 クライアントを環境に追加するには、クライアントの[システムの詳細]ページのソフトウェア  ソフトウェアチャンネルを使用して、ベースソフトウェアチャンネルと子ソフトウェアチャンネルをクライアントに割り当てます。

新たに追加されたクローンチャンネルはクライアントに自動的に割り当てられません。 ソースを追加またはプロモートする場合は、チャンネル割り当てを手動で確認して更新する必要があります。

自動割り当ては、今後のバージョンでSUSE Managerに追加される予定です。