第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_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
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_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 \ --organization-label org_label \ --id "repo_id" \ --path path_to_dir
path_to_dir は、カスタムリポジトリーに追加するコンテンツ (RPM パッケージ、Puppet モジュール、Docker イメージ) を含むディレクトリーへのパスに置きかえます。