Red Hat Training
A Red Hat training course is available for Red Hat Satellite
スタートガイド
Red Hat Network Satellite を使用したプロビジョニングとデプロイメント
エディッション 2
Red Hat Engineering Content Services
概要
第1章 はじめに
定義
- キックスタート
- ユーザーの介入をほとんどあるいは全く必要としない自動化された方法で Red Hat のシステムをインストールするプロセス。厳密に言えば、キックスタート とは、コンテンツの簡潔な記述とマシンの設定をインストーラーに提供できるようにし、それに基づいて動作を実行する、Anaconda インストールプログラムのメカニズムを指します。この簡潔なシステムの定義は、キックスタートプロファイル (Kickstart profile)と呼ばれています。
- キックスタートプロファイル
- キックスタートファイルは、マシンのキックスタートに必要なすべてのオプションを記載した、テキスト形式のファイルです。これには、パーティショニング情報、ネットワーク設定、インストールするパッケージが含まれます。Satellite の実装は、Cobbler のキックスタートへの機能強化をベースに構築されているため、RHN Satellite では キックスタートプロファイルは従来の Anaconda キックスタートの定義のスーパーセットとなります。キックスタートプロファイルはキックスタートツリーが存在することを前提としています。
- キックスタートツリー
- マシンをキックスタートするのに必要なソフトウェアとサポートファイル。これは、「インストールツリー」とも呼ばれることもあります。通常、これは、特定のリリースで出荷されたインストールメディアから取り出したディレクトリ構造とファイルです。Cobbler の用語では、キックスタートツリーはディストリビューションの一部となっています。
- PXE (Preboot eXecution Environment)
- ターゲットマシン自体の事前設定なしで、電源投入時にベアメタルマシン (通常は物理マシンまたは 実機) のキックスタートを可能にする低レベルのプロトコル。PXE は DHCP サーバーに依存して、ブートストラップサーバーに関する情報 (本書においては、Satellite 5.5 以降のバージョンのインストール) をクライアントに提供します。PXE を使用するには、ターゲットマシンのファームウェアでサポートされている必要があります。PXE は新しい物理マシンのブートや、Satellite に未登録のマシンの再インストールに非常に役立ちますが、PXE なしで仮想化を使用したり、Satellite の機能を再インストールすることも可能です。
プロビジョニングシナリオ
- 新規インストール
- オペレーティングシステムが未インストールのシステム (別名: ベアメタル インストール) のプロビジョニング
- 仮想インストール
- Satellite は、KVM、Xen 完全仮想化ゲスト、および Xen 準仮想化ゲストをサポートしています。
- 再プロビジョニング
- 物理およびゲストシステムは、いずれも、再プロビジョニングが可能です。ただし、同一の Satellite インスタンスに登録されていることを条件とします。「再プロビジョニング」 をご参照ください。
第2章 キックスタート
2.1. 必要なパッケージ
rhn-tools Red Hat Network チャネルから入手できます。
koanspacewalk-koan
rhn-tools チャンネルのクローンを作成することをお勧めします。
kernel と initrd のファイルがキックスタートツリー内の特定の場所にあることを想定しています。ただし、これらの場所は、アーキテクチャによって異なります。以下の表は、それらの異なるロケーションについてまとめたものです。
表2.1 アーキテクチャ別の必要なディストリビューションファイル
| アーキテクチャ | カーネル | 初期 RAM ディスクイメージ |
|---|---|---|
| IBM System z | TREE_PATH/images/kernel.img | TREE_PATH/images/initrd.img |
| PowerPC | TREE_PATH/ppc/ppc64/vmlinuz | TREE_PATH/images/pxeboot/vmlinux |
| その他すべてのアーキテクチャ | TREE_PATH/images/pxeboot/vmlinuz | TREE_PATH/images/pxeboot/initrd.img |
2.2. キックスタートツリー
手順2.1 キックスタートツリーの自動インストール
satellite-sync 介した通常のチャンネル同期の一環として行われます。
- キックスタートのベースとするディストリビューションを選択して、そのディストリビューションのベースチャンネルとそれに対応する RHN ツールのチャンネルを探します。例えば、x86 アーキテクチャを採用した Red Hat Enterprise Linux 5 を使用したい場合、
rhel-i386-server-5チャンネルとそれに対応する RHN Tools チャンネルであるrhn-tools-rhel-i386-server-5が必要になります。 - 接続された Satellite を使用している場合には、
satellite-syncを使ってSatellite サーバーを Red Hat サーバーと直接同期します。Satellite サーバーが接続されていない場合には、Red Hat サーバーから切断されたチャンネルダンプを取得して、それらと同期する必要があります。 - チャンネルを同期すると、そのディストリビューション用の対応するキックスタートツリーが自動的に作成されます。
手順2.2 キックスタートツリーの手動インストール
- インストール ISO をご使用の Satellite Server にコピーして、
/mnt/isoにマウントします。 - ISO のコンテンツをカスタムのロケーションにコピーします。すべてのカスタムディストリビューションで、
/var/satellite内にディレクトリを作成することが推奨されます。例えば、RHEL のベータディストリビューションのコンテンツを/var/satellite/custom-distro/rhel-i386-server-5.3-beta/にコピーします。 - RHN Satellite の Web インターフェースを使用して、カスタムソフトウェアチャンネルを作成します。チャンネル → ソフトウェアチャンネルの管理 → 新しいチャンネルの作成 で、適切な名前とラベルを付けて親チャンネルを作成します。上記で使用した例では、rhel-5.3-beta のラベルを使用します。
rhnpushコマンドを使用して、ソフトウェアパッケージをツリーのロケーションから新規作成されたソフトウェアチャンネルにプッシュします。rhnpush --server=http://localhost/APP -c 'rhel-5.3-beta' \ -d /var/satellite/custom-distro/rhel-i386-server-5.3-beta/Server/
ご使用のディストリビューションによって、ツリー内のサブディレクトリが異なります。- ソフトウェアパッケージがプッシュされたら、
rmコマンドを使用して、ツリーパス内で削除することができます。パッケージは、依然としてチャンネル内の Satellite サーバー上に格納され、ツリー内には必要なくなります。rm /var/satellite/custom-distro/rhel-i386-server-5.3-beta/Server/*.rpm
注記
ソフトウェアパッケージをキックスタートツリー内に残すように選択することもできます。これにより、後日、yumコマンドを使用して、随時インストールできるようになります。 - RHN Satellite Web インターフェースを使用してディストリビューションを作成します。システム → キックスタート → ディストリビューション → 新規のディストリビューションを作成 に進み、適切なラベルとフルツリーパス (例:
/var/satellite/custom-distro/rhel-i386-server-5.3-beta/) を使用して、ディストリビューションを作成します。あらかじめ作成したベースチャンネルと正しいインストーラ生成 (例:Red Hat Enterprise Linux 5) を選択します。作成を完了するには、キックスタートディストリビューションの作成 を選択します。 - 複数の環境とシステムにわたって同一ソフトウェアを維持するには、既存の Red Hat Enterprise Linux ベースチャンネルからの RHN Tools 子チャンネルを新たに作成したベースチャンネルの子チャンネルとしてクローンできます。子チャンネルのクローンが以下の手順で行います。
- RHN Satellite の Web インターフェースで、チャンネル → ソフトウェアチャンネルの管理 → チャンネルのクローン をクリックします。
- Clone From: (クローンする対象) ドロップダウンボックスからクローンする子チャンネルとその状態を選択します。
- チャンネルの作成 をクリックします。
- 必要な情報を記入し、クローンされた子チャンネルの上位になる親チャンネルを選びます。
- チャンネルの作成 をクリックします。

図2.1 キックスタートディストリビューションの作成
2.3. キックスタートのプロファイル
手順2.3 ウィザードを使用したキックスタートプロファイルの作成
- システム → キックスタート → 新規のキックスタートプロフィールを作成 を選択します。
- 適切な ラベル を提供し、希望する ベースチャンネル と キックスタートツリー を選択します。
- キックスタートプロファイルのダウンロードロケーションを選択します。カスタムディストリビューションを使用している場合には、そのツリーのロケーションを URL (HTTP と FTP の両方をサポート) として入力します。それ以外の場合は、デフォルトのオプションを使用します。次へ をクリックして、続行します。
- root のパスワードを入力して、完了 をクリックし、プロファイルの作成を完了します。
- 完全なキックスタートプロファイルをが作成されます。このプロファイルは、キックスタートファイル をクリックすると表示することができます。
手順2.4 raw メソッドを使用したキックスタートプロファイルの作成
- システム → キックスタート → キックスタートファイルをアップロード を選択します。
- 適切な ラベル を提供し、希望する ディストリビューション を選択します。
- 希望する 仮想化タイプ を選択します。仮想化タイプについての詳しい情報は、仮想化タイプ を参照してください。
- 既存のキックスタートファイルがある場合には、ファイルをアップロードします。そうでない場合には、ファイルの内容 テキストボックスにキックスタートプロファイルを書き込みます。スターティングポイントとして使用できる raw キックスタートの例は以下の通りです。
install text network --bootproto dhcp url --url http://$http_server/ks/dist/org/1/ks-rhel-i386-server-5 lang en_US keyboard us zerombr clearpart --all part / --fstype=ext3 --size=200 --grow part /boot --fstype=ext3 --size=200 part swap --size=1000 --maxsize=2000 bootloader --location mbr timezone America/New_York auth --enablemd5 --enableshadow rootpw --iscrypted $1$X/CrCfCE$x0veQO88TCm2VprcMkH.d0 selinux --permissive reboot firewall --disabled skipx key --skip %packages @ Base %post $SNIPPET('redhat_register') - RHN Satellite Sever は、指定されたディストリビューションをキックスタート内の
urlとして処理しないため、url --urlオプションをプロファイルに記載する必要があります。以下は、その例です。url --url http://satellite.example.com/ks/dist/org/1/my_distro
my_distroを ディストリビューションラベルに、1をご使用の組織 ID に置き換えます。 - raw キックスタートプロファイルは、Satellite のホスト名の代わりに、
$http_serverを使用します。これは、キックスタートテンプレートがレンダリングされる際に自動的に記入されます。 redhat_registerスニペットを使用して登録処理が行われます。

図2.2 raw キックスタート
すべてのキックスタートプロファイルには、仮想化タイプが関連付けされます。以下の表に、様々なオプションを簡単にまとめました。
表2.2 仮想化タイプ
| タイプ | 説明 | 用途 |
|---|---|---|
| なし | 仮想化なし | このタイプは、Xen もしくは KVM 以外 (例:VMware、Virtage など) の通常のプロビジョニング、ベアメタルインストール、仮想化インストールに使用します。 |
| KVM 仮想化ゲスト | KVM ゲスト | このタイプは、KVM ゲストのプロビジョニングに使用します。 |
| Xen 完全仮想化ゲスト | Xen ゲスト | このタイプは、Xen ゲストのプロビジョニングに使用します。
注記
このオプションには、ホスト上でのハードウェアサポートが必要ですが、ゲスト上では修正されたオペレーティングシステムは必要ありません。
|
| Xen 準仮想化ゲスト | Xen ゲスト | Xen 準仮想化を使用する仮想ゲストのプロビジョニングに使用します。準仮想化は、最速の仮想化モードです。これには、システム CPU 上の PAE フラグと修正されたオペレーティングシステムが必要です。Red Hat Enterprise Linux 5 は、準仮想化でのゲストをサポートしています。 |
| Xen 仮想化ホスト | Xen ホスト | このタイプは、Xen 準仮想化を使用する仮想ホストのプロビジョニングに使用します。ハードウェアに互換性がある場合には、Xen 準仮想化のゲストとホストがサポートされます。 |
%packages セクションに kernel-xen パッケージが含まれている必要があります
%packages セクションに qemu パッケージが含まれている必要があります。
注記
2.4. テンプレーティング
for ループや if ステートメントなどのフロー制御ステートメントを追加することができます。これは、cheetah ツールを使用して行うことができます。
- 複数のキックスタート間のディスクのパーティショニングセクションなどの、キックスタートの特定のセクションを再利用することができます。
- 複数のキックスタート全体にわたって、一貫して
%postの動作を実行することができます。 - DNS サーバー、Proxy サーバー、Web サーバーといった、複数の種類のサーバーのロール全体にわたってスニペットを定義することができます。例えば、Web サーバーには、以下のようなスニペットが定義されます。
httpd mod_ssl mod_python
Web サーバーのプロファイルを作成したい場合は、キックスタートファイルの%packageセクションに Web サーバースニペットを追加します。プロファイルを Web サーバーと Proxy サーバーの両方にしたい場合は、パッケージセクションに両方のスニペットを記載します。Web サーバースニペットにもう一つのパッケージを追加したい場合 (例えば、mod_perlの場合) には、スニペットを更新すると、そのスニペットを使用しているすべてのプロファイルが動的に更新されます。
テンプレーティングにより、キックスタートファイル全体で変数の定義を使用することができます。変数は、一つのレベルで設定し、それ以下のレベルでは上書きされる設定が可能な継承の対象となります。このため、変数がシステムレベルで定義されている場合には、この変数がプロファイルもしくはキックスタートツリーのレベルで定義された同一の変数に優先します。同様に、変数がプロファイルレベルで定義されている場合は、この変数がキックスタートツリーレベルで定義されている同一の変数に優先します。
注記
スニペットは、複数のキックスタートテンプレート間でコードの断片を再利用します。これらは、多くの行にまたがる可能性があり、その中に変数が含まれる場合もあります。スニペットは、$SNIPPET('snippet_name') のテキストを使用することにより、キックスタートプロファイルに組み入れることができます。特定のパッケージ一覧や、特定の %post スクリプト、もしくはキックスタートファイルに通常含まれる任意のテキスト用にスニペットを作成することもできます。
/var/lib/cobbler/snippets/ に格納されます。/var/lib/rhn/kickstarts/wizard/ には、ウィザードスタイルのキックスタートからのテンプレートがあり、異なるデフォルトのスニペットとそれらの使用方法について説明しています。
redhat_register スニペットは、マシンをキックスタートの一部として Satellite Server に登録するために使用されるデフォルトのスニペットです。redhat_management_key と呼ばれる変数を使用して、マシンを登録します。このスニペットを使用するには、redhat_management_key の変数をシステム、プロファイル もしくはディストリビューションのいずれかのレベルで設定してから、キックスタートの %post セクションに $SNIPPET('redhat_register') を追加します。RHN Satellite Server が生成したウィザードスタイルのキックスタートにはいずれも、%post のセクションにこのスニペットが既に入っています。
/var/lib/rhn/kickstarts/snippets/ ディレクトリに格納されます。RHN Satellite は、スニペットを組織別に異なるディレクトリに格納するため、カスタムスニペットは以下の例のようなファイル名で格納されます。1 は組織 ID です。
$SNIPPET('spacewalk/1/snippet_name')
注記

図2.3 キックスタートスニペット
$ と # の文字は、テンプレーティングの実行中に変数や制御フローを指定するために使用されます。スクリプト内で他の目的でこれらの文字が必要な場合には、これらをエスケープして、変数として認識されないようにする必要があります。これには、いくつかの方法があります。
- テンプレーティング中に無視したい
$または#の各インスタンスの前にバックスラッシュ文字 (\) を配置します。 - スクリプト全体を
#raw ... #end raw内にラップします。ウィザードスタイルのキックスタートを使用して作成された%preおよび%postのスクリプトはすべて、デフォルトでは#raw...#end rawでラップされます。これは、%postまたは%preスクリプトを編集する際に利用可能な テンプレート チェックボックスを使用して切り替えることができます。 - スニペットの最初の行に
#errorCatcher Echoを追加します。
例2.1 テンプレート内の特殊文字のエスケープ
%post セクション内に挿入する必要があります。
%post echo $foo > /tmp/foo.txt
$ をエスケープしないと、テンプレートエンジンは $foo という名前の変数を探そうとしますが、foo は変数としては存在しないため、失敗してしまいます。
$ をエスケープするもっとも簡単な方法は、バックスラッシュ文字 (\) を使用する方法です。
%post echo \$foo > /tmp/foo.txt
\$foo が $foo としてレンダリングされます。
#raw ... #end raw 内にラップする方法です。
%post #raw echo $foo > /tmp/foo.txt #end raw
#errorCatcher Echo を追加する方法です。これは、テンプレートエンジンに対して、存在しない変数はいずれも無視して、テキストを現状通りに出力するように指示します。 このオプションは、ウィザードスタイルのキックスタートに既に含まれていますが、手動で作成する raw キックスタートにも組み入れが可能です。
2.5. マシンのキックスタート
2.5.1. ベアメタルからのキックスタート
- 標準のオペレーティングシステムのインストールメディア
- PXE ブート
手順2.5 インストールメディアからのブート
- インストールメディアをマシンに挿入します。このメディアは使用するキックスタートと適合している必要があります。例えば、キックスタートが
ks-rhel-i386-server-5-u2キックスタートツリーを使用するように構成されている場合には、Red Hat Enterprise Linux 5.2 i386 インストールメディアを使用します。 - ブートプロンプトが表示されたら、以下のコマンドでキックスタートをアクティブにします。
linux ks=http://satellite.example.com/path/to/kickstart
- システムが起動したら、キックスタートファイルをダウンロードして、自動的にインストールします。
手順2.6 PXE ブート
重要
ネットワーク上の別のシステムに DHCP サーバーがデプロイされている場合、DHCP の設定ファイル編集には、DHCP サーバーへの管理アクセスが必要となります。マシンが複数のネットワーク上にある場合は、すべてのマシンが DHCP サーバーに接続できることを確認してください。これは、DHCP サーバーのマルチホーミングを行い (リアルまたはトランク VLAN を使用)、すべてのルータまたはスイッチがネットワーク境界を越えて DHCP プロトコルをわたすように設定することで可能になります。RHN Satellite が管理するシステムのnext-serverアドレスを設定することで、DHCP サーバーが PXE サーバーに向くように構成します。インストール中にホスト名を使用するには、以下の行を追加して DHCP サーバーがドメインと IP アドレスに向くように設定します。option domain-name DOMAIN_NAME; option domain-name-servers IP_ADDRESS1, IP_ADDRESS2;
- DHCP サーバー上で、root ユーザーに切り替え、
/etc/dhcpd.confファイルを開きます。PXE ブートインストールを実行するオプションを伴う新たなクラスを追加します。allow booting; allow bootp; class "PXE" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.2.1; filename "pxelinux.0"; }このクラスは、以下のような動作を実行します。bootpプロトコルによるネットワークブートを有効化します。PXEと呼ばれるクラスを作成します。ブートの優先順位で PXE が第 1 位に設定されているシステムの場合は、PXEClientとして自動的に認識します。- DHCP サーバーは、192.168.2.1 の IP アドレスの Cobbler サーバーにシステムをダイレクトします。
- DHCP サーバーは、
/var/lib/tftpboot/pxelinux.0にあるブートイメージファイルを参照します。
- Xinetd を設定します。Xinetd は、サービスのスイートを管理するデーモンです。これには、ブートイメージを PXE クライアントに転送するための FTP サーバーである、TFTP が含まれます。
chkconfigコマンドを使用して Xinetd を有効にします。chkconfig xinetd on
もう一つの方法としては、root ユーザーに切り替えて、/etc/xinetd.d/tftpファイルを開き、disable = yesの行をdisable = noに変更する方法があります。 - Xinetd サービスを起動し、TFTP が
pxelinux.0ブートイメージに対してサービスを提供開始できるようにしますchkconfig --level 345 xinetd on /sbin/service xinetd start
chkconfigコマンドは、すべてのユーザーランレベルに対してxinetdサービスを有効化する一方、/sbin/serviceコマンドは、xinetdを即時に有効化します。
2.5.2. 再プロビジョニング
例2.2 カーネルオプションとポストーカーネルオプションの設定
Kernel Options の行に vnc vncpassword=PASSWORD を追加します。
noapic のカーネルオプションで起動させたい場合は、Post Kernel Options の行に noapic を追加します。
手順2.7 ファイル保持
注記
- システム → キックスタート → ファイル保持 → 新規のファイル保持一覧を作成 へと進み、保持するファイルの一覧を作成します。
- システム → キックスタート → プロフィール に進み、希望のプロフィールを選択して、ファイル保持リストをキックスタートに関連付けします。
- システムの詳細 → ファイル保持 に進み、ファイル保持リストを選択します。
2.5.3. 仮想化ゲストのプロビジョニング
- KVM 仮想化ゲスト
- Xen 完全仮想化ゲスト
- Xen 準仮想化ゲスト
手順2.8 仮想化されたゲストのプロビジョニング
- ホストシステムに 仮想化 または 仮想化プラットフォーム のシステムエンタイトルメントがあることを確認します。
- システム のページで、適切な仮想ホストを選択してから、仮想化 → Provisioning を選択します。適切なキックスタートプロファイルを選択して、ゲスト名を入力します。
- ゲストのメモリーや CPU の使用量などのパラメータを追加で設定したい場合には、高度な設定 のボタンをクリックします。以下の項目を設定することができます。
- ネットワーク: 静的または DHCP
- カーネルオプション
- パッケージプロファイルの同期: キックスタートの終了時にシステムが、そのパッケージプロファイルを別のシステムや保管されたプロファイルと同期。
- メモリの割り当て: RAM (デフォルト値は 512MB)
- 仮想ディスクのサイズ
- 仮想 CPU (デフォルト値は 1)
- 仮想ブリッジ: インストールに使用されるネットワーキングブリッジ。Xen プロビジョニングには
xenbr0、KVM にはvirbr0がデフォルト値となっています。注記
virbr0ネットワーキングブリッジは、外部ネットワーキングを許可しません。外部ネットワーキングが必要な場合には、代わりに、ホストが実際のブリッジを作成するように設定してください。ただし、xenbr0は実際のブリッジであり、可能な場合にはこれを使用することが推奨されます。 - 仮想ストレージパス: ゲストのディスク情報を保管するファイル、LVM 論理ボリューム、ディレクトリ、ブロックデバイスへのパス。これには、
/dev/sdb、/dev/LogVol00/mydisk、VolGroup00、/var/lib/xen/images/myDiskなどが含まれます。
- キックスタートをスケジュールしてから終了する をクリックします。
2.5.4. RHN Proxy を介したプロビジョニング
- 仮想ゲストのプロビジョニングを行う時、もしくはシステムの再プロビジョニングを行う場合には、RHN Satellite Proxy を選択 のドロップダウンメニューから希望の Proxy を選択してください。
- ベアメタルインストールの場合には、RHN Satellite の完全修飾ドメイン名 (FQDN) を Proxy の FQDN に置き換えます。例えば、キックスタートファイルへの URL が以下のような場合、
http://satellite.example.com/ks/cfg/org/1/label/myprofile
Proxy を介したキックスタートを行うには、以下の URL を使用します。http://proxy.example.com/ks/cfg/org/1/label/myprofile
第3章 複数の Satellite
ISS の要件
- 2 台以上の RHN Satellite サーバー
- 1 つ以上のチャンネルが設定された 1 つ以上の RHN Satellite
- セキュアな接続のために、各スレーブ RHN Satellite にマスター RHN Satellite SSL 証明書が必要となります。
3.1. Inter-Satellite Synchronization
手順3.1 マスターサーバーの設定
- Inter-Satellite Synchronization (ISS) 機能を有効化し、
/etc/rhn/rhn.confファイルを開いて、以下の行を追加するか、同じとなるよう修正します。disable_iss=0
/etc/rhn/rhn.confファイル内で、allowed_iss_slaves=の行を見つけます。デフォルトでは、同期にスレーブ Satellite は指定されていません。各スレーブ Satellite サーバーのホスト名をコンマ区切りで入力してください。allowed_iss_slaves=slave1.satellite.example.org,slave2.satellite.example.org
- 設定ファイルを保存して、
httpdサービスを再起動します。service httpd restart
手順3.2 スレーブサーバーの設定
- コンテンツをスレーブサーバーに安全に転送するには、マスターサーバーからの
ORG-SSL証明書が必要となります。この証明書は HTTP を介して任意の Satellite の/pub/ディレクトリからダウンロードできます。ファイル名はRHN-ORG-TRUSTED-SSL-CERTですが、変更することができ、スレーブのローカルファイルシステム内の任意の場所 (例:/usr/share/rhn/ディレクトリなど) に置くことができます。 - マスターサーバーからの同期が可能なチャンネル一覧を表示するには、以下のコマンドを実行します。これにより、正式な Red Hat チャンネルと、利用可能なカスタムチャンネルが表示されます。
satellite-sync --iss-parent=master.satellite.example.com --ca-cert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT --list-channels
master.satellite.example.com の箇所は、マスターサーバーのホスト名に置き換えてください。
手順3.3 Inter-Satellite Synchronization の実行
- スレーブサーバー上で
/etc/rhn/rhn.confファイルをテキストエディタで開き、マスターサーバーのホスト名と SSL 証明書ファイルのパス詳細を追加します。iss_parent = master.satellite.example.com iss_ca_chain = /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT
satellite-syncのコマンドを以下のように実行して、同期を開始します。satellite-sync -c your-channel
注記
satellite-syncコマンドで手動で提供されるコマンドラインオプションは、/etc/rhn/rhn.confファイル内のカスタム設定を上書きします。
3.2. 組織別の同期
- ソースコンテンツが
NULL組織に属する場合は (すなわち Red Hat のコンテンツ)、同期先の組織が指定されている場合であってもデフォルトでNULL組織に設定されます。これにより、指定されたコンテンツは、常に権限があるNULL組織にあることになります。 - コマンドラインで組織を指定した場合は、コンテンツがその組織からインポートされます。
- 組織が指定されていない場合は、デフォルトで組織 1 に指定されます。
orgid) を使用した Satellite 間同期の 3 つのシナリオ例を示します。
例3.1 マスター Satellite からスレーブ Satellite へのコンテンツのインポート
satellite-sync --parent-sat=master.satellite.example.com -c channel-name --orgid=2
例3.2 特定の組織のエクスポートされたダンプからのコンテンツのインポート
$ satellite-sync -m /dump -c channel-name --orgid=2
例3.3 Red Hat Network Hosted からのコンテンツのインポート
$ satellite-sync -c channel-name
3.3. ISS ユースケース
例3.4 ステージング Satellite


satellite-syncコマンドを実行して、rhn_parent (通常は Red Hat Network Hosted) とデータを同期します。satellite-sync -c your-channel
- 以下のコマンドを実行して、ステージングサーバーからデータを同期します。
satellite-sync --iss-parent=staging-satellite.example.com -c custom-channel
例3.5 同期されたスレーブ

例3.6 スレーブのカスタムコンテンツ

例3.7 双方向同期

- 両方の Satellite が SSL 証明書を共有できることを確認します。
- 第 1 Satellite で、
/etc/rhn/rhn.confファイルを開き、第 2 Satellite のホストネームをポイントするようにiss_parentオプションを設定します。 - 第 2 Satellite で、
/etc/rhn/rhn.confファイルを開き、第 1 Satellite のホストネームをポイントするようにiss_parentオプションを設定します。
第4章 高度な API メソッドおよびコマンド
4.1. XML-RPC API
表4.1 XML-RPC メソッド
| XML-RPC 名前空間 | 用途 |
|---|---|
kickstart | キックスタートプロファイルの作成/インポート/削除。利用可能なキックスタートツリーとプロファイルの一覧表示にも使用します。 |
kickstart.tree | キックスタートツリーの作成/名前変更/更新/削除 |
kickstart.filepreservation | キックスタートプロファイルに関連付けすることが可能なファイル保持一覧の一覧表示/作成/削除。ファイル保持一覧を作成した後に、kickstart.profile.system.add_file_preservations API メソッドを呼び出すことによって、キックスタートプロファイルと関連付けすることができます。 |
kickstart.keys | 異なるキックスタートプロファイルに関連付けすることが可能な暗号化キー (GPG/SSL) の一覧表示/作成/削除。
注記
暗号化キーを作成したら、 kickstart.profile.system.add_keys API メソッドを呼び出すことによって、キックスタートプロファイルと関連付けすることができます。
|
kickstart.profile | IP 範囲の操作、キックスタートツリーおよび子チャンネルの変更、プロファイルに関連付けされたキックスタートファイルのダウンロード、高度なオプションやカスタムオプションの操作、キックスタートプロファイルへのプリスクリプト/ポストスクリプトの追加。 |
kickstart.profile.keys | キックスタートプロファイルに関連付けされているアクティベーションキーの一覧表示/追加 (関連付け)/削除 (関連付け解除)。 |
kickstart.profile.software | キックスタートプロファイルと関連付けされたパッケージ一覧の操作。 |
kickstart.profile.system | ファイル保持の管理、暗号化キーの管理、設定管理とリモートコマンドの有効化/無効化、パーティショニングスキームのセットアップ、特定のキックスタートプロファイルに関連付けされたロケール情報のセットアップ。 |
system.provision_systemsystem.provision_virtual_guest
https://satellite.example.com/rpc/api で入手可能な API ドキュメントをご参照ください。
4.2. Cobbler
表4.2 Cobbler のコマンド
| コマンド | 用途 |
|---|---|
cobbler profile list | RHN Satellite ホスト上でコマンドを実行して、プロファイルのリストを表示します。 |
cobbler distro list | キックスタートツリー、カーネル、RAM ディスク、その他のオプションの一覧を表示します。 |
cobbler system list | キックスタートのスケジュール時に作成されたシステム記録の一覧を表示します。 |
cobbler profile report --name=profile-name または cobbler system report --name=system-name | 特定のオブジェクトに関するより詳細な出力を表示します。 |
cobbler profile edit --name=profile-name --virt-ram=1024 | 様々なパラメータを編集します。この例では、特定のプロファイルの仮想化インストールにそれぞれ 1 GB の RAM が割り当てられます。 |
cobbler system edit --name=system-name --netboot-enabled=1 | 次回の再起動時に、システムを再インストールするように強制します。 |
cobbler system edit --name=system-name --profile=new-profile-name --netboot-enabled=1 | 再インストール用の新たなプロファイルにシステムを割り当てます。 |
cobbler system find --profile=profile-name | 特定のプロファイルに割り当てられたシステムを一覧表示します。 |
cobbler system find --profile="abc" | xargs -n1 --replace cobbler system edit \ --name={} --profile="def" --netboot-enabled=1 | 現在 abc プロファイルに設定されている全システムを def プロファイルに割り当て、次回の再起動時に再インストールします。 |
cobbler profile edit --name=profilename --kopts="variablename=3" --in-place | その他の変数を一切変更せずに、プロファイル上の追加のテンプレーティング変数を設定します。 |
cobbler system edit --name=systemname --kopts="selinux=disabled asdf=jkl" | 以前に設定されている可能性がある古い変数を無視して、システム記録に様々な変数を割り当てます。 |
cobbler profile find --name="*webserver*" | xargs -n1 --replace cobbler profile edit --name={} --profile="RHEL5-i386" | webserver が文字列として含まれるプロファイルのすべての新規インストールを設定し、RHEL5-i386 という名前のプロファイルを使用します。 |
/etc/cobbler/settings ディレクトリ内で直接変更すべき Cobbler 設定はわずかしかありません。そのうちの一つが、pxe_just_once オプションです (手順4.3「PXE を使用するための Cobbler の設定」 で解説しています)。server オプションも、RHN Satellite Server のアドレスまたはホスト名を反映するように変更することができます。
/etc/cobbler/settings を変更した後には、以下のコマンドを実行して、変更をピックアップします。
/sbin/service cobblerd restart cobbler sync
重要
/etc/cobbler/settings 内のその他の設定は、調整しないでください。RHN Satellite は、RHN Satellite のインストーラが決定した一定の設定が維持されていることを必要とします。また同様に、認証ソースを制御する /etc/cobbler/modules.conf ファイルも、RHN Satellite インストーラが作成した状態を維持する必要があります。特に、認証モジュールは authn_spacewalk のままにする必要があり、変更はできません。
手順4.1 Cobbler と併用するための SELinux の設定
- SELinux の Cobbler サポートを有効化するには、以下のコマンドを使用して、SELinux のブーリアンが HTTPD Web サービスコンポーネントを許可するように設定する必要があります。
setsebool -P httpd_can_network_connect true
-Pのスイッチは不可欠です。これによって、HTTPD 接続は再起動しても永続的に有効となります。 - Cobbler サーバー上で以下のコマンドを使用して、TFTP 用の SELinux ファイルコンテキストルールがブートイメージファイルにサービスを提供するように設定します。
semanage fcontext -a -t public_content_t "var/lib/tftpboot/.*"
- IPTables は、Cobbler サーバー上でのネットワークトラフィックの発着信を可能にするように設定する必要があります。IPTables を使用する既存のファイアウォールルールセットがある場合、以下のようにルールを追加して、Cobbler 関連のポートを開きます。TFTP の場合:
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 69 -j ACCEPT /sbin/iptables -A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT
HTTPD の場合:/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
Cobbler の場合:/sbin/iptables -A INPUT -m state --state NEW -m udp -p udp --dport 25150 -j ACCEPT
Koan の場合:/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 25151 -j ACCEPT
- ファイアウォールの設定を保存します。
/sbin/iptables-save
- 以下のコマンドを実行して、設定ファイルがすべて確実に同期されるようにします。
cobbler sync
- Satellite Server を起動します。
/usr/sbin/rhn-satellite start
警告
Satellite サービスに依存しないcobblerdサービスを起動/停止しないでください。エラーやその他の問題が発生する原因となる可能性があります。RHN Satellite の起動/停止には、必ず/usr/sbin/rhn-satelliteを使用してください。
手順4.2 Cobbler システム記録の設定
- 各システムの システムの詳細 → Provisioning に進み、関連付けするキックスタートを選択します。
- Cobbler システム記録の作成 ボタンをクリックし、関連付けします。
- この関連付けは、任意のマシンに対して Cobbler 内で
pxe_just_onceを true に設定していない限りは、永久的に残ります。true に設定した場合は、キックスタートが成功した後に関連付けは無効となります。この設定に関する詳しい情報は、手順4.3「PXE を使用するための Cobbler の設定」 をご参照してください。
手順4.3 PXE を使用するための Cobbler の設定
pxe_just_once 設定オプションの調整が可能です。
- BIOS の順序は、多くの場合、PXE ブートが最初に実行されるように設定されます。これは、PXE サーバーがリモートで指示しない限りはローカルディスクからはブートしないということになります。この設定により、システムが継続的に再インストールを行う ブートループ が発生する場合があります。ブートループを防止するには、
/etc/cobbler/settingsファイルを開いて、以下の行を追加します。pxe_just_once: 1
この設定により、$kickstart_doneマクロがキックスタートテンプレートに追加されます。これは、インストールが完了した後にシステムがネットワークからではなく、ローカルでブートするように指示します。 pxe_just_once: 1セッティングを追加して、後でシステムを再インストールしたい場合には、システム上のnetboot-enabledフラグを切り替える必要があります。これは、RHN Satellite の Web インターフェースを使用するか、直接 Cobbler 内で行うことができます。システムが次回再起動する時には、PXE インストールが実行され、その後には、フラグがリセットされるまでローカルディスクからのブートに戻ります。ローカルのハードドライブから最初に起動するように BIOS が設定されている場合は、pxe_just_onceを有効にする必要はありません。ただし、PXE を使用してシステムを再プロビジョニングするには、MBR (マスターブートレコード) をゼロ設定する必要があります。
命名規則
- ディストリビューション
$tree_name:$org_id:$org_name(手動で作成する場合)$tree_name(RHN Satellite によって同期される場合)- プロファイル
$profile_name:$org_id:$org_name
重要
注記
/var/log/cobbler/ ファイル内のデータのログ記録を取ります。
4.3. Koan
koan (ネットワーク上でのキックスタート) ユーティリティにより、プロビジョニング済みのホストから RHN Satellite へのリモートアクセスが可能になります。Koan により、キックスタートのプロビジョニングを実行して、仮想ゲストを (仮想ホスト上に) 作成し、RHN Satellite ホストから利用可能なキックスタートを一覧表示することが可能となります。これは、koan パッケージで利用可能です。
表4.3 Koan コマンド
| コマンド | 用途 |
|---|---|
man koan | koan の man ページをご参照ください。 |
koan --replace-self --server=satellite.example.org --profile=profile-name または koan --replace-self --server=satellite.example.org --system=system-name | 既存システムの再プロビジョニングを行います。このコマンドを実行した後に再起動し、新たな OS をインストールします。これは、キックスタートのアップグレードにも使用できます (例:多数のマシンを Red Hat Enterprise Linux のあるバージョンから次のバージョンにアップグレード)。 |
koan --virt --server=satellite.example.org --profile=profile-name または koan --virt --server=satellite.example.org --system=system-name | 仮想ゲストのプロビジョニングを行います。 |
koan --list=profiles --server=satellite.example.org または koan --list=systems --server=satellite.example.org | Cobbler にクエリを行い、リモートインストールに利用可能なプロファイルまたはシステムの一覧を表示します。 |
注記
/var/log/koan 内のデータのログ記録を取ります。
第5章 トラブルシューティング
- 5.1. Web インターフェース
- 5.2. Anaconda
- 5.3. トレースバック
- 5.4. 登録
- 5.5. キックスタートとスニペット
5.1. Web インターフェース
/var/log/tomcat5/catalina.out ログファイルをチェックしてください。
/var/log/httpd/error_log ログファイルをチェックします。
5.2. Anaconda
Error downloading kickstart file (キックスタートファイルのダウンロードでエラーが発生しました) というエラーが表示されます。何が問題なのでしょうか。どのようにしたら修復できますか。
cobbler check のコマンドを実行して出力を確認します。以下のような出力が表示されるはずです。
# cobbler check The following potential problems were detected: #0: reposync is not installed, need for cobbler reposync, install/upgrade yum-utils? #1: yumdownloader is not installed, needed for cobbler repo add with --rpm-list parameter, install/upgrade yum-utils? #2: The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed #3: fencing tools were not found, and are required to use the (optional) power management features. install cman to use them
cobbler check で問題が究明できない場合には、以下の点を確認してください。
httpdが実行されているかを確認します。service httpd statuscobblerdが実行されているかを確認します。service cobblerd statuswgetを使用して、異なるホストからキックスタートファイルを取得できることを確認します。wget http://satellite.example.com/cblr/svc/op/ks/profile/rhel5-i386-u3:1:Example-Org
The file chkconfig-1.3.30.1-2.i386.rpm cannot be opened. (chkconfig-1.3.30.1-2.i386.rpm のファイルは開くことができません) というパッケージインストールエラーが表示されます。何が問題なのでしょうか。どのようにしたら修復できますか。
--url パラメータに基づいて RHN Satellite からコンテンツを取得します。例:
url --url http://satellite.example.com/ks/dist/ks-rhel-i386-server-5-u3
200 OK の応答を生成することを確認します。これは、wget でその URL にあるファイルの取得を試みることによって行うことができます。
wget http://satellite.example.com/ks/dist/ks-rhel-i386-server-5-u3 --2011-08-19 15:06:55-- http://satellite.example.com/ks/dist/ks-rhel-i386-server-5-u3 Resolving satellite.example.com... 10.10.77.131 Connecting to satellite.example.com|10.10.77.131|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 0 [text/plain] Saving to: `ks-rhel-i386-server-5-u3.1' 2011-08-19 15:06:55 (0.00 B/s) - `ks-rhel-i386-server-5-u3.1' saved [0/0]
200 OK 以外の応答が返された場合は、エラーログを確認して問題を究明します。また、access_log ファイルを検索することによって、Anaconda がダウンロードを試みた実際のファイルをチェックすることもできます。
# grep chkconfig /var/log/httpd/access_log 10.10.77.131 - - [19/Aug/2011:15:12:36 -0400] "GET /rhn/common/DownloadFile.do?url=/ks/dist/ks-rhel-i386-server- 5-u3/Server /chkconfig-1.3.30.1-2.i386.rpm HTTP/1.1" 206 24744 "-" "urlgrabber/3.1.0 yum/3.2.19" 10.10.76.143 - - [19/Aug/2011:15:12:36 -0400] "GET /ks/dist/ks-rhel-i386-server-5-u3/Server/chkconfig- 1.3.30.1-2.i386.rpm HTTP/1.1" 206 24744 "-" "urlgrabber/3.1.0 yum/3.2.19" 10.10.76.143 - - [19/Aug/2011:15:14:20 -0400] "GET /ks/dist/ks-rhel-i386-server-5-u3/Server/chkconfig- 1.3.30.1-2.i386.rpm HTTP/1.1" 200 162580 "-" "urlgrabber/3.1.0 yum/3.2.19" 10.10.77.131 - - [19/Aug/2011:15:14:20 -0400] "GET /rhn/common/DownloadFile.do?url=/ks/dist/ks-rhel-i386-server- 5-u3/Server/chkconfig-1.3.30.1-2.i386.rpm HTTP/1.1" 200 162580 "-" "urlgrabber/3.1.0 yum/3.2.19"
access_log ファイル内に記載されていない場合は、システムのネットワーク設定に問題がある可能性があります。要求が記載されていてもエラーが生成される場合には、エラーログを確認してください。
wget http://satellite.example.com/ks/dist/ks-rhel-i386-server-5-u3/Server/chkconfig-1.3.30.1-2.i386.rpm
5.3. トレースバック
Subject: WEB TRACEBACK from satellite.example.com Date: Wed, 19 Aug 2011 20:28:01 -0400 From: RHN Satellite <dev-null@redhat.com> To: admin@example.com java.lang.RuntimeException: XmlRpcException calling cobbler. at com.redhat.rhn.manager.kickstart.cobbler.CobblerXMLRPCHelper.invokeMethod(CobblerXMLRPCHelper.java:72) at com.redhat.rhn.taskomatic.task.CobblerSyncTask.execute(CobblerSyncTask.java:76) at com.redhat.rhn.taskomatic.task.SingleThreadedTestableTask.execute(SingleThreadedTestableTask.java:54) at org.quartz.core.JobRunShell.run(JobRunShell.java:203) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520) Caused by: redstone.xmlrpc.XmlRpcException: The response could not be parsed. at redstone.xmlrpc.XmlRpcClient.handleResponse(XmlRpcClient.java:434) at redstone.xmlrpc.XmlRpcClient.endCall(XmlRpcClient.java:376) at redstone.xmlrpc.XmlRpcClient.invoke(XmlRpcClient.java:165) at com.redhat.rhn.manager.kickstart.cobbler.CobblerXMLRPCHelper.invokeMethod(CobblerXMLRPCHelper.java:69) ... 4 more Caused by: java.io.IOException: Server returned HTTP response code: 503 for URL: http://someserver.example.com:80/cobbler_api at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1236) at redstone.xmlrpc.XmlRpcClient.handleResponse(XmlRpcClient.java:420) ... 7 more
taskomatic サービスとの通信において問題が生じたことを示しています。以下の点を確認してください。
httpdが実行されているかを確認します。service httpd statuscobblerdが実行されているかを確認します。service cobblerd statuslocalhostへの接続を妨げるファイアウォールルールがないことを確認します。
5.4. 登録
rhnreg_ks コマンドを実行すると、ERROR: unable to read system id (エラー: システム ID を読み取ることができません) というエラーメッセージが表示されて、失敗してしまいます。何が問題なのでしょうか。
%post のセクションがあり、これがマシンを RHN Satellite に登録します。
# begin Red Hat management server registration mkdir -p /usr/share/rhn/ wget http://satellite.example.com/pub/RHN-ORG-TRUSTED-SSL-CERT -O /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT perl -npe 's/RHNS-CA-CERT/RHN-ORG-TRUSTED-SSL-CERT/g' -i /etc/sysconfig/rhn/* rhnreg_ks --serverUrl=https://satellite.example.com/XMLRPC --sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT --activationkey=1-c8d01e2f23c6bbaedd0f6507e9ac079d # end Red Hat management server registration
- RHN Satellite が使用するカスタム SSL 証明書を格納するディレクトリを作成します。
- 登録中に使用する SSL 証明書を取得します。
rhn-register設定ファイルからの SSL 証明書のストリングの検索/置換が行われ、SSL 証明書とアクティベーションキーを使用して RHN Satellite に登録されます。各キックスタートプロファイルにはアクティベーションキーが含まれ、これによってシステムに正しいベースチャンネルと子チャンネルが確実に割り当てられ、正しいシステムエンタイトルメントが取得されます。既存システムの再プロビジョニングの場合には、アクティベーションキーが以前のシステムプロファイルとの関連付けを確実にします。
rhnreg_ks コマンドが失敗した場合には、ks-post.log ログファイル内に以下のようなエラーが表示される場合があります。
ERROR: unable to read system id.
rhn_check を実行した際にシステムが RHN Satellite に登録されていなかった場合にも発生します。
5.5. キックスタートとスニペット
/var/lib/rhn/kickstarts/ です。このディレクトリ内において、raw キックスタートは upload サブディレクトリ内に格納され、ウィザードによって生成されたキックスタートは wizard サブディレクトリ内に格納されます。
Raw Kickstarts: /var/lib/rhn/kickstarts/upload/$profile_name--$org_id.cfg Wizard Kickstarts: /var/lib/rhn/kickstarts/wizard/$profile_name--$org_id.cfg
/var/lib/rhn/kickstarts/snippets に格納されます。Cobbler は、/var/lib/cobbler/snippets/spacewalk のシンボリックリンクを使用して、スニペットにアクセスします。
Snippets: /var/lib/rhn/kickstarts/snippets/$org_id/$snippet_name
重要
付録A 改訂履歴
| 改訂履歴 | |||||||
|---|---|---|---|---|---|---|---|
| 改訂 4-2.2.400 | 2013-10-31 | Rüdiger Landmann | |||||
| |||||||
| 改訂 4-2.2 | Tue Apr 23 2013 | Credit Translator's | |||||
| |||||||
| 改訂 4-2.1 | Thu Feb 21 2013 | Noriko Mizumoto | |||||
| |||||||
| 改訂 4-2 | Wed Sept 19 2012 | Dan Macpherson | |||||
| |||||||
| 改訂 4-1 | Thu Aug 9 2012 | Athene Chan | |||||
| |||||||
| 改訂 4-0 | Mon June 25 2012 | Athene Chan | |||||
| |||||||
| 改訂 3-0 | Thu May 31 2012 | Athene Chan | |||||
| |||||||
| 改訂 2-0 | Thu May 24 2012 | Athene Chan | |||||
| |||||||
| 改訂 1-3 | Mon Aug 15 2011 | Lana Brindley | |||||
| |||||||
| 改訂 1-2 | Wed Jun 15 2011 | Lana Brindley | |||||
| |||||||
| 改訂 1-1 | Fri May 27 2011 | Lana Brindley | |||||
| |||||||
| 改訂 1-0 | Fri May 6, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-8 | Thu May 5, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-7 | Thu April 14, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-6 | Wed March 23, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-5 | Tue March 22, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-4 | Tue March 22, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-3 | Mon March 21, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-2 | Thu March 17, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-1 | Wed Jan 5, 2011 | Lana Brindley | |||||
| |||||||
| 改訂 0-0 | Tue Dec 21, 2010 | Lana Brindley | |||||
| |||||||