この章では、プランの概念とコンポーネントの配備方法について簡単に説明します。
コンポーネントの配備方法は、次の 3 つの中から選択できます。
コンポーネントプロシージャー。1 つのコンポーネントと 1 つのホスト (またはホストセット) を使用する単純なシングル操作に適しています。
プラン
生成されたプラン。1 つのコンポーネントと 1 つのホスト (またはホストセット) を使用する複数の操作に適しています。
カスタムプラン。複数のコンポーネントと複数のホストを使用する複雑な操作に適しています。
プロビジョニングシステム では、有効なホストにコンポーネントをいくつでも配備することができます。配備可能なコンポーネントの数は、ホスト上のファイルシステムによってのみ制限されます。ファイルシステムはそれぞれに配備可能なファイルの数を制限しているため、1 つのディレクトリに配備するコンポーネントが多すぎると、そのファイルシステムの制限を超える可能性があります。コンポーネントとファイルの関係は、必ずしも等比ではありません。たとえば、1 つのコンポーネントに 100,000 個のファイルがあるとファイルシステムの制限を越える場合があり、100,000 個のコンポーネントのいずれにもファイルがないとファイルシステムの制限内に収まる場合があります。
ファイルシステムの制限を超えても、コンポーネントが配備されたときに直接障害を引き起こさない場合もあります。ただし、次第に性能が劣化したり、あるとき予測不可能な障害が起こるなどの形で問題が発生する可能性があります。
1 つのディレクトリがサポートできるファイル数の上限は、ファイルシステムによって異なり、オペレーティングシステムの構成に左右されることがあります。ファイルシステムの制限を理解し、単一の大きいディレクトリではなく、より小さい複数のサブディレクトリにコンポーネントを配備することによって、ディレクトリへの過負荷を避けることができます。コンポーネントを配備するときに従来から使われている対策は、1 つのディレクトリに保存するファイル数を 30,000 個以内にすることです。
複数のコンポーネントを使用したり、ホスト間での同期が不要な場合は、配備プランは必要ありません。その代わりに、配備するコンポーネントをチェックインしたときに自動生成される直接実行コンポーネントプロシージャーを使用することができます。
ほとんどのコンポーネントには、インストール、アンインストール、スナップショットの各手続きが含まれています。このほかに、制御手続きが含まれている場合もあります。制御手続きは、インストール済みのコンポーネントを管理する機能を持っています。たとえば、アプリケーションの起動または停止などを行うことができます。
ここでは、ブラウザインタフェースを使用してコンポーネントを直接配備する方法について説明します。この手続きの代わりに、次のコマンドを使用することもできます。
pdp.p.genplan – プランを生成します。
pe.p.run – プランを実行します。
このコマンドの詳細な説明については、『Sun N1 Service Provisioning System 5.1 コマンド行インタフェース(CLI) リファレンスマニュアル』の第 9 章「pdb: プランを管理する CLI コマンド」 および 『Sun N1 Service Provisioning System 5.1 コマンド行インタフェース(CLI) リファレンスマニュアル』の第 10 章「pe: プランを実行する CLI コマンド」を参照してください。
コンポーネントの開発については、『Sun N1 Service Provisioning System 5.1 プランとコンポーネントの開発者ガイド』を参照してください。
直接実行コンポーネントプロシージャーによって生成されたプランを削除する必要はありません。これらのプランは、生成元のコンポーネントが削除された時点でシステムから自動的に削除されます。詳細については、『Sun N1 Service Provisioning System 5.1 プランとコンポーネントの開発者ガイド』の「コンポーネントを削除する」を参照してください。
直接実行コンポーネントプロシージャーを使用するには、そのコンポーネントが含まれるフォルダに対して Run Component Procedures アクセス許可を持つユーザーグループに属する必要があります。また、このユーザーが、コンポーネントを配備する予定のホストセットに対して、Allow on Host Set アクセス許可を持っている必要があります。
ナビゲーションメニューから「Components」を選択します。
「Components」ページが表示されます。
コンポーネントの一覧表から、配備するコンポーネントの記述が含まれる行を選択して、「Details」をクリックします。
コンポーネントの「Details」ページが表示されます。
必要に応じて、配備する予定のコンポーネントが表示されるようにフォルダを変更します。
コンポーネントプロシージャーの表から、実行する手続きを選択して、「Run」をクリックします。
プロビジョニングシステムにより、プランが生成されます。生成されたプランは、/system/autogen フォルダに格納されます。
生成されたプランの「Run」ページが表示されます。
「Plan Parameters」領域で、配備するコンポーネントの変数設定を選択します。
当該コンポーネントの変数設定が確立されている場合、メニューから適切な設定を選択します。
メニューから設定を選択できない場合は、「Select From List」をクリックします。
「Select Variable Settings From List」ウィンドウが表示されます。
コンポーネントの配備先を選択します。
「Plan Variables」領域で、設定する変数を構成します。
構成対象の変数の有無は、選択したコンポーネントプロシージャーによって異なります。
「Options」領域で、詳細なプリフライトを行うかどうかを選択します。
このプリフライトでは、リモートエージェント上で実行されるプランの各手順をシミュレートすることにより、以下の処理が正常に行われるかどうかをテストすることができます。
リモートインストール
execNative 呼び出し
ファイル変換
ファイルの削除 (リソースのアンインストール時)
詳細なプリフライトを行うと、実際に運用を開始するまでの準備期間が長くなります。
(省略可能) 同時に実行するホストの数を制限する場合は、フィールドにホスト数を指定します。
あるプランを複数のホストに対して同時に実行した場合、すべてのホストが手順を完了するまで、次の手順に進むことはできません。ホスト数が多すぎると、次の手順に進む前に、ネットワーク接続がタイムアウトになる可能性があります。たとえば、ホスト A が手順 1 を完了したあと、手順 2 の実行前の接続確認 (ping) が行われるまでの時間が長すぎて、ネットワーク接続がタイムアウトになることがあります。
(省略可能) プラン全体の実行時間、またはネイティブ呼び出しの実行時間を制限する場合は、フィールドに数値を入力し、メニューから時間の単位を選択します。
プランまたはネイティブ呼び出しの実行時間を制限すると、応答しないホストがあるためにプランの実行が途中で停止するのを防ぐことができます。
プランの実行時の障害について報告する通知規則を設定しておくと、実行途中でタイムアウトになった場合、プランが正常に実行されなかったことを知らせるメッセージを受け取ることができます。
通知規則の設定については、『Sun N1 Service Provisioning System 5.1 システム管理者ガイド』の「電子メール通知の構成」を参照してください。
コンポーネントを配備するかどうかを選択します。
プロビジョニングシステムでは、次の 2 種類のプランを実行できます。
生成されたプラン
カスタムプラン
プロビジョニングシステムは、複数のコンポーネントプロシージャーから成るプランを自動的に生成することができます。このプランは、そのまま使用することも、XML を使ってより複雑なプランのテンプレートとして保存することもできます。
XML でカスタムプランを作成することができます。カスタムプランの作成については、『Sun N1 Service Provisioning System 5.1 プランとコンポーネントの開発者ガイド』の「プランの作成」 and the 『Sun N1 Service Provisioning System 5.1 XML スキーマリファレンスガイド』を参照してください。
ここでは、ブラウザインタフェースを使用してプランを生成する方法について説明します。次のコマンドでも、プランを生成することができます。
pdp.p.genplan – プランを生成します。
pe.p.run – プランを実行します。
これらのコマンドの詳細な説明については、『Sun N1 Service Provisioning System 5.1 コマンド行インタフェース(CLI) リファレンスマニュアル』の第 9 章「pdb: プランを管理する CLI コマンド」を参照してください。
プランを生成するためには、プランを生成するコンポーネントが含まれるフォルダに対して、Create、Edit 、Delete のアクセス許可を持つユーザーグループに属する必要があります。
ナビゲーションメニューから「Components」を選択します。
「Components」ページが表示されます。
必要に応じて、配備する予定のコンポーネントが表示されるようにフォルダを変更します。
コンポーネントの一覧表から、配備するコンポーネントの記述が含まれる行を選択して、「Details」をクリックします。
コンポーネントの「Details」ページが表示されます。
「Component Procedures」表から、プランに含める手続きを選択します。
「Component Procedures」表の下部にある「Generate Plan With Checked Procedures」をクリックします。
生成されたプランの「Advanced Edit」が表示されます。
「Plan」フィールドに新しいプランの名前を入力します。
「Check In」をクリックします。
次のようなメッセージが表示される場合があります。「Warning - plan names and/or paths differ.」このメッセージは、直前に指定したプラン名が、XML モデルで指定されているプラン名と一致していない場合に表示されます。「Plan」フィールドに入力した名前になるように、XML モデルが更新されます。
コンポーネントのチェックインを確認します。
新しいプランの「Details」ページが表示されます。
プランを利用してコンポーネントを配備する場合、処理が完了するまでに相当の時間がかかる可能性があります。コンポーネントが配備されるまでのプロセスをひとめで確認できるようにするには、プランを監視し、実行中のプランや完了したプランに関する情報を表示します。配備の途中でプランを停止することもできます。
ここでは、ブラウザインタフェースを使用してプランを実行する方法について説明します。次のコマンドでも、プランを実行することができます。
pe.p.run – プランを実行します。
このコマンドの詳細な説明については、『Sun N1 Service Provisioning System 5.1 コマンド行インタフェース(CLI) リファレンスマニュアル』の第 10 章「pe: プランを実行する CLI コマンド」を参照してください。
プランの変数設定を設定するために必要なインストール情報を準備してください。
プランを実行するには、実行するプランが含まれるフォルダに対して、Allow on Host Set 許可を持つユーザーグループに属する必要があります。
プランの「Details」ページに移動します。
「Run」をクリックします。
プランの「Run」ページが表示されます。
「Plan Parameters」領域で、配備するコンポーネントの変数設定を選択します。
当該コンポーネントの変数設定が確立されている場合、メニューから適切な設定を選択します。
メニューから設定を選択できない場合は、「Select From List」をクリックします。
「Select Variable Settings From List」ウィンドウが表示されます。
コンポーネントの配備先を選択します。
「Plan Variables」領域で、設定する変数を構成します。
構成対象の変数の有無は、プランの内容によって異なります。
「Options」領域で、詳細なプリフライトを行うかどうかを選択します。
このプリフライトでは、リモートエージェント上で実行されるプランの各手順をシミュレートすることにより、以下の処理が正常に行われるかどうかをテストすることができます。
リモートインストール
execNative 呼び出し
ファイル変換
ファイルの削除 (リソースのアンインストール時)
詳細なプリフライトを行うと、実際に運用を開始するまでの準備期間が長くなります。
(省略可能) 同時に実行するホストの数を制限する場合は、フィールドにホスト数を指定します。
あるプランを複数のホストに対して同時に実行した場合、すべてのホストが手順を完了するまで、次の手順に進むことはできません。ホスト数が多すぎると、次の手順に進む前に、ネットワーク接続がタイムアウトになる可能性があります。たとえば、ホスト A が手順 1 を完了したあと、手順 2 の実行前の接続確認 (ping) が行われるまでの時間が長すぎて、ネットワーク接続がタイムアウトになることがあります。
(省略可能) プラン全体の実行時間、またはネイティブ呼び出しの実行時間を制限する場合は、フィールドに数値を入力し、メニューから時間の単位 (分など) を選択します。
プランまたはネイティブ呼び出しの実行時間を制限すると、応答しないホストがあるためにプランの実行が途中でストップするのを防ぐことができます。
プランの実行時の障害について報告する通知規則を設定しておくと、実行途中でタイムアウトになった場合、プランが正常に実行されなかったことを知らせるメッセージを受け取ることができます。
通知規則の設定については、『Sun N1 Service Provisioning System 5.1 システム管理者ガイド』の「電子メール通知の構成」を参照してください。
コンポーネントを配備するかどうかを選択します。
ここでは、ブラウザインタフェースを使用してプラン実行の進行状況を表示する方法について説明します。次のコマンドでも、プランの履歴を表示できます。
pe.p.la – 実行中のプラン、完了したプランを一覧表示します。
pe.p.lo – 実行中のプランまたは完了したプランに関する情報を一覧表示します。
pe.pi.lo – プランの実行に使用されたパラメータをリストします。
これらのコマンドの詳細な説明については、『Sun N1 Service Provisioning System 5.1 コマンド行インタフェース(CLI) リファレンスマニュアル』の第 10 章「pe: プランを実行する CLI コマンド」を参照してください。
ナビゲーションメニューで、「Application Deployment」カテゴリを展開し、「Run History」をクリックします。
実行中、完了済みのプランおよびプリフライトがすべて表示されます。「Completed」欄にタイムスタンプが表示されているプランは、現在実行中のプランです。このタイムスタンプは、このプランの実行が開始された時刻を表しています。
特定のプランの詳細情報を表示する場合は、「Results」をクリックします。
「Details」、「Preflight」、「Deployment」の各アイコンを選択すると、プランの詳細、プリフライトの結果、配備の結果というように、表示内容が切り替わります。
「Details」ページに表示される情報は、次のとおりです。
ターゲットホスト
このプランのパラメータとして使用された変数設定
このプランに課された制限
このプランを実行したユーザー
ここでは、ブラウザインタフェースを使用してプラン実行を停止する方法について説明します。次のコマンドでも、プランの実行を停止することができます。
pe.p.stop – 実行中のプランを停止します。
このコマンドの詳細な説明については、『Sun N1 Service Provisioning System 5.1 コマンド行インタフェース(CLI) リファレンスマニュアル』の第 10 章「pe: プランを実行する CLI コマンド」を参照してください。
プランの実行を停止するには、そのプランの実行を開始したユーザーであるか、 admin ユーザーグループのメンバーである必要があります。
ここでは、ブラウザインタフェースを使用して、コンポーネントから生成されていないプランを削除する方法について説明します。
直接実行コンポーネントプロシージャーから生成されたプランを削除する必要はありません。これらのプランは、生成元のコンポーネントが削除された時点でシステムから自動的に削除されます。詳細については、『Sun N1 Service Provisioning System 5.1 プランとコンポーネントの開発者ガイド』の「コンポーネントを削除する」を参照してください。
次のコマンドを使用してプランを削除することもできます。
pe.p.del – プランを削除します。
このコマンドの詳細な説明については、『Sun N1 Service Provisioning System 5.1 コマンド行インタフェース(CLI) リファレンスマニュアル』の第 10 章「pe: プランを実行する CLI コマンド」を参照してください。
プランを削除するには、プランを作成したユーザーであるか、または admin ユーザークループのメンバーである必要があります。
プランの「Details」ページに移動します。
「削除」をクリックします。
プランを削除するかどうかを確認するよう求められます。
「Continue to Delete」をクリックします。
プランが削除されると、「Plan」の一覧表にプランは表示されません。
直接実行コンポーネントプロシージャーと生成されたプランを使って、アプリケーションを管理することができます。
コンポーネントのバージョンを新しくすることができます。新しいコンポーネントには、製品リビジョン、ファイルへの変更点、新規追加ファイルの格納ディレクトリなどの新しい情報が反映されています。
単純コンポーネントを更新する場合、ユーザーは直接実行インストール手続きを実行するだけで済みます。古いバージョンのコンポーネントを新しいバージョンで上書きする処理は、自動的に行われます。
コンポーネント (複数の単純コンポーネントを参照するコンポーネント) を更新する場合、新旧のバージョンに含まれる参照先の単純コンポーネントが同じであるなら、ユーザーは直接実行インストール手続きを実行するだけで済みます。古いバージョンの単純コンポーネントを新しいバージョンで上書きする処理は、自動的に行われます。
複合コンポーネントを更新する場合、新旧のバージョンで参照先の単純コンポーネントが異なっているなら、古いバージョンのコンポーネントをアンインストールして、新しいバージョンをインストールする必要があります。古いバージョンをアンインストールすると、不要になったコンポーネントやこれ以上更新されることがないコンポーネントが除去され、ワークスペースがすっきりします。
コンポーネントを正しくアップグレードできない場合や、アップグレード後のアプリケーションで問題が発生する場合は、新しいバージョンのコンポーネントの障害追跡を行う間、信頼性の高い旧バージョンのコンポーネントにダウングレードすることができます。
信頼性の高いバージョンのコンポーネントを再配備するためには、このコンポーネントが含まれるフォルダに対して、Run Component Procedure 許可と Allow on Host Set 許可を持っている必要があります。
壊れたコンポーネントをアンインストールします。
コンポーネントの「Details」ページで、「Run for the Default」をクリックします。コンポーネントプロシージャーをアンインストールします。
プランの「Run」ページで、アンインストールするコンポーネントのホストを選択します。
「Run Select Installations」をクリックします。
「Run Plan (Includes Preflight)」をクリックします。
壊れたコンポーネントをアンインストールすると、古くなった不要なファイルが、それまでの配備先システムから除去されます。
コンポーネントをどのバージョンまでダウングレードするかを選択します。
この信頼性の高いバージョンのコンポーネントをインストールします。
コンポーネントをあるサーバーから別のサーバーへ移行する場合は、現在のホストから除去するコンポーネントをアンインストールして、このコンポーネントを新しいホストにインストールするだけで済みます。
複数の単純コンポーネントをグループにまとめて同じホストまたはホストセットに配備する場合に、コンテナコンポーネントを作成できます。単純コンポーネントをグループ化すると、配備に必要な時間が短縮されるだけでなく、一部のコンポーネントの配備漏れも防ぐことができます。
コンテナコンポーネントを作成するためには、コンポーネントを作成するフォルダに対して、Create、Edit、Delete のアクセス許可を持っている必要があります。
「Components」ページで、新しいコンポーネントを作成します。
「Referenced Components」で、コンテナにコンポーネントを追加します。
参照するコンポーネントがすでに存在している場合は、「Reference Existing」をクリックします。
「Reference Existing Components in Current Component」ウィンドウが表示されます。
コンテナコンポーネント内から参照するコンポーネントを選択し、「Reference Checked Components」をクリックします。
コンポーネント変数を含むコンポーネントを参照する場合は、そのコンポーネント変数がコンテナコンポーネントに追加される前に一覧表示されます。
必要に応じて、コンポーネント変数名の横のテキストフィールドで、そのコンポーネント変数のデフォルト値を設定します。
「Continue」をクリックして、コンポーネントを参照します。
コンテナコンポーネントの「Edit」ページに戻ります。「Referenced Components」に、参照先コンポーネントが一覧表示されます。
参照するコンポーネントが存在しない場合は、「Check In New」をクリックします。
新しいコンポーネントを作成します。
新しいコンポーネントを作成する方法については、『Sun N1 Service Provisioning System 5.1 プランとコンポーネントの開発者ガイド』の第 2 章「コンポーネント」を参照してください。
新しいコンポーネントを作成すると、コンテナコンポーネントの「Referenced Components」の一覧に新しいコンポーネントが追加されます。
必要に応じて、コンテナコンポーネントで定義する必要があるコンポーネント変数の値を指定します。
たとえば、コンポーネントが :[container....] という変数を持っている場合、コンテナコンポーネントで値を定義する必要があります。