componentは、アプリケーションを定義するresourcesの論理的なグループです。アプリケーションを構成するリソースの扱い方を規定した一連の命令も含まれます。コンポーネントは、以下のように分けることができます。
ファイルとディレクトリ
自律型アーカイブ (J2EETM Enterprise Archives (EAR)、COM コンポーネントなど)
完結したアプリケーション (BEA WebLogic Server など)
オペレーティングシステムレベルの更新 (パッチ、サービスパックなど)
ほかのコンポーネントを示すポインタ
プロビジョニングシステムを使用して、データセンター内のアプリケーションを管理できます。この製品でアプリケーションを管理するには、先にアプリケーションをコンポーネントとしてmodelしておく必要があります。プロビジョニングシステムを使用すると、次の作業を行えます。
アプリケーションのインストール、構成、および分析に関する情報とともに、各アプリケーションごとに慎重に定義したソフトウェアリソースが含まれる、アプリケーションモデルを作成できます。
バージョン管理が採用されているコンポーネントリポジトリにコンポーネントを格納できます。バージョン管理により、任意のバージョンのコンポーネントを取得できます。
プランでコンポーネントを利用できるようにします。プランでは、手順を追ってデータセンターオペレーションを実行し、各コンポーネントに組み込まれているナレッジを活用します。
コンポーネント間の比較およびコンポーネントとソフトウェア導入先との比較
プロビジョニングシステムがサポートするコンポーネントの基本タイプは、次の 2 種類です。
単純コンポーネント。simple componentには、単一リソースが含まれ、ほかのコンポーネントへの参照は含まれません。
複合コンポーネント。composite componentには、ほかのコンポーネント (単純と複合の両方) への参照だけが含まれ、リソースは含まれません。
複合コンポーネントには、コンポーネントの参照が含まれます。参照先のコンポーネントをcontained components(子コンポーネント) といいます。参照する側のコンポーネントをcontained components(親コンポーネント) といいます。
複合コンポーネントは、各包含コンポーネントについて、top-level componentとしてインストールするのか、それともnested componentとしてインストールするのかを宣言します。上位レベルとしてインストールされた包含コンポーネントは、プランによって直接インストールされた場合と同様、どのコンポーネントでも使用されます。ただし、包含コンポーネントが入れ子としてインストールされた場合、そのサービスを利用できるのはコンテナコンポーネントに限られます。入れ子の包含コンポーネントでは、コンテナコンポーネントが必要とする機能を非常に細かい単位で定義しますが、ほかのコンポーネントには無意味です。一方、上位レベルの包含コンポーネントでは、コンテナコンポーネントが使用するサービスを定義しますが、定義されたサービスはほかのコンポーネントも使用できます。
複合コンポーネントにはコンポーネントそのものではなく、ほかのコンポーネントの参照が含まれます。参照コンポーネントは、別の既存コンポーネントであり、コンテナコンポーネントとは別に更新され管理されます。1 つのコンポーネントを、任意の数の複合コンポーネントが参照できます。ほかの複合コンポーネントから参照されるかどうかで、コンポーネント名が変わることはありません。名前の衝突はパスを使用して解決されます。
プロビジョニングシステムは、コンポーネントに関連付けられる物理リソースを管理します。これには事前に定義された一連のコンポーネントも含まれます。このようなコンポーネントは直接使用することも、ほかのコンポーネントを作成するためのサンプルとして使用することもできます。
コンポーネントには手続きも組み込まれます。procedureは、コンポーネントに格納され、コンポーネントの配置を制御するプログラムです。コンポーネント手続きは通常、インストール、アンインストール、およびキャプチャのsnapshotsとして定義します。その他の手続きは制御ブロックで定義できます。controlとは、コンポーネントに組み込まれた一連の命令であり、配備されたアプリケーションを管理する目的で使用できます。たとえばアプリケーションの起動や停止などを制御できます。コンポーネントには、ほかのコンポーネントへの依存を検査したり、特定のプロセスが動作しているかどうかを検証したりする命令を組み込むことができます。
コンポーネントではsubstitution variablesも宣言できます。置換変数は、コンポーネント内で使用することも、コンポーネントに含まれる任意のリソースに使用することもできます。置換変数は、プランの実行時に置換する値のプレースホルダとして使用できます。
プロビジョニングシステムでは、非常に柔軟にコンポーネントをモデル化できます。モデル化するアプリケーションによって、次のどの方式を使用するかが決まります。
完全自動のモデル化。gold serverから、またはソースコード制御システムから、コンポーネントにチェックインできます。チェックインが完了すると、プロビジョニングシステムがcomponentを自動的に生成するので、生成されたコンポーネントからインストール、構成、comparison手続きを実行できます。
この方式は、プラグインがすでに定義されてインポートされているアプリケーションをモデル化する場合に使用します。組み込みコンポーネントタイプまたはインポートされたコンポーネントタイプを使用すると、アプリケーションコンポーネントを構成する一般的なリソースを自動的にモデル化できます。コンポーネントタイプのテンプレートには、インストールなど、基本的な動作に関する組み込み手続きが含まれています。したがって、プランを作成しなくても、一般的なコンポーネントタイプの基本動作を実行できます。
組み込みコンポーネントタイプについては、第 3 章「組み込みコンポーネントタイプ」を参照してください。プラグインによって取得したコンポーネントタイプについては、 http://docs.sun.com/db/coll/1223.1 にアクセスして、『 N1 Grid Service Provisioning System 5.0 Plug-In Collection 』を参照してください。
XML オーサリングによる組み込みコンポーネントタイプの拡張。ブラウザインタフェースの「Advanced Edit」ページで XML を直接編集することによって、自動生成されたコンポーネントをカスタマイズできます。XML が指定されているファイルをシステムにダウンロードし、Turbo XML などの XML スキーマ検証エディタで編集することによって、コンポーネントをカスタマイズする方法もあります。
XML の編集時には、次の作業が可能です。
変数の追加によるコンポーネントのカスタマイズ
拡張制御手続きの呼び出しの追加 (IIS または Microsoft Windows サービスの起動/停止など)
XML でのコンポーネントモデルのオーサリング。XML エディタを使用して、『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』の第 2 章「コンポーネントと単純プランにより使用される共有スキーマ」、『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』の第 3 章「コンポーネントのスキーマ」、および『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』の第 4 章「プランのスキーマ」に記載されているコンポーネントスキーマを参照することによって、独自のコンポーネントを作成できます。
コンポーネントを使用する前に、そのコンポーネントの XML ファイルとリソースをリポジトリにチェックインしておく必要があります。
ブラウザインタフェースを使用したコンポーネントモデルのオーサリング。ブラウザインタフェースを使用してコンポーネントを作成できます。保存すると、コンポーネントが自動的にビルドされます。その後、次のいずれかによってコンポーネントをインストールできます。
1つ以上のホストまたはホストセットにコンポーネントをインストールするプランの作成
プランについての詳細は、第 4 章「プラン」を参照してください。
コンポーネントを使用するには、そのコンポーネントをリポジトリにチェックインしておく必要があります。
コンポーネントをチェックインすると、コンポーネントがビルドされ、特定のバージョンのリソースが割り当てられます。ビルドによりコンポーネントにもバージョン番号が割り当てられるため、そのバージョンのコンポーネントは特定のバージョンのコンポーネントリソースと常に関連付けられるようになります。
コンポーネントはさまざまな特性に基づいて識別されます。次に、代表的なコンポーネント特性について説明します。
コンポーネントタイプ名。コンポーネントに関連付けられるコンポーネントタイプの名前です。「コンポーネントタイプの概念」を参照してください。
プロビジョニングシステムには、ファイル、ディレクトリなどの汎用モデルをサポートするコンポーネントタイプがいくつか組み込まれています。Microsoft Windows および WebLogic など、アプリケーションドメインに固有のプラグインをインポートすることによって、ほかのコンポーネントタイプをシステムに追加できます。
バージョン番号。コンポーネントのバージョン番号です。コンポーネントを変更するたびに、バージョン番号が増えます。
チェックイン時に、バージョン番号の増分方式を選択します。メジャー番号 (小数点の左側) を増やすことも、マイナー番号 (小数点の右側) を増やすこともできます。
チェックイン日付。コンポーネントがチェックインされた日時です。
チェックインユーザー。ユーザー IDです。 この属性は、プロビジョニングシステムのプロセスを監査する場合に便利です。
カテゴリ。コンポーネントリストをフィルタリングするために、任意で使用するオブジェクトです。カテゴリオブジェクトを作成すると、以後はそのオブジェクトを使用してコンポーネントを分類できます。
ソース。このコンポーネントに組み込まれているリソースです。ソースは、単一ファイルリソースにすることも、ほかのコンポーネントを含むリストにすることもできます。
コンポーネント変数。コンポーネントリソースの配備に必要な変数と値 (名前と値のペア) です。「コンポーネント変数」を参照してください。
隠し。コンポーネントリストでコンポーネントを表示するかどうかを指定するための特性です。デフォルトでは、コンポーネントは表示されます。
バージョンの古いコンポーネントや管理対象ではないコンポーネントを隠すと、コンポーネントリストを短縮できます。短縮リストには、隠されていない、つまり現在管理しているコンポーネントが含まれます。隠しコンポーネントは、表示を要求しないかぎり、リストには含まれません。
component procedure (またはprocedure) は、コンポーネントに組み込まれ、コンポーネントを管理するプログラムです。コンポーネント手続きはコンポーネントのインストール、アンインストール、または制御を行います。手続きはコンポーネントのビルド時に作成されます。
コンポーネントには複数の手続きを指定できます。たとえば、制御手続きをコンポーネントに組み込むことで、そのコンポーネントがモデル化するアプリケーションの起動と停止を行います。
コンポーネントタイプの拡張により作成されたコンポーネントは、そのコンポーネントタイプによって定義された手続きを継承します。
複合コンポーネントを作成した場合は、デフォルトのインストールおよびアンインストール手続きを継承します。通常、コンポーネントは関連付けられるコンポーネントタイプから手続きを継承します。
Component inheritanceとは、コンポーネントが別のコンポーネントから属性や動作を取得する手段です。作成したコンポーネントは、関連付けられるコンポーネントタイプからvariables、snapshots、およびproceduresを継承します。
継承を用いることによって、強力かつ柔軟性の高いコンポーネントモデルになります。たとえば、IIS Aplication コンポーネントタイプに基づくコンポーネントが 1000 個あるとします。これらのコンポーネントに機能を追加するとします。IIS Application コンポーネントタイプに機能を追加することで、そのコンポーネントタイプに属する 1000 個のコンポーネントが新しい機能を継承することになります。
コンポーネントではvariablesを使用できます。変数は値を格納するユーザー定義のコンテナであり、deployment時に使用されます。
component variableは、コンポーネントの外部にあるオブジェクトからコンポーネントの一部にアクセスして設定できるようにするために使用します。たとえば、コンポーネントにホスト単位で変更される installPath という変数を設定できます。この変数では、各コンポーネントのインストール先を定義します。
コンポーネント変数の値を別のコンポーネント変数への参照にすることができます。これには、コンポーネントのコンテナによって定義された変数が含まれます。コンテナコンポーネントに入れ子のコンポーネントを追加すると、ブラウザインタフェースは、参照変数がコンテナで定義されているかどうかを検証します。その変数がコンテナコンポーネントで定義されていない場合、ブラウザインタフェースは自動的に参照変数をコンテナの変数リストに追加します。
たとえば、単純コンポーネントは通常、installPath 変数がコンテナコンポーネントの installPath 変数の値を持つように定義します。この場合、参照変数の構文は :[container:installPath] です。変数置換についての詳細は、第 6 章「構成の生成」を参照してください。
コンポーネント変数は、コンポーネントの配備時に評価されて値が割り当てられます。コンポーネント変数を使用して、配備の実装に必要な情報 (ホスト名、IP アドレス、パスなど) を指定します。
変数設定値 は、変数の値の集まりであり、1 つ以上のコンポーネント変数について、デフォルト値を変更する目的で使用できます。使用する変数設定値に基づいて、コンポーネント変数にさまざまな値を指定できます。どの変数設定値を使用するかは、プランの実行時に指定します。
たとえば、コンポーネントを運用環境および開発環境など、異なる環境に配備します。定義したコンポーネント変数が、環境間の相違を認識するように設定されている場合、変数設定値を使用することによって、各環境に合わせてコンポーネントを設定できます。たとえば、あるセットを使用して運用環境を設定し、別のセットで開発環境用にコンポーネントを設定することが可能です。
変数のオーバーライドによって、複合コンポーネントの変数のデフォルト値を無効にできます。単純コンポーネントでこの機能を使用することはできません。
コンポーネントにほかのコンポーネント (child components) が含まれている場合、変数設定値が有効なのは上位レベルのparent componentに限られます。すべての子コンポーネントは、デフォルトの変数値を使用します。子コンポーネントは、次の 2 通りの方法で、親コンポーネントから変数値を取得できます。
コンテナ (親) コンポーネントは、包含 (子) コンポーネントに変数値を「プッシュ」します。子コンポーネントのデフォルト値を変更するには、子コンポーネントを収容するコンポーネントを作成するときに、変数のオーバーライドを設定します。参照コンポーネントごとに、使用できる変数のオーバーライドセットを設定します。
包含 (子) コンポーネントは、コンテナ (親) コンポーネントから変数値を「プル」します。包含コンポーネントの変数値は 1 つ以上がコンテナコンポーネントの変数値に基づいて定義されます。包含コンポーネントは、変数置換構文 :[container:varname] を変数のデフォルト値に使用します。
ステップは、プランとコンポーネントの両方に組み込むことのできる単純な命令です。
ステップについては、「ステップの概要」を参照してください。