第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
hammer content-view list コマンドを実行し、公開するコンテンツビューのcv_ID を確認します。公開したコンテンツビューはライブラリー環境で利用できます。コンテンツビューのステータスを確認するには、以下のコマンドを実行します。
$ hammer content-view info --id cv_ID3.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,... \ --organization-id org_ID
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 \ --organization $ORG
上記のコマンドで必要な情報を特定するには、以下の手順を実行します。
組織 ID と名前を検索するには、以下を実行します。
$ hammer organization list
以下を実行して、ホストが登録されているコンテンツビューとライフサイクル環境を特定します。
$ 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-version-id 4 --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.