第3章 コンテンツのライフサイクルの管理
このセクションは、hammer を使用してコンテンツビューを作成し、ライフサイクルの環境全体でプロモートする方法を説明します。
3.1. ライフサイクル環境の作成 リンクのコピーリンクがクリップボードにコピーされました!
ライフサイクル環境は、コンテンツライフサイクルのステージを表します。本セクションでは、hammer を使用してライフサイクル環境を表示、作成する方法を説明します。デフォルトでは、組織ごとにライブラリー環境が存在します。以下の構文を使用して、新しいライフサイクル環境を作成します。
hammer lifecycle-environment create \ --name env_name \ --description "env_description" \ --organization-label org_label \ --prior prior_env_name
$ 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
$ hammer lifecycle-environment create \
--name Development \
--description "Initial testing" \
--organization $ORG \
--prior Library
--prior を使用して、Development をベースにして別のライフサイクル環境を作成することができます。
既存のライフサイクル環境を表示するには、以下のコマンドを実行します。
hammer lifecycle-environment list --organization-label org_label
$ hammer lifecycle-environment list --organization-label org_label
上記のコマンドの出力は以下のようになります。
ライフサイクル環境に関するコマンドの情報は、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
$ 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
$ 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 list を実行して、--component-ids オプションの ID を検索します。--auto-publish オプションを yes に設定すると、含まれるコンテンツビューが再発行される際に、自動で複合コンテンツビューが再発行されます。
コンテンツビューに追加可能なコンテンツビューは、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 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
$ 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 repository list を実行してリポジトリー ID を検索します。「emac」で始まる名前のパッケージを除外するルールを作成して、以下のようにフィルターに追加します。
hammer content-view filter rule create \ --name "emacs*" \ --organization $ORG \ --content-view cv-rhel7-server \ --content-view-filter exclude-emacs
$ 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
$ hammer content-view filter rule list \
--content-view cv-rhel7-server \
--content-view-filter exclude-emacs \
--organization $ORG
例3.5 コンテンツビュー用のパッケージのフィルタリング (日付別のエラータの絞込)
以下の例では、cv-rhel7-server コンテンツビューから特定日以前に発表されたエラータを除外するフィルターを作成する方法を示します。エラータ管理の情報は「8章エラータの管理」を参照してください。以下のようにコンテンツビューのフィルターを作成します。
以下のように「emac」で始まる名前のエラータを除外するルールを作成し、フィルターに追加します。
3.2.2. コンテンツビューの Puppet モジュールへの追加 リンクのコピーリンクがクリップボードにコピーされました!
Puppet モジュールをコンテンツビューに追加するには、最初にこのモジュールをカスタムの製品内の Puppet リポジトリーにアップロードします。「カスタムリポジトリーの作成」のコマンドを使用して、リポジトリーに製品を作成し、そのリポジトリーに Puppet モジュールをアップロードします。
Puppet モジュールをコンテンツビューに追加するには、以下のコマンドを実行します。
hammer content-view puppet-module add \ --content-view cv_name \ --name module_name
$ 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
$ wget -O /tmp/puppetlabs-concat-1.2.5.tar.gz https://forgeapi.puppetlabs.com /v3/files/puppetlabs-concat-1.2.3.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow ACME-puppet 製品配下に Puppet リポジトリーを作成して、このリポジトリーにモジュールをアップロードします (この例では、リポジトリー ID は 6 です)。
hammer product create \ --name "ACME-puppet" \ --organization $ORG
$ hammer product create \ --name "ACME-puppet" \ --organization $ORGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow hammer repository upload-content \ --organization $ORG \ --product ACME-puppet \ --id 6 \ --path /tmp/puppetlabs-concat-1.2.5.tar.gz
$ hammer repository upload-content \ --organization $ORG \ --product ACME-puppet \ --id 6 \ --path /tmp/puppetlabs-concat-1.2.5.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow パラメーター
id、name、authorを使用してコンテンツビューにモジュールを追加します。正確な値は、以下のコマンドで確認できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテンツビューにモジュールを追加するには、以下を実行します。
hammer content-view puppet-module add \ --name concat \ --content-view cv-rhel7-server \ --organization $ORG
$ hammer content-view puppet-module add \ --name concat \ --content-view cv-rhel7-server \ --organization $ORGCopy to Clipboard Copied! Toggle word wrap Toggle overflow モジュールが正常に追加されたかどうかを検証するには、以下のコマンドを実行します。
hammer content-view puppet-module list \ --content-view cv-rhel7-server \ --organization $ORG
$ hammer content-view puppet-module list \ --content-view cv-rhel7-server \ --organization $ORGCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. Docker イメージのコンテンツビューへの追加 リンクのコピーリンクがクリップボードにコピーされました!
以下のように、Docker イメージを専用のリポジトリーに直接アップロードできます。
hammer repository upload-content --path image_archive --id repo_id
$ 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 publish \
--id cv_ID \
--organization-label org_label \
--async
hammer content-view list コマンドを実行し、公開するコンテンツビューのcv_ID を確認します。公開したコンテンツビューはライブラリー環境で利用できます。コンテンツビューのステータスを確認するには、以下のコマンドを実行します。
hammer content-view info --id cv_ID
$ 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
$ hammer content-view version promote \
--content-view cv_name \
--organization-label org_label \
--to-lifecycle-environment env_name
ここで、env_name は移行後のライフサイクル環境名を示します。
例3.7 ライフサイクル環境全体でのコンテンツビューのプロモート
以下の Bash スクリプトは、ACME 組織の全ライフサイクル環境のライブラリーから、選択したコンテンツビューをプロモートします。
コンテンツビューが正しくプロモートされていることを確認するには、以下のコマンドを実行します。
hammer content-view version info --id 1
$ 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 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
$ 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 organization listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下を実行して、ホストが登録されているコンテンツビューとライフサイクル環境を特定します。
hammer host info --name auth01.example.com
$ hammer host info --name auth01.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次にコンテンツビューの現在のバージョンを特定します (ここでは、コンテンツビューの名前は RHEL7_Infra です)。
hammer content-view info --name "RHEL7_Infra" --organization $ORG
$ hammer content-view info --name "RHEL7_Infra" --organization $ORGCopy to Clipboard Copied! Toggle word wrap Toggle overflow ライブラリー にあるアプリケーションエラータの一覧に適用するエラータ ID を確認します。
hammer erratum list --content-view-version-id 4 --organization $ORG hammer host errata list --host auth01.example.com
$ hammer erratum list --content-view-version-id 4 --organization $ORG $ hammer host errata list --host auth01.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow