Red Hat Training

A Red Hat training course is available for Red Hat Satellite

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

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

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