Red Hat Training

A Red Hat training course is available for Red Hat Satellite

第2章 組織、ロケーション、リポジトリーの管理

hammer を使用して、組織、ロケーション、リポジトリーの作成、編集、管理を行うことができます。以下の手順を Web UI で行う場合は『コンテンツ管理ガイド』Managing Organizations および Importing Red Hat Content を参照してください。

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_labelsubscription-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

2.1.2. Hammer コマンドで組織の特定

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

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

1 つの組織を管理することが多い場合は、これをデフォルトとして設定できます。詳しい方法は「デフォルトの組織の設定」を参照してください。

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

サブスクリプションマニフェストにより、Red Hat カスタマーポータルから Satellite Server にサブスクリプションが移行されます。まず『コンテンツ管理ガイド』「サブスクリプションマニフェストの作成」の説明通りに、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 リポジトリーを一度同期します。

$ 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_intervalhourlydaily、または 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 イメージ) を含むディレクトリーへのパスに置きかえます。