Red Hat Training

A Red Hat training course is available for Red Hat Satellite

第2章 組織、場所、リポジトリーの管理

hammer を使用して、組織、場所、リポジトリーの作成、編集、管理をすることができます。Web UI を使用した場合の以下の手順は、Red Hat Satellite サーバー管理ガイド「組織、ロケーション、およびライフサイクル環境の設定」を参照してください。

2.1. 組織

Red Hat Satellite の組織は、Satellite デプロイメント内にあるシステム、コンテンツ、その他の機能を分離して集めたものです。本章では、hammer を使用した組織の作成、変更の方法を説明します。

2.1.1. 組織の作成

以下のコマンドを使用して組織を作成します。

$ hammer organization create \
--name "<org_name>" \
--label "<org_label>" \
--description "<org_description>"

ここで、

  • <org_name> は組織の名前に置き換えます。このパラメーターは必須です。
  • <org_label>subscription-manager など、コマンドラインアプリケーションで使用する組織のラベルに置き換えます。ラベルには、ホワイトスペースを含めることはできず、後ほど変更することもできません。指定されていない場合は、ラベルは組織名から自動的に生成されます (ホワイトスペースはアンダースコアに置き換えられます)。
  • <org_description> は、組織の簡単な説明に置き換えます。このパラメーターは必須ではありませんが、多数の組織を管理しやすくなります。

組織の作成時に全設定を行うことができます (hammer organization create --help を実行してオプションを表示します)。また、hammer organization update コマンドを使用して既存の組織を変更することもできます。

例2.1 ACME の組織の作成および更新

以下の例では、ACME という名前の組織の作成方法を示します。

$ ORG="ACME"
$ hammer organization create \
--name $ORG \
--description "Example organization"

このコマンドは、組織にコンピューとリソースを割り当てます。

$ hammer organization update \
--name $ORG \
--compute-resource-ids 1
注記

Satellite Server で実行可能なタスクの多くは、組織固有のものです。Hammer コマンドは、organizationorganization-label または organization-id オプションを使用して、3 つの方法で組織を特定することができます。組織 ID を検索するには、以下のコマンドを使用します。

$ hammer organization list

組織名が長い場合には、シェル変数に保存することを検討してください。Hammer コマンドではこの変数を使用できます。以下に例を示します。

$ ORG = "Red Hat Enterprise Linux Developer Team"
$ hammer product list --organization $ORG

本ガイドの例ではこのアプローチを使用します。

単一の組織を管理することが多い場合には、以下のように、デフォルトのパラメーターとして ID を保存してください。

$ hammer defaults add --param-name organization_id --param-value 1

上記の設定では、組織固有のコマンドは --organization-id 1 が指定されていることを前提とするため、これ以上入力の必要はありません。

2.1.2. マニフェストのアップロード

サブスクリプションマニフェストを使用して、Red Hat カスタマーポータルから Satellite Server にサブスクリプションを移行します。まず、『Red Hat Satellite Content Management Guide』の説明通りに、Red Hat カスタマーポータルでマニフェストを作成し、そのマニフェストを以下のように組織にアップロードします。

$ hammer subscription upload \
--organization-label <org_label> \
--file <path_to_manifest>

例2.2 マニフェストの ACME 組織へのアップロード

以下の例では、サブスクリプションマニフェストファイルを ACME 組織にアップロードする方法を説明します (組織名がシェル変数に保存されていることを前提とします)。

$ hammer subscription upload --organization $ORG --file /tmp/manifest.zip

マニフェストでインポートしたサブスクリプションを表示するには、以下を実行します。

$ hammer subscription list --organization $ORG

2.2. 場所

Red Hat Satellite の場所は、物理的な場所を示すデフォルトの設定を集めたものです。本セクションでは、hammer を使用した場所の作成方法を説明します。

2.2.1. ロケーションの作成

以下のコマンドを使用して場所を作成します。

