第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 コマンドは、organization、organization-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> は hourly、daily または 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> はリポジトリーのコンテンツタイプを指定しており、
yum、puppet、dockerの中から 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 イメージ) を含むディレクトリーへのパスに置き換えます。