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