$ hammer location create --name <location_name>

例2.3 スクリプトを使用した複数の場所の作成

以下の Bash スクリプトでは、3 つの場所 (ロンドン、ミュンヘン、ボストン) を作成して、これらの場所を ACME 組織に割り当てます。

ORG="ACME"
LOCATIONS="london munich boston"

for LOC in ${LOCATIONS}
do
  hammer location create --name "${LOC}"
  hammer location add-organization --name "${LOC}" --organization "${ORG}"
done

hammer location --help を実行して考えられる場所関連の操作を表示します。

2.3. リポジトリー

リポジトリーは、コンテンツコレクション用のストレージを提供します。本セクションでは、hammer を使用してリポジトリーを有効化、同期する方法を説明します。

2.3.1. リポジトリーの有効化

Red Hat リポジトリーを有効化する前に、リポジトリーの名前、リポジトリーが提供する製品の名前、ベースアーキテクチャー、リリースバージョンを知っておく必要があります。以下のコマンドを使用して、リポジトリーを有効化します。

$ hammer repository-set enable \
--organization-label <org_label> \
--product "<product_name>" \
--basearch "<base_architecture>" \
--releasever "<release_version>" \
--name "<repository_name>"

例2.4 Red Hat Enterprise Linux リポジトリーの有効化

以下のコマンドは、組織用に Red Hat Enterprise Linux 7 Server リポジトリーを有効化します。

$ hammer repository-set enable \
--organization $ORG \
--product "Red Hat Enterprise Linux Server" \
--basearch "x86_64" \
--releasever "7Server" \
--name "Red Hat Enterprise Linux 7 Server (RPMs)"

hammer repository-set --help を実行して、利用可能なリポジトリー関連の操作を表示します。また、hammer repository --help も参照してください。

2.3.2. リポジトリーの同期

リポジトリーを同期すると、Red Hat カスタマーポータルから Satellite Server にコンテンツをプルします。リポジトリーを同期するには、リポジトリーの名前と製品名を指定する必要があります。

$ hammer repository synchronize \
--product "<product_name>" \
--name "<repo_name>" \
--organization-label <org_label> \
--async

コンテンツビューを作成した場合に、単一の組織内に同じ名前を持つリポジトリーが複数存在する可能性がある点に注意してください。--id オプションを使用して、同期するリポジトリーを特定します (hammer repository list を実行してリポジトリー ID を検索します)。

例2.5 Red Hat Enterprise Linux リポジトリーの同期

以下のコマンドは、組織内の Red Hat Enterprise Linux 7 Server リポジトリーを 1 度同期します。

$ hammer repository synchronize \
--product "Red Hat Enterprise Linux Server" \
--name "Red Hat Enterprise Linux 7 Server (RPMs)" \
--organization $ORG \
--async

タスク ID は、上記のコマンドを実行後に表示されます。

Repository is being synchronized in task 640bb71f-0ce5-40a3-a675-425a4acacceb

タスクの進捗を表示するには以下を実行します。

$ hammer task progress --id 640bb71f-0ce5-40a3-a675-425a4acacceb

最初の同期を完了した後に、リポジトリーは Satellite Server にミラーリングされたリポジトリー一覧に追加されます。以下のコマンドを実行して一覧を表示します。

$ hammer repository list --organization $ORG

以下のように製品に含まれる全リポジトリーを同期することもできます。

$ hammer product synchronize \
--organization-label <org_label> \
--name "<product_name>" \
--async

--async オプションを指定すると、リポジトリーの同期はバックグラウンドで実行され、並行して複数のリポジトリーを有効化、同期することも可能です。

例2.6 ACME 組織の全リポジトリーの同期

以下の Bash スクリプトは、ACME 組織内の全リポジトリーを同期します。

ORG="ACME"

for i in $(hammer --csv repository list --organization $ORG | grep -vi '^ID' | awk -F, {'print $1'})
do
  hammer repository synchronize --id ${i} --organization $ORG --async
