第3章 コンテンツのライフサイクルの管理
このセクションは、hammer を使用してコンテンツビューを作成し、ライフサイクルの環境全体でプロモートする方法を説明します。
3.1. ライフサイクル環境の作成
ライフサイクル環境は、コンテンツライフサイクルのステージを表します。本セクションでは、hammer を使用してライフサイクル環境を表示、作成する方法を説明します。デフォルトでは、組織ごとにライブラリー環境が存在します。以下の構文を使用して、新しいライフサイクル環境を作成します。
$ hammer lifecycle-environment create \ --name <env_name> \ --description "<env_description>" \ --organization-label <org_label> \ --prior <prior_env_name>
例3.1 ライフサイクル環境の作成
以下の例では、ACME 組織のライブラリーをもとに新しい環境を作成する方法を示します (組織名がシェル変数に保存されていることが前提です)。
$ hammer lifecycle-environment create \ --name Development \ --description "Initial testing" \ --organization $ORG \ --prior Library
--prior を使用して Development をもとに別のライフサイクル環境を作成することができます。
既存のライフサイクル環境を表示するには、以下のコマンドを実行します。
$ hammer lifecycle-environment list --organization-label <org_label>上記のコマンドの出力は以下のようになります。
---|-------------|------------ ID | NAME | PRIOR ---|-------------|------------ 2 | Library | 5 | Development | Library 6 | Testing | Development ---|-------------|------------
ライフサイクル環境に関するコマンドの情報は、hammer lifecycle-environment --help を参照してください。
3.2. コンテンツビューの作成
コンテンツビューとは、ライブラリーからのコンテンツのサブセットで、インテリジェントフィルターで作成されます。コンテンツビューは、別の用途で (通常、開発、QA、実稼働環境) コンテンツを利用できるように、ライフサイクル環境に公開、プロモートすることができます。
$ hammer content-view create \ --name <cv_name> \ --repository-ids <repo_ID1>,<repo_ID2>,<repo_ID3> \ --description "<cv_description>" \ --organization-label <org_label>
--repository-ids オプションは、選択したリポジトリーをコンテンツビューに追加して、hammer repository list コマンドを使用して ID を検索します。このオプションを省略して、空のコンテンツビューを作成し、update または add-repository サブコマンドを使用して後ほど変更することもできます。
例3.2 コンテンツビューの作成
以下の例は、ACME 組織の下にコンテンツビューを作成して、3 つのリポジトリーに割り当てます。
$ hammer content-view create \ --name cv-rhel7-server \ --repository-ids 1,2,3 \ --description "Initial CV for RHEL 7" \ --organization $ORG
例3.3 複合コンテンツビューの作成
複合コンテンツビューは、1 つまたは複数のコンテンツビューで構成されます。以下の例は、2 つの既存のコンテンツビューから複合コンテンツビューを作成する方法を示します。
$ hammer content-view create \ --name ccv-rhel7-server-scl \ --description "CCV for RHEL7 and Software Collections" \ --organization $ORG \ --composite --component-ids 2,6
hammer content-view list を実行して、--component-ids オプションの ID を検索します。
コンテンツビューに追加可能なコンテンツビューは、RPM パッケージ、Puppet モジュール、Docker イメージの 3 つです。
3.2.1. リポジトリーのコンテンツビューへの追加
以下のコマンドを使用して既存のコンテンツビューにリポジトリーを追加します。
$ hammer content-view update \ --repository-ids <repo_ID1>,<repo_ID2>... \ --name <cv_name> \ --organization-label <org_label>
上記のコマンドは、複数のリポジトリーからなる空のコンテンツビューを生成するのに便利です。既存のリポジトリーは上書きされるので、コンテンツビューのリポジトリー数を増やすには以下を使用します。
$ hammer content-view add-repository \ --organization-label <org_label> \ --name <cv_name> \ --repository-id <repo_ID>
同様に remove-repository サブコマンドを使用してコンテンツビューからリポジトリーを削除することができます。コンテンツビューのリポジトリーを検査するには hammer content-view info を使用します。
例3.4 コンテンツビューのパッケージのフィルタリング (パッケージの除外)
フィルターを使用すると、リポジトリーからパッケージのサブセットを選択して (除外/包含して) カスタマイズしたコンテンツビューを作成できます。以下の例は、フィルターを作成して cv-rhel7-server コンテンツビューから emacs パッケージを除外する方法を示します。
まず、組織内にコンテンツビューのフィルターを作成します。
$ hammer content-view filter create \ --type rpm \ --name exclude-emacs \ --description "Excluding emacs package" \ --inclusion false \ --organization $ORG \ --repository-ids 1,2,3 \ --content-view cv-rhel7-server
hammer repository list を実行してリポジトリー ID を検索します。「emac」で始まる名前のパッケージを除外するルールを作成して、以下のようにフィルターに追加します。
$ hammer content-view filter rule create \ --name "emacs*" \ --organization $ORG \ --content-view cv-rhel7-server \ --content-view-filter exclude-emacs
上記を実行すると cv-rhel7-server のコンテンツビューを使用したホストは、macs へアクセスできなくなります。複数のルールをフィルターに追加することができます。フィルタリングパラメーターの完全な一覧については hammer content-view rule create --help を参照してください。フィルターに存在するルールを確認するには、以下のコマンドを実行します。
$ hammer content-view filter rule list \ --content-view cv-rhel7-server \ --content-view-filter exclude-emacs \ --organization $ORG
例3.5 コンテンツビュー用のパッケージのフィルタリング (日付別のエラータの絞込)
以下の例では、cv-rhel7-server コンテンツビューから特定の日付以前の発表されたエラータを除外するフィルターを作成する方法を示します。エラータ管理の情報は、8章エラータの管理を参照してください。以下のようにコンテンツビューのフィルターを作成します。
$ hammer content-view filter create \ --type erratum \ --name limit-errata-by-date \ --description "Excluding errata by date" \ --inclusion false \ --organization $ORG \ --repository-ids 1,2,3 \ --content-view cv-rhel7-server
以下のように「emac」で始まる名前のエラータを除外するルールを作成し、フィルターに追加します。
$ hammer content-view filter rule create \
--end-date <YYYY-MM-DD> \
--organization $ORG \
--content-view cv-rhel7-server \
--content-view-filter limit-errata-by-date \
--types enhancement,bugfix,security3.2.2. コンテンツビューへの Puppet モジュールの追加
Puppet モジュールをコンテンツビューに追加するには、最初にこのモジュールをカスタムの製品内の Puppet リポジトリーにアップロードします。「カスタムリポジトリーの作成」からのコマンドを使用して、リポジトリーに製品を作成し、そのリポジトリーに Puppet モジュールにアップロードします。
Puppet モジュールをコンテンツビューに追加するには、以下のコマンドを実行します。
$ hammer content-view puppet-module add \ --content-view <cv_name> \ --name <module_name>
例3.6 Puppet モジュールのコンテンツビューへの追加
以下の例では、外部ソースからの Puppet モジュールをcv-rhel7-server コンテンツビューに追加する方法を示します。
Puppet Forge から concat モジュール (複数のテキストの断片からファイルを構築) をダウンロードします。
$ wget -O /tmp/puppetlabs-concat-1.2.5.tar.gz https://forgeapi.puppetlabs.com /v3/files/puppetlabs-concat-1.2.3.tar.gz
ACME-puppet 製品配下に Puppet リポジトリーを作成して、このリポジトリーにモジュールをアップロードします (この例ではリポジトリー ID は 6 という前提です)。
$ hammer product create \ --name "ACME-puppet" \ --organization $ORG
$ hammer repository create \ --organization $ORG \ --product ACME-puppet \ --name "ACME Puppet Repository" \ --content-type puppet \ --url "https://forge.puppetlabs.com/"
$ hammer repository upload-content \ --organization $ORG \ --product ACME-puppet \ --id 6 \ --path /tmp/puppetlabs-concat-1.2.5.tar.gz
id、nameまたはauthorパラメーターを使用してコンテンツビューにモジュールを追加します。正確な値を見つけ出すには、以下を入力します。$ hammer puppet-module list --organization $ORG ---|--------|------------|-------- ID | NAME | AUTHOR | VERSION ---|--------|------------|-------- 1 | concat | puppetlabs | 1.2.3 ---|--------|------------|--------
コンテンツビューにモジュールを追加するには、以下を実行します。
$ hammer content-view puppet-module add \ --name concat \ --content-view cv-rhel7-server \ --organization $ORG
モジュールが正常に追加されたかどうかを検証するには、以下のコマンドを実行します。
$ hammer content-view puppet-module list \ --content-view cv-rhel7-server \ --organization $ORG
3.2.3. Docker イメージのコンテンツビューへの追加
以下のように、Docker イメージを直接専用のリポジトリーにアップロードできます。
$ hammer repository upload-content --path <image_archive> --id <repo_id>
<image_archive> は、Docker イメージを含むアーカイブへのパスに置き換えます。<repo_id> を使用して Docker のコンテンツタイプのリポジトリーを特定してから、そのリポジトリーをコンテンツビューに追加できます。
3.3. コンテンツビューの公開
コンテンツビューを公開し、表示してホストが利用できるようにします。以下のコマンドを使用して選択したコンテンツビューを公開します。
$ hammer content-view publish \ --id <cv_ID> \ --organization-label <org_label> \ --async
コンテンツビューの <cv_ID> を検索して、hammer content-view list コマンドの出力に公開します。公開されたコンテンツビューはライブラリー環境で利用できます。コンテンツビューのステータスを確認するには、以下のコマンドを実行します。
$ hammer content-view info --id <cv_ID>3.4. コンテンツビューのプロモート
プロモーションとは、別のライフサイクル環境にコンテンツビューを移動する行為のことです。これには以下のコマンドを実行します。
$ hammer content-view version promote \ --content-view <cv_name> \ --organization-label <org_label> \ --to-lifecycle-environment <env_name>
ここでは env_name は移行後のライフサイクル環境名を示します。
例3.7 ライフサイクル環境全体でのコンテンツビューのプロモート
以下のバッシュスクリプトは、ACME 組織のすべてのライフサイクル環境でライブラリーから選択したコンテンツビューをプロモートします。
ORG="ACME"
CV_ID=1
for i in $(hammer --csv lifecycle-environment list --organization $ORG | grep -vi '^ID' | awk -F, {'print $1'} | sort -n)
do
hammer content-view version promote --organization $ORG --to-lifecycle-environment-id $i --id $CV_ID
doneコンテンツビューが正しくプロモートされていることを確認するには、以下のコマンドを実行します。
$ hammer content-view version info --id 1
3.5. コンテンツビューの増分更新
増分更新では、ライフサイクル環境で新規コンテンツビューのバージョンをプロモートする必要なしに、公開されたコンテンツビューを変更できます。増分更新の結果、新規コンテンツビューのマイナーバージョンが作成されます。増分更新は、緊急時に素早く更新するには有用です。エラータ、パッケージ または Puppet モジュールの追加に、増分更新を使用できます。
コンテンツビューに新規パッケージを追加する増分更新を作成するには以下を実行します。
$ hammer content-view version incremental-update \ --content-view-version-id <cv_ID> \ --packages <pkg_name1>,<pkg_name2> \ --lifecycle-environment-ids <env_ID1>, <env_ID2>,...
hammer content view version list の出力でコンテンツビューのバージョン ID を検索します。--packages オプションでパッケージを指定するのではなく、--puppet-modules で Puppet モジュールを、--errata-ids でエラータを追加できます (例3.8「増分更新を使用してコンテンツビューにエラータを追加する手順」を参照します)。増分更新との連携についての情報は hammer content-view version incremental-update --help を実行します。
例3.8 増分更新を使用してコンテンツビューにエラータを追加する手順
以下の例では、コンテンツビューの増分更新を作成して、ホスト (auth01.example.com) にエラータを適用する方法を示します。
$ hammer content-view version incremental-update \ --content-view-version-id 4 \ --errata-ids 8c3801f6-12a7-4a62-83f4-addbb1f34ce6 \ --lifecycle-environments Infrastructure
上記のコマンドで必要な情報を特定するには、以下の手順を実行します。
以下を実行して、ホストが登録されているコンテンツビューとライフサイクル環境を特定します。
$ hammer content-host info --name auth01.example.com --organization $ORG
次にコンテンツビューの現在のバージョンを特定します (コンテンツビューの名前は RHEL7_Infra という前提です)。
$ hammer content-view info --name "RHEL7_Infra" --organization $ORG
ライブラリー にあるアプリケーションエラータの一覧に適用するエラータ ID を特定します。
$ hammer erratum list --content-view "RHEL7_Infra" --organization $ORG $ hammer host errata list --host auth01.example.com

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.