Cosminexus V9 アプリケーションサーバ 仮想化システム構築・運用ガイド
仮想サーバマネージャから任意のタイミングで,仮想サーバ上に配置したユーザ作成のスクリプト(ユーザスクリプト)を実行する機能です。この機能は,ユーザスクリプト機能ともいいます。ユーザスクリプト機能の実行対象とする,仮想サーバの論理ステータスに制限はありません。フックスクリプト機能と異なり,ユーザスクリプト機能は,仮想サーバの初期構築(論理ステータスがinitial(初期))以外のタイミングでも処理を実行できます。ユーザスクリプトを実行するには,vmiunitコマンドのサブコマンド「script」を使用します。
ユーザスクリプト機能を使用すると,例えば,構築済みの仮想サーバに対してほかの製品をセットアップする処理を,任意のタイミングで仮想サーバマネージャから一括で実施する運用ができるようになります。
- <この節の構成>
- (1) 設定方法
- (2) 実行方法
- (3) 実行結果
- (4) ユーザスクリプト機能の実行例
- (5) 注意事項
ユーザスクリプトは,ユーザが任意で作成するファイルです。作成したファイルは,vmiunitコマンドのサブコマンド「script」を実行したタイミングで初めて仮想サーバ上に配布され,その処理が実行されます。
ユーザスクリプトのファイル名と格納先,記述形式を次の表に示します。
表7-6 ユーザスクリプトのファイル名と格納先,記述形式
仮想サーバのゲストOS |
ファイル名
(固定) |
ファイルの格納先 |
記述形式 |
Windows |
user-script.bat |
<ユーザスクリプト配置ディレクトリ> |
バッチ形式 |
Linux |
user-script |
<ユーザスクリプト配置ディレクトリ> |
シェル形式 |
<ユーザスクリプト配置ディレクトリ>は,任意のディレクトリです。このディレクトリには,ユーザスクリプト以外のファイルやディレクトリも配置できます。ここに配置したファイルやディレクトリは,コマンド実行時にユーザスクリプトが配布されると同時に,仮想サーバ上へ配布されてユーザスクリプトから参照できるようになります。<ユーザスクリプト配置ディレクトリ>内のファイルおよびディレクトリは,仮想サーバ上の次のディレクトリに格納されます。ここに格納されたファイルおよびディレクトリは,ユーザスクリプトの処理が完了すると削除されます。
- ゲストOSがWindowsの場合
- <Application Serverのインストールディレクトリ>\sinagent\work\userscript_dir
- ゲストOSがLinuxの場合
- <Application Serverのインストールディレクトリ>/sinagent/work/userscript_dir
また,ユーザスクリプトでは,実行時に設定される環境変数「VMI_VIRTUALID」を使用できます。環境変数「VMI_VIRTUALID」には,仮想サーバ識別子(管理LANに接続されているIPアドレス)が設定されます。
- 実行できるユーザ
- 仮想サーバマネージャ管理者アカウントを持つユーザ
- システム構築者アカウントを持つユーザ
- 実行するコマンドまたは呼び出し元の機能
- vmiunitコマンドのサブコマンド「script」を実行します。
ユーザスクリプトの実行タイミングを次の図に示します。なお,コマンドの実行によって呼び出されたユーザスクリプトは,Windowsの場合はローカルシステムアカウント,Linuxの場合はスーパーユーザで実行されます。
図7-6 ユーザスクリプトの実行タイミング
ユーザスクリプトに設定した処理が実行されます。ユーザスクリプトの設定内容が実行結果となり,戻り値によって機能の成功または失敗が判断されます。
- 戻り値が0の場合:ユーザスクリプト機能の実行成功(正常終了)
- 戻り値が0以外の場合:ユーザスクリプト機能の実行失敗(異常終了)
ユーザスクリプト機能の実行が,1台以上の仮想サーバで失敗した場合,コマンドの戻り値は64(異常終了)となります。
(4) ユーザスクリプト機能の実行例
ここでは,仮想サーバのネットワーク情報を書き出す処理をユーザスクリプトで実行する場合を例にして,実行手順を説明します。
- 管理用端末マシンから仮想化システム管理用サーバマシンにリモート接続します。
- <ユーザスクリプト配置ディレクトリ>にユーザスクリプトを作成します。
ユーザスクリプト(user-script.bat)の作成例を次に示します。
mkdir d:\data
netstat > d:\data\netstat_%VMI_VIRTUALID%.txt
ipconfig > d:\data\ipconfig_%VMI_VIRTUALID%.txt
|
- vmiunitコマンドのサブコマンド「script」を使用して,指定したパスにあるユーザスクリプトを実行します。
ここでは,管理ユニット「gyoumu_a」に属するすべての仮想サーバに対して,手順1.で作成したuser-script.batを実行する場合のコマンドの実行例を示します。
vmiunit script -unit gyoumu_a -dir <ユーザスクリプト配置ディレクトリ>
|
- 管理用端末マシンからハイパーバイザ管理用サーバマシンにリモート接続します。
- 仮想サーバからネットワーク情報を書き出した結果ファイルを取得します。
ここでは,スクリプトに記述した,次のファイルを取得します。
- d:\data\netstat_<仮想サーバ識別子>.txt
- d:\data\ipconfig_<仮想サーバ識別子>.txt
ユーザスクリプト機能を使用する場合の注意事項を次に示します。
- ユーザスクリプトには,次の処理を記述しないでください。ユーザスクリプトが実行したまま終了しなくなります。
- ユーザスクリプトに引数は記述できません。
- ユーザスクリプトから出力される標準出力,標準エラー出力などは,ログに取得されません。このため,ユーザスクリプトの標準出力,標準エラー出力を取得する場合は,ユーザスクリプトの中でファイルに出力するなどの処理を実行する必要があります。
- ユーザスクリプトと,<ユーザスクリプト配置ディレクトリ>のファイルやディレクトリは,ユーザスクリプトの処理が完了すると仮想サーバ上から削除されます。仮想サーバ上に残しておきたいファイルは,あらかじめユーザスクリプトの中でコピーするなどの処理を実行する必要があります。
- ユーザスクリプト実行時のカレントディレクトリは,<サーバ通信エージェントによって起動されるコマンド用の作業ディレクトリ>となります。<サーバ通信エージェントによって起動されるコマンド用の作業ディレクトリ>のデフォルトを次に示します。
- ゲストOSがWindowsの場合
- <Application Serverのインストールディレクトリ>\sinagent\work
- ゲストOSがLinuxの場合
- <Application Serverのインストールディレクトリ>/sinagent/work
このため,<ユーザスクリプト配置ディレクトリ>に含まれるファイルを相対パスで参照する場合には,カレントディレクトリを意識してスクリプトを記述してください。<ユーザスクリプト配置ディレクトリ>の仮想サーバ上への転送先ディレクトリのデフォルトは,次のとおりです。
- ゲストOSがWindowsの場合
- <Application Serverのインストールディレクトリ>\sinagent\work\userscript_dir
- ゲストOSがLinuxの場合
- <Application Serverのインストールディレクトリ>/sinagent/work/userscript_dir
- -timeoutオプションを指定してvmiunitコマンドのサブコマンド「script」を実行した場合に,実行待ち時間を超えてユーザスクリプトが実行中のときはタイムアウトが発生します。タイムアウトが発生しても,ユーザスクリプトのプロセスは強制的に終了されません。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.