Sun N1 Service Provisioning System ユーザーズガイド (OS Provisioning Plug-In 3.0)

custom モジュールの使用法

Solaris Profile の作成時に、Solaris プロファイルコンポーネントに custom モジュールを含めることができます。Solaris プロファイルコンポーネントを作成する場合、プラン変数には JET Module Name(s) が含まれます。

デフォルトでは、Solaris プロファイルコンポーネントには次の 2 つの JET モジュールが含まれています。

3 番目に使用可能なモジュールは custom で、Solaris のパッケージ、パッチ、およびファイルの任意のリストをインストールし、またスクリプトの任意のコレクションを実行できます。Solaris プロファイルコンポーネントに custom モジュールを含めるには、Solaris プロファイルを作成する前に、custom JET Module Name(s) プラン変数に追加します。

custom モジュール内の項目がターゲットサーバーにインストールされる際、インストールの順序は常に、パッケージ、パッチ、ファイル、スクリプトの順になります。この順序が適切ではない場合、独自の JET モジュールを作成することもできます。JET モジュールの作成の詳細については、付録 F 「追加 JET モジュールの作成」を参照してください。

custom モジュールは、ビルドのさまざまな段階でのパッケージやパッチのインストールに使用できます。「JET を介した Solaris のインストールプロセス」を参照してください。

ターゲットサーバーテンプレートの編集では、ブートシーケンスのどの時点でパッケージをインストールする必要があるかに応じて、構成変数 custom_packages_[1-n] に追加パッケージの名前のリストを指定することができます。同様に、変数 custom_patches_[1-n] でパッチを特定することもできます。

パッケージとパッチは指定された順序でインストールされるため、それらの間の依存関係を満たすようそれらを適切に順序付ける必要があります。数多くのパッケージやパッチがある場合や、複数の異なるターゲットサーバーで共通のセットが頻繁に使用される場合は、独自のモジュールの作成を検討してください。パッケージのインストールにパッチを組み込む必要がある場合も、このアプローチを検討しなければならない場合があります。

製品インストールにインストールされるパッケージが含まれる場合、package.matrix ファイルが含まれます。このファイルには、インストールする必要があるパッケージのリストとともに、サポートされるオペレーティングシステムと製品のバージョン番号のリストが含まれています。また、同様に必要なパッチを定義する patch.matrix ファイルも存在します。

カスタムパッチとパッケージメディアの生成

custom モジュールを使用すると、ターゲットサーバーごとにカスタムパッケージとパッチセットを定義できます。このモジュールは、ツールキットが検索する適切な場所にパッケージとパッチメディアを配置できるようにする、2 つのスクリプトも提供します。

パッチとパッケージメディアをコピーする際、ツールキット構成ファイル (/opt/SUNWjet/etc/jumpstart.conf) にある JS_PKG_MEDIAJS_PATCH_MEDIA の定義に従って、スクリプトはメディアを配置します。別の場所を使用してすべてのメディアを保持するには、スクリプトを実行する前に構成ファイルを変更します。

カスタムパッチは、/opt/SUNWjet/bin/copy_custom_patches スクリプトを使用して配置できます。


# copy_custom_patches src-dir patch [patch....] 

このスクリプトは少なくとも 2 つの引数を取り、最初の引数はパッチが含まれるソースディレクトリです。そのほかの引数はパッチ番号と見なされ、これらはそのディレクトリ内に位置し、それ以降コピーされます。

カスタムパッケージは、/opt/SUNWjet/bin/copy_custom_packages スクリプトを使用して転送できます。


# copy_custom_packages src-dir arch package [package....] 

引数はカスタムスクリプトコマンドに使用される引数によく似ていますが、追加の arch 引数が含まれています。この引数はパッケージのターゲットアーキテクチャーの定義に使用されます。ターゲットアーキテクチャーは、ターゲットサーバー上の uname -p の出力により定義されます。現在、値は sparc または i386 のいずれかで、それぞれ SPARC アーキテクチャーと IA86 アーキテクチャーを表します。

カスタムパッチにはアーキテクチャーの定義は必要ありません。これは、パッケージが使用可能な各アーキテクチャーに対して、独立した番号が付けられたパッチがリリースされるためです。

custom モジュールは、同じアーキテクチャーの同じパッケージの複数の異なるバージョンを含むことはできません。この機能が必要である場合は、これらの要件に対応する特定のモジュールを検討してください。付録 F 「追加 JET モジュールの作成」を参照してください。

カスタムファイル

custom モジュールを使用すると、ターゲットサーバーでファイルを作成、上書きしたり、ファイルを追加先にすることができます。ファイルは、次の 3 つの項目を定義する値により参照されます。

たとえば、banana と呼ばれるターゲットサーバーの場合、banana の構築時に、テンプレートのカスタム領域にある次の行は、JumpStart サーバー上のファイル /opt/SUNWjet/Clients/banana/hosts の内容を、マシン banana 上のファイル /etc/hosts に追加します。

custom_files="hosts:a:/etc/hosts"

ソースファイルは、ターゲットサーバーの構築前に適切に配置する必要があります。ファイルは /opt/SUNWjet ディレクトリツリー内に配置する必要があります。


注 –

ソースファイルには絶対パスを使用しないでください。

また、/etc/hosts or /etc/passwd など、ツリーの外部にあるファイルを参照しないでください。


3 つのフィールドの中央は、ターゲットサーバー上の宛先ファイルを追加または上書きするかどうかを指定します。多数のターゲットサーバーに対してファイルのセットが共通である場合は、/opt/SUNWjet/Clients ディレクトリ内での保持領域の作成を検討してください。共通ファイルはそのディレクトリ内に配置します。ターゲットサーバーのテンプレートは、ファイルを次のように参照できます。

custom_files="../common/hosts:a:/etc/hosts ../common/ftpusers:o:/etc/ftpusers" 

ここでファイルは、各ターゲットサーバー固有のディレクトリに複数コピーされるのではなく、/opt/SUNWjet/Clients/common に配置されます。テンプレートファイルは Bourne シェルスクリプトであるため、通常の手法を使用して行を継続することができます。\ 文字を使用するか、変数 custom_files="${custom_files} ......" に情報を追加します。

カスタムスクリプト

カスタムスクリプトは、スクリプトのソース位置により定義されます。ツールキットは、ビルド中にターゲットサーバーのスクラッチ領域にスクリプトをコピーし、適切な時点でスクリプトを実行します。

前節で説明したカスタムファイルと同じように、スクリプトのソースは /opt/SUNWjet ディレクトリ内に存在する必要があります。ソースは、共通の保持領域に対する相対参照になることも可能です。

システムが JumpStart サーバーの NFS イメージ上で動作し、実際のターゲットサーバーファイルシステムが $ROOTDIR ( /a) 上にマウントされている場合、カスタムモジュールは最初の再起動の前に、スクリプトを実行するためのプロビジョニングを行いません。

最初の再起動の前にスクリプトを実行する場合は、付録 F 「追加 JET モジュールの作成」で説明しているようにモジュールの作成を検討してください。