Red Hat Training
A Red Hat training course is available for Red Hat Satellite
第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,security
3.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