done

2.3.3. 同期プランの作成

Red Hat Satellite の製品は、同期プロセスの最小単位として機能するリポジトリーの集まりです。指定の間隔で、選択した製品のリポジトリーを自動的に更新するように同期プランを作成することができます。

同期プランを定義するには、以下のコマンドを実行します。

$ hammer sync-plan create \
--name "<sync_plan_name>" \
--enabled=true \
--interval <repetition_interval> \
--organization-label <org_label> \
--sync-date "<initial_sync>"

<repetition_interval>hourlydaily または weekly に置き換えます。また、<initial_sync> は、初回同期の日時 (「YYYY-MM-DD HH:MM:SS」形式) に置き換えます。

例2.7 同期プランの作成

以下のコマンドは、2016 年 1 月 15 日から、毎日午前 3 時に実行される ACME 組織の日次の同期スケジュールを作成します。

$ hammer sync-plan create \
--name "daily sync at 3 a.m." \
--enabled=true \
--interval daily \
--organization $ORG \
--sync-date "2016-01-15 03:00:00"

同期プランと製品を関連付けるには、以下のコマンドを発行します。

$ hammer product set-sync-plan \
--organization-label <org_label> \
--name "<product_name>" \
--sync-plan "<sync_plan_name>"

例2.8 複数製品への同期プランの割り当て

以下の Bash スクリプトは、最低でも 1 回同期され、少なくとも 1 つのリポジトリーが含まれる ACME 組織の製品を選択し、「daily sync at 3 a.m」という同期プランに割り当てます。

ORG="ACME"
SYNC_PLAN="daily sync at 3 a.m."

for i in $(hammer --csv product list --organization $ORG --per-page 999 | grep -vi '^ID' | grep -vi not_synced | awk -F, {'{ if ($5!=0) print $1}'})
do
  hammer product set-sync-plan --sync-plan $SYNC_PLAN --organization $ORG --id $i
done

スクリプトの実行後には、以下のコマンドを発行して、どの製品が同期プランに割り当てられたのかを確認します。

$ hammer product list --organization $ORG --sync-plan "daily sync at 3 a.m."

選択した組織で利用可能な同期プランを表示するには、以下のコマンドを実行します。

$ hammer sync-plan list --organization-label <org_label>

製品および同期プランとの連携方法に関する詳しい情報は hammer sync-plan --help および hammer product --help を参照してください。

2.3.4. カスタムリポジトリーの作成

Red Hat のリポジトリーを有効化すると、適切な製品が自動的に作成されます。カスタムのパッケージのリポジトリーを有効化するには、最初にこのリポジトリーの製品を手動で作成する必要があります。

以下のコマンドを使用してカスタムの製品を作成します。

$ hammer product create --name "<product_name>" --organization-label <org_label>

以下のコマンドは、カスタムの製品の下に新規リポジトリーを作成します。

$ hammer repository create \
--name "<repo_name>" \
--organization-label <org_label> \
--product "<product_name>" \
--content-type <cont_type> --publish-via-http true \
--url "<repo_url>"

例で使用している値は独自の値で置き換えてください。

  • 特に、<cont_type> はリポジトリーのコンテンツタイプを指定しており、yumpuppetdocker の中から 1 つ選択してください。
  • <repo_url> は、利用可能なリポジトリーの URL を指定します。--publish-via-http が有効化されている場合のみ、有効です。

カスタムのリポジトリーにパッケージをアップロードするには、以下のコマンドを実行します。

$ hammer repository upload-content \
--product "<product_name>" \
 --organization-label <org_label> \
 --id "<repo_id>" \
--path <path_to_dir>

<path_to_dir> は、カスタムリポジトリーに追加するコンテンツ (RPM パッケージ、Puppet モジュール、Docker イメージ) を含むディレクトリーへのパスに置き換えます。