(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンのそれぞれを動作させる動作環境の設定順序を決定する際に、前記複数の仮想マシンで実行されるソフトウェア間の処理の依存関係から、各仮想マシンについて他の仮想マシンから参照されるか否かを判定し、他の仮想マシンから参照されるパラメータのみを有する第１の仮想マシン、前記第１の仮想マシンを除いた仮想マシンのうち他の仮想マシンから参照されるパラメータおよび他の仮想マシンから参照されないパラメータの両方を有する第２の仮想マシン、前記第１の仮想マシンおよび前記第２の仮想マシンを除いた仮想マシンのうち他の仮想マシンから参照されないパラメータのみを有する第３の仮想マシンの順番で、前記各仮想マシンのそれぞれの動作環境を設定すると決定する決定部と、
前記決定部によって決定された設定順序で、前記仮想マシンのそれぞれの動作環境を設定する動作環境設定部と、
を有することを特徴とする設定制御装置。
【請求項２】
前記決定部は、さらに、
前記複数の仮想マシンで実行されるソフトウェアについての設定順序を決定し、
前記決定部によって決定された設定順序で、前記ソフトウェアを動作させるパラメータを設定するソフトウェア設定部
をさらに有することを特徴とする請求項１に記載の設定制御装置。
【請求項３】
前記決定部は、さらに、
前記依存関係に従って、前記動作環境の動作開始順序および前記ソフトウェアについての動作開始順序を決定し、
前記決定部によって決定された動作開始順序で、前記各仮想マシンの動作を開始させる動作環境制御部と、
前記決定部によって決定された動作開始順序で、前記ソフトウェアの動作を開始させるソフトウェア制御部と、
をさらに有することを特徴とする請求項２に記載の設定制御装置。
【請求項４】
前記決定部は、前記ソフトウェアの動作開始よりも、前記仮想マシンの動作開始を先に実行すると決定することを特徴とする請求項３に記載の設定制御装置。
【請求項５】
前記決定部は、前記複数の仮想マシンで形成される仮想システムのシステム構成を定義するテンプレートに入力された情報と、前記ソフトウェアのパラメータを定義するテンプレートに入力された情報とを用いて、前記ソフトウェアの接続関係を抽出し、抽出したソフトウェアの接続関係にしたがって、前記仮想マシンのそれぞれの動作環境の設定順序を決定することを特徴とする請求項１に記載の設定制御装置。
【請求項６】
前記決定部は、他のソフトウェアから参照されるパラメータのみを有する第１のソフトウェア、前記第１のソフトウェアを除いたソフトウェアのうち他のソフトウェアから参照されるパラメータおよび他のソフトウェアから参照されないパラメータの両方を有する第２のソフトウェア、前記第１のソフトウェアおよび前記第２のソフトウェアを除いたソフトウェアのうち他のソフトウェアから参照されないパラメータのみを有する第３のソフトウェアの順番で、前記ソフトウェアを動作させるパラメータを設定すると決定することを特徴とする請求項２に記載の設定制御装置。
【請求項７】
前記決定部は、動作を開始させた前記他のソフトウェアから参照されるパラメータと他のソフトウェアから参照されないパラメータとを有するソフトウェアが起動に失敗した場合に、前記ソフトウェアを再起動させることを特徴とする請求項６に記載の設定制御装置。
【請求項８】
仮想マシンに対して設定制御を実行する設定制御装置に用いられる設定制御方法において、
決定部が、複数の仮想マシンのそれぞれを動作させる動作環境の設定順序を決定する際に、前記複数の仮想マシンで実行されるソフトウェア間の処理の依存関係から、各仮想マシンについて他の仮想マシンから参照されるか否かを判定し、他の仮想マシンから参照されるパラメータのみを有する第１の仮想マシン、前記第１の仮想マシンを除いた仮想マシンのうち他の仮想マシンから参照されるパラメータおよび他の仮想マシンから参照されないパラメータの両方を有する第２の仮想マシン、前記第１の仮想マシンおよび前記第２の仮想マシンを除いた仮想マシンのうち他の仮想マシンから参照されないパラメータのみを有する第３の仮想マシンの順番で、前記各仮想マシンのそれぞれの動作環境を設定すると決定する決定工程と、
動作環境設定部が、前記決定工程により決定された設定順序で、前記仮想マシンのそれぞれの動作環境を設定する動作環境設定工程、
を実行することを特徴とする設定制御方法。
【請求項９】
仮想マシンに対して設定制御を実行する設定制御装置で実行される設定制御プログラムにおいて、
前記設定制御装置を
複数の仮想マシンのそれぞれを動作させる動作環境の設定順序を決定する際に、前記複数の仮想マシンで実行されるソフトウェア間の処理の依存関係から、各仮想マシンについて他の仮想マシンから参照されるか否かを判定し、他の仮想マシンから参照されるパラメータのみを有する第１の仮想マシン、前記第１の仮想マシンを除いた仮想マシンのうち他の仮想マシンから参照されるパラメータおよび他の仮想マシンから参照されないパラメータの両方を有する第２の仮想マシン、前記第１の仮想マシンおよび前記第２の仮想マシンを除いた仮想マシンのうち他の仮想マシンから参照されないパラメータのみを有する第３の仮想マシンの順番で、前記各仮想マシンのそれぞれの動作環境を設定すると決定する決定部と、
決定した設定順序で、前記仮想マシンのそれぞれの動作環境を設定する動作環境設定部として機能させるための設定制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設定制御装置、設定制御方法および設定制御プログラムに関する。
【背景技術】
【０００２】
従来、仮想システムをユーザに提供する技術として、複数のネットワークとサーバとを含むシステムをテンプレートとして登録し、ユーザの要求にしたがってシステムを配備する技術が知られている。テンプレートで登録されるシステムを配備することで、テンプレートに含まれるサーバのイメージはクローニングされ、独立した仮想システムとして動作する。
【０００３】
仮想システムを配備した場合、仮想システムに含まれる仮想サーバに新しいＩＰ（Internet  Protocol）アドレスやホスト名が割り与えられ、これに伴って、ＯＳ（Operating  System）またはソフトウェアのＩＰアドレスやホスト名も自動的に変更される。ところが、ソフトウェアの接続先を指定するＩＰアドレスやホスト名のパラメータ、すなわちソフトウェア間の接続関係を示すパラメータなどについては、手動で設定変更することになる。なお、ソフトウェアの接続関係を示すパラメータの一例としてはポート番号などがある。例えば、ＷｅｂサーバＡのソフトウェアＡが利用するポート番号２００を自動設定できたとしても、ソフトウェアＡの接続先であるＷｅｂサーバＢのソフトウェアＢに対しては、ポート番号２００を自動で設定することができず、手動で設定することになる。
【０００４】
近年では、仮想システムを配備した場合に、ソフトウェア間の接続関係を示すパラメータの設定にかかる負荷を軽減する技術が知られている。例えば、配備する仮想システムごとにフローを生成し、生成したフローに基づいてソフトウェア間の接続関係を示すパラメータを設定する技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−３９６２６号公報
【特許文献２】特開２００３−３１８９００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、ソフトウェア間の接続関係を示すパラメータを自動で設定することができないという問題がある。
【０００７】
例えば、テンプレートを用いて仮想システムを配備する場合、配備されるシステムは顧客や業務によって異なることが一般的である。また、顧客や業務が異なれば、使用されるソフトウェアの種類や数も異なる。このため、配備されるシステムごとにソフトウェアの種類や数を確認して各システムに適したフローを生成することは、非常に手間のかかる作業である。このように、従来技術では、仮想システムを配備するたびに、手間のかかるフローを毎回生成することになるので、ソフトウェア間の接続関係を示すパラメータを自動で設定できるとは言い難い。
【０００８】
１つの側面では、複数の仮想マシンの動作環境の設定において、ソフトウェア間の処理の依存関係に起因するエラーを抑制することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、設定制御装置は、複数の仮想マシンで実行されるソフトウェア間の処理の依存関係にしたがって、前記複数の仮想マシンのそれぞれを動作させる動作環境の設定順序を決定する決定部を有する。設定制御装置は、前記決定部によって決定された設定順序で、前記仮想マシンのそれぞれの動作環境を設定する動作環境設定部を有する。
【発明の効果】
【００１０】
複数の仮想マシンの動作環境の設定において、ソフトウェア間の処理の依存関係に起因するエラーを抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るシステムの全体構成例を示す図である。
【図２】図２は、実施例２に係る設定制御装置の構成を示す機能ブロック図である。
【図３】図３は、システムテンプレート記憶部に記憶されるテンプレートの例を示す図である。
【図４】図４は、ソフトウェアテンプレート記憶部に記憶されるテンプレートの例を示す図である。
【図５】図５は、サーバ情報記憶部に記憶される情報の例を示す図である。
【図６】図６は、ＮＩＣ情報記憶部に記憶される情報の例を示す図である。
【図７】図７は、ソフトウェア情報記憶部に記憶される情報の例を示す図である。
【図８】図８は、ソフトウェアパラメータ記憶部に記憶される情報の例を示す図である。
【図９】図９は、ソフトウェア接続関係記憶部に記憶される情報の例を示す図である。
【図１０】図１０は、サーバＯＳ優先順記憶部に記憶される情報の例を示す図である。
【図１１】図１１は、ソフトウェア優先順記憶部に記憶される情報の例を示す図である。
【図１２】図１２は、スクリプトに定義するパラメータとメソッドの例を示す図である。
【図１３】図１３は、実施例２に係る設定制御装置が実行する処理の全体的な流れを示すフローチャートである。
【図１４】図１４は、実施例２に係る設定制御装置が実行する構成情報抽出処理の流れを示すフローチャートである。
【図１５】図１５は、実施例２に係る設定制御装置が実行する接続関係抽出処理の流れを示すフローチャートである。
【図１６】図１６は、変数であるパラメータの値にさらに変数があるかないかを説明するソフトウェアパラメータ記憶部の例を示す図である。
【図１７】図１７は、変数の参照が循環参照でない例を示すソフトウェアパラメータ記憶部を示す図である。
【図１８】図１８は、変数の参照が循環参照である例を示すソフトウェアパラメータ記憶部を示す図である。
【図１９】図１９は、実施例２に係る設定制御装置が実行する優先順決定処理１の流れを示すフローチャートである。
【図２０】図２０は、実施例２に係る設定制御装置が実行する優先順決定処理２の流れを示すフローチャートである。
【図２１】図２１は、実施例２に係る設定制御装置が実行する設定起動処理の流れを示すフローチャートである。
【図２２】図２２は、設定制御プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する設定制御装置、設定制御方法および設定制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１３】
図１は、実施例１に係るシステムの全体構成例を示す図である。図１に示す設定制御装置１０は、複数のネットワークとサーバとを含むシステムをテンプレートとして登録し、ユーザの要求にしたがってシステムを配備して、仮想システムを提供するサーバ装置である。こうすることで、テンプレートに含まれるサーバのイメージはクローニングされ、独立した仮想システムとして動作する。
【００１４】
図１の場合、設定制御装置１０は、内部の記憶装置または外部の記憶装置に、２台のＷｅｂサーバと１台のＡＰ（アプリケーション）サーバと１台のＤＢ（DataBase）サーバとから形成されるシステムの構成をテンプレートとして保持する。そして、設定制御装置１０は、ユーザからシステム構築の要求を受信した場合に、保持するシステムのテンプレートと同様の構成であるシステム１やシステム２を、１台または複数の物理サーバ上に配備する。つまり、設定制御装置１０は、クラウドシステム上に存在する物理リソースを用いて、２台の仮想Ｗｅｂサーバ、１台の仮想ＡＰサーバ、１台の仮想ＤＢサーバから形成される仮想システムを構築し、プライベートクラウドとしてユーザに提供する。
【００１５】
そして、設定制御装置１０は、このようにして配備した仮想システムが有する各仮想サーバに対して、動作環境やソフトウェア等にパラメータを設定し、正常にシステム全体を動作させる。具体的には、設定制御装置１０は、決定部１０ａと動作環境設定部１０ｂとを有し、これらによって、仮想サーバの動作環境を設定する。
【００１６】
決定部１０ａは、複数の仮想マシンで実行されるソフトウェア間の処理の依存関係にしたがって、複数の仮想マシンのそれぞれを動作させる動作環境の設定順序を決定する処理部である。動作環境設定部１０ｂは、決定部１０ａによって決定された設定順序で、前記仮想マシンのそれぞれの動作環境を設定する処理部である。
【００１７】
このように、設定制御装置１０は、仮想サーバで動作するソフトウェア間の接続状況から仮想サーバの設定について、実行する順序を決定することができる。つまり、設定制御装置１０は、仮想サーバ間の接続状況を物理的または論理的な構成ではなく、ソフトウェアでどのように接続されているかに基づいて、設定順序を決定する。したがって、設定制御装置１０は、配備する仮想システムごとにフローを生成することなく、ソフトウェア間の接続関係を示すパラメータを自動で設定することができる。
【実施例２】
【００１８】
次に、実施例１で説明した設定制御装置について具体的に説明する。実施例２では、設定制御装置１０の構成、処理の流れについて説明する。
【００１９】
［設定制御装置の構成］
図２は、実施例２に係る設定制御装置の構成を示す機能ブロック図である。図２に示すように、設定制御装置１０は、通信インタフェース１１と記憶部１２と制御部３０とを有する。なお、設定制御装置１０が有する処理部等はあくまで例示であり、これに限定されるものではない。例えば、設定制御装置１０は、マウスなどの入力部、ディスプレイなどの表示部、記憶媒体を受け付けた情報を読み書きする媒体読取装置等を有していてもよい。
【００２０】
通信インタフェース１１は、他の装置との間の通信を制御するＮＩＣ（Network  Interface  Card）などである。例えば、通信インタフェース１１は、ユーザ端末からシステムの配備要求を受信し、配備した仮想サーバに動作環境を設定するコマンドや仮想サーバの動作を開始させるコマンドやスクリプト等を送信する。また、通信インタフェース１１は、配備した仮想サーバのソフトウェアにパラメータを設定するコマンドやスクリプト等を送信し、当該ソフトウェアの動作を開始させるコマンドやスクリプト等を送信する。また、通信インタフェース１１は、仮想システムの設定および動作開始が完了したことを示す完了通知をユーザ端末に送信する。
【００２１】
記憶部１２は、制御部３０が実行するプログラムやデータを記憶する記憶装置であり、例えば半導体素子やハードディスクなどである。図２に示すように、記憶部１２は、システムテンプレート記憶部１３、ソフトウェアテンプレート記憶部１４、サーバ情報記憶部１５、ＮＩＣ情報記憶部１６、ソフトウェア情報記憶部１７を有する。また、記憶部１２は、ソフトウェアパラメータ記憶部１８、ソフトウェア接続関係記憶部１９、サーバＯＳ優先順記憶部２０、ソフトウェア優先順記憶部２１を有する。なお、記憶部１２が有する各記憶部は、テーブルやＤＢなどで形成される。
【００２２】
システムテンプレート記憶部１３は、仮想システムの構成を定義するテンプレートおよびテンプレートで指定された情報を記憶する記憶部である。具体的には、システムテンプレート記憶部１３は、ネットワーク、サーバ、ＮＩＣ、ソフトウェアを要素とした構成を表したテンプレートを記憶する。なお、テンプレートは、例えばＸＭＬ（eXtensible  Markup  Language）構造で定義することができる。
【００２３】
図３は、システムテンプレート記憶部に記憶されるテンプレートの例を示す図である。図３に示すように、システムのテンプレートは、「name」、「vnets」、「servers」で定義される。ユーザは、このテンプレートにおいて「name」、「vnets」、「servers」に設定を記述する。
【００２４】
「name」は、仮想システムの名称を定義するものであり、図３の場合、「Ｗｅｂ−ＡＰ−ＤＢシステム」と定義されている。「vnets」は、仮想システムに設定される仮想ネットワークを定義するものである。図３の場合、IDとしてnet1が割り与えられたDMZ（DeMilitarized  Zone）と、IDとしてnet2が割り与えられたSubnetAと、IDとしてnet3が割り与えられたSubnetBとが定義されている。
【００２５】
「servers」は、仮想サーバを定義するものであり、「no」、「name」、「imageId」、「vnics」、「software」が定義される。「no」は、仮想サーバを識別するサーバの識別子を定義し、「name」は、仮想サーバのホスト名を定義し、「imageId」は、仮想サーバのＯＳ（Operating  System）やＣドライブのイメージを定義する。また、「vnics」は、仮想サーバが使用する仮想ネットワークを定義し、「software」は、仮想サーバが実行するソフトウェアを定義する。
【００２６】
図３を用いて一例を説明すると、識別子として「１」を割り与えられた「Ｗｅｂ１サーバ」は、イメージとして「image1」が定義されている。また、「Ｗｅｂ１サーバ」には、仮想ネットワーク１として「net1」すなわち外部ネットワークに接続されることが定義されており、仮想ネットワーク２として「net2」すなわち内部ネットワークであるSubnetAに接続されることが定義されている。また、「Ｗｅｂ１サーバ」には、識別子として「１」が割り与えられたソフトウェアである「SW01」を実行することが定義されている。
【００２７】
図２に戻り、ソフトウェアテンプレート記憶部１４は、ソフトウェアのパラメータに設定する値を定義するテンプレートを記憶する記憶部である。ユーザは、ソフトウェアテンプレート記憶部１４に記憶されるテンプレートにパラメータ値を記述することで、ソフトウェアのパラメータに設定する値を定義できる。また、ユーザは、ソフトウェアのパラメータで接続関係がある場合は、接続元のパラメータの値に、接続先のパラメータの値を記述する。これにより、接続先のパラメータの値を参照する変数を記述でき、パラメータの設定値に別のパラメータを参照する変数が存在する場合に、接続関係があると判断される。なお、テンプレートは、例えばＸＭＬ（eXtensible  Markup  Language）構造で定義することができる。
【００２８】
図４は、ソフトウェアテンプレート記憶部に記憶されるテンプレートの例を示す図である。図４に示すように、ソフトウェアのテンプレートは、「key」と「value」とを定義する少なくとも１つの「parameter」で定義される。「parameter」は、ソフトウェアに定義するパラメータを定義するものであり、「key」は、パラメータの名称を定義するものであり、「value」は、パラメータに設定する値、言い換えるとパラメータの参照値を定義するものである。パラメータの参照値は、「#」以降に定義される。
【００２９】
図４を用いて一例を説明すると、「server1」の「ソフトウェア１」の「web.ap.connection.ipaddress」というパラメータには、設定する値として「server[3].nic[1].ipaddress」が定義されている。つまり、サーバの識別子として「１」が割り与えられた「Ｗｅｂ１サーバ」でソフトウェアの識別子「１」が割り与えられた「SW01」の「web.ap.connection.ipaddress」には、「server[3].nic[1].ipaddress」が設定されることを示す。
【００３０】
図２に戻り、サーバ情報記憶部１５は、仮想サーバの情報を記憶する記憶部である。ここで記憶される情報は、後述する構成情報抽出部３３によって格納される。図５は、サーバ情報記憶部に記憶される情報の例を示す図である。図５に示すように、サーバ情報記憶部１５は、「サーバＮｏ、名前」を対応付けて記憶する。ここで記憶される「サーバＮｏ」は、サーバを識別するサーバの識別子であり、図３の「server」内の「no」に定義される値が該当する。「名前」は、サーバに設定されるホスト名であり、図３の「server」内の「name」に定義される値が該当する。
【００３１】
図５の場合、「Ｗｅｂ１  Ｓｅｒｖｅｒ」には、サーバＮｏとして「１」が与えられており、「Ｗｅｂ２  Ｓｅｒｖｅｒ」には、サーバＮｏとして「２」が与えられていることを示す。また、「ＡＰ  Ｓｅｒｖｅｒ」には、サーバＮｏとして「３」が与えられており、「ＤＢ  Ｓｅｒｖｅｒ」には、サーバＮｏとして「４」が与えられていることを示す。
【００３２】
ＮＩＣ情報記憶部１６は、仮想サーバのＮＩＣに設定されたアドレス情報を記憶する記憶部である。ここで記憶される情報は、後述する構成情報抽出部３３によって格納される。図６は、ＮＩＣ情報記憶部に記憶される情報の例を示す図である。図６に示すように、ＮＩＣ情報記憶部１６は、「サーバＮｏ、ＮＩＣ  Ｎｏ、ＩＰ（Internet  Protocol）アドレス」を対応付けて記憶する。
【００３３】
ここで記憶される「サーバＮｏ」は、サーバを識別するサーバの識別子であり、図３の「server」内の「no」に定義される値が該当する。「ＮＩＣ  Ｎｏ」は、ＮＩＣを識別するインタフェースの識別子であり、図３の「server」内の「vnics」の「no」に定義される値が該当する。「ＩＰアドレス」は、ＮＩＣに設定されるＩＰアドレスであり、後述する構成情報抽出部３３等によって設定される。
【００３４】
図６の場合、「サーバＮｏ＝１」が有する「ＮＩＣ  Ｎｏ＝１」のＮＩＣには、ＩＰアドレスとして「192.168.1.2」が設定されていることを示す。また、「サーバＮｏ＝１」が有する「ＮＩＣ  Ｎｏ＝２」のＮＩＣには、ＩＰアドレスとして「192.168.2.2」が設定されていることを示す。つまり、Ｗｅｂ１サーバのＮＩＣ１には「192.168.1.2」が設定されており、Ｗｅｂ１サーバのＮＩＣ２には「192.168.2.2」が設定されていることを示す。
【００３５】
また、「サーバＮｏ＝３」が有する「ＮＩＣ  Ｎｏ＝１」のＮＩＣには、ＩＰアドレスとして「192.168.2.4」が設定されていることを示す。また、「サーバＮｏ＝３」が有する「ＮＩＣ  Ｎｏ＝２」のＮＩＣには、ＩＰアドレスとして「192.168.3.2」が設定されていることを示す。つまり、ＡＰサーバのＮＩＣ１には「192.168.2.4」が設定されており、ＡＰサーバのＮＩＣ２には「192.168.3.2」が設定されていることを示す。なお、図６に示したＩＰアドレス等は一例であり、数値等を限定するものではない。
【００３６】
ソフトウェア情報記憶部１７は、仮想サーバが実行するソフトウェアの情報を記憶する記憶部である。ここで記憶される情報は、後述する構成情報抽出部３３によって格納される。図７は、ソフトウェア情報記憶部に記憶される情報の例を示す図である。図７に示すように、ソフトウェア情報記憶部１７は、「サーバＮｏ、ソフトＮｏ、パラメータ定義ＩＤ」を対応付けて記憶する。
【００３７】
ここで記憶される「サーバＮｏ」は、サーバを識別するサーバの識別子であり、図３の「server」内の「no」に定義される値が該当する。「ソフトＮｏ」は、仮想サーバが実行するソフトウェアを識別するソフトウェアの識別子であり、図３の「server」内の「software」の「no」に定義される値が該当する。「パラメータ定義ＩＤ」は、パラメータの設定先となるソフトウェアを識別する識別子であり、図３の「server」内の「software」の「id」に定義される値が該当する。
【００３８】
図７の場合、「サーバＮｏ＝１」が実行する「ソフトＮｏ＝１」のソフトウェアには、パラメータ定義ＩＤとして「SW01」が設定されていることを示す。つまり、Ｗｅｂ１サーバは「SW01」が設定されたソフトウェアを実行する。「サーバＮｏ＝２」が実行する「ソフトＮｏ＝１」のソフトウェアには、パラメータ定義ＩＤとして「SW01」が設定されていることを示す。つまり、Ｗｅｂ２サーバは「SW01」が設定されたソフトウェアを実行する。
【００３９】
同様に、「サーバＮｏ＝３」が実行する「ソフトＮｏ＝１」のソフトウェアには、パラメータ定義ＩＤとして「SW02」が設定されていることを示す。また、「サーバＮｏ＝４」が実行する「ソフトＮｏ＝１」のソフトウェアには、パラメータ定義ＩＤとして「SW03」が設定されていることを示す。つまり、ＡＰサーバは「SW02」が設定されたソフトウェアを実行し、ＤＢサーバは「SW03」が設定されたソフトウェアを実行する。
【００４０】
図２に戻り、ソフトウェアパラメータ記憶部１８は、ソフトウェアに設定するパラメータの情報を記憶する記憶部である。ここで記憶される情報は、後述する構成情報抽出部３３によって格納される。図８は、ソフトウェアパラメータ記憶部に記憶される情報の例を示す図である。図８に示すように、ソフトウェアパラメータ記憶部１８は、「サーバＮｏ、ソフトＮｏ、パラメータのキー、パラメータの値」を対応付けて記憶する。
【００４１】
ここで記憶される「サーバＮｏ」は、サーバを識別するサーバの識別子であり、図４の「key」に定義される「server［※］.software［＄］・・・」の［※］に設定される値が該当する。なお、※および＄は整数である。「ソフトＮｏ」は、仮想サーバが実行するソフトウェアを識別するソフトウェアの識別子であり、図４の「key」に定義される「server［※］.software［＄］・・・」の［＄］に設定される値が該当する。「パラメータのキー」は、設定するパラメータの名称を示し、図４の「key」に定義される「server［※］.software［＄］・・・」の［・・・］に記述されるパラメータが該当する。
【００４２】
図８の場合、「サーバＮｏ＝１」が実行する「ソフトＮｏ＝１」のソフトウェアには、パラメータのキーとして「web.ap.connection.ipaddress」が設定されており、パラメータの値として「#｛server[3].nic[1].ipaddress｝」が設定されていることを示す。つまり、Ｗｅｂ１サーバのソフトウェアである「SW01」のパラメータ「web.ap.connection.ipaddress」には、「#｛server[3].nic[1].ipaddress｝」が設定されることを示す。
【００４３】
また、「サーバＮｏ＝３」が実行する「ソフトＮｏ＝１」のソフトウェアには、パラメータのキーとして「ap.connection.port」が設定されており、パラメータの値として「9008」が設定されていることを示す。つまり、ＡＰサーバのソフトウェアである「SW02」のパラメータ「ap.connection.port」には、「9008」が設定されることを示す。
【００４４】
ソフトウェア接続関係記憶部１９は、仮想サーバが実行するソフトウェア間の接続関係を記憶する記憶部である。ここで記憶される情報は、後述する接続関係抽出部３４によって格納される。図９は、ソフトウェア接続関係記憶部に記憶される情報の例を示す図である。図９に示すように、ソフトウェア接続関係記憶部１９は、「設定側のサーバＮｏ、設定側のソフトＮｏ、設定側のパラメータのキー、参照側のサーバＮｏ、参照側のソフトＮｏ、参照側のパラメータのキー」を対応付けて記憶する。
【００４５】
ここで記憶される「設定側のサーバＮｏ」は、パラメータを設定するサーバを識別するサーバの識別子を示し、「設定側のソフトＮｏ」は、パラメータを設定するサーバのソフトウェアを識別する識別子を示す。「設定側のパラメータのキー」は、設定側のソフトウェアに設定するパラメータの名称を示す。また、「参照側のサーバＮｏ」は、設定側のソフトウェアのパラメータとして参照されるサーバを識別するサーバの識別子を示し、「参照側のソフトＮｏ」は、設定側のソフトウェアのパラメータとして参照されるソフトウェアを識別するサーバの識別子を示す。「参照側のパラメータのキー」は、設定側に参照される、参照側のソフトウェアに設定されるパラメータの名称を示す。
【００４６】
図９の場合、「サーバＮｏ＝１」が実行する「ソフトＮｏ＝１」のソフトウェアのパラメータ「web.ap.connection.ipaddress」は、「サーバＮｏ＝３」に設定されるパラメータ「nic[1].ipaddress」を参照して設定されることを示す。つまり、Ｗｅｂ１サーバのSW01は、ＡＰサーバに設定される「nic[1].ipaddress」を「web.ap.connection.ipaddress」に設定することを示す。
【００４７】
また、「サーバＮｏ＝１」が実行する「ソフトＮｏ＝１」のソフトウェアのパラメータ「web.ap.connection.port」は、「サーバＮｏ＝３」が実行する「ソフトＮｏ＝１」に設定されるパラメータ「ap.connection.port」を参照して設定されることを示す。つまり、Ｗｅｂ１サーバのSW01は、ＡＰサーバのSW02に設定される「ap.connection.port」を「web.ap.connection.port」に設定することを示す。
【００４８】
図２に戻り、サーバＯＳ優先順記憶部２０は、仮想サーバのＯＳに対してパラメータ等を設定する順序や仮想サーバのＯＳを起動させる順序を記憶する記憶部である。なお、ここで記憶される情報は、後述する優先順決定部３５によって格納される。図１０は、サーバＯＳ優先順記憶部に記憶される情報の例を示す図である。図１０に示すように、サーバＯＳ優先順記憶部２０は、「サーバＮｏ、接続関係の分類、優先順位」を対応付けて記憶する。
【００４９】
ここで記憶される「サーバＮｏ」は、設定および起動対象となる仮想サーバの識別子を示す。「接続関係の分類」は、なし、参照のみ、設定と参照、設定のみのいずれに該当するかを示す。なお、参照のみとは、他の仮想サーバから参照されるパラメータを有する仮想サーバであることを示し、設定と参照とは、他の仮想サーバから参照されるパラメータと他の仮想サーバから参照されないパラメータとを有する仮想サーバであることを示す。設定のみとは、他の仮想サーバから参照されないパラメータを有する仮想サーバであることを示し、なしは、上記参照のみ、設定と参照、設定のみのいずれに該当しない仮想サーバを示す。「優先順位」は、設定および起動の優先順位を示し、低い数字ほど優先順位が高い。
【００５０】
図１０の場合、設定および起動の優先順位が最も高い仮想サーバは、参照のみ分類された「サーバＮｏ＝４」のＤＢサーバであることを示す。次に優先順位が高い仮想サーバは、設定と参照に分類された「サーバＮｏ＝３」のＡＰサーバであることを示す。次に優先順位が高い仮想サーバは、設定のみに分類された「サーバＮｏ＝２」のＷｅｂ２サーバであることを示す。優先順位が最も低い仮想サーバは、設定のみに分類された「サーバＮｏ＝１」のＷｅｂ１サーバであることを示す。
【００５１】
ソフトウェア優先順記憶部２１は、仮想サーバが実行するソフトウェアに対してパラメータ等を設定する順序やソフトウェアを起動させる順序を記憶する記憶部である。なお、ここで記憶される情報は、後述する優先順決定部３５によって格納される。図１１は、ソフトウェア優先順記憶部に記憶される情報の例を示す図である。図１１に示すように、ソフトウェア優先順記憶部２１は、「サーバＮｏ、ソフトＮｏ、接続関係の分類、優先順位」を対応付けて記憶する。
【００５２】
ここで記憶される「サーバＮｏ」は、設定および起動対象となるソフトウェアを実行する仮想サーバの識別子を示し、「ソフトＮｏ」は、設定および起動対象となるソフトウェアの識別子を示す。「接続関係の分類」は、なし、参照のみ、設定と参照、設定のみのいずれに該当するかを示す。なお、参照のみとは、他のソフトウェアから参照されるパラメータを有するソフトウェアであることを示し、設定と参照とは、他のソフトウェアから参照されるパラメータと他のソフトウェアから参照されないパラメータとを有するソフトウェアであることを示す。設定のみとは、他のソフトウェアから参照されないパラメータを有するソフトウェアであることを示し、なしは、上記参照のみ、設定と参照、設定のみのいずれに該当しないソフトウェアを示す。「優先順位」は、設定および起動の優先順位を示し、低い数字ほど優先順位が高い。
【００５３】
図１１の場合、設定および起動の優先順位が最も高いソフトウェアは、参照のみに分類された「サーバＮｏ＝４」のＤＢサーバが実行する「ソフトＮｏ＝１」の「SW03」であることを示す。次に優先順位が高いソフトウェアは、設定と参照に分類された「サーバＮｏ＝３」のＡＰサーバが実行する「ソフトＮｏ＝１」の「SW02」であることを示す。次に優先順位が高いソフトウェアは、設定のみに分類された「サーバＮｏ＝２」のＷｅｂ２サーバが実行する「ソフトＮｏ＝１」の「SW01」であることを示す。優先順位が最も低いソフトウェアは、設定のみに分類された「サーバＮｏ＝１」のＷｅｂ１サーバが実行する「ソフトＮｏ＝１」の「SW01」であることを示す。
【００５４】
図２に戻り、制御部３０は、ＯＳなどを実行して設定制御装置１０の全体を司る処理部であり、例えばＣＰＵ（Central  Processing  Unit）などの電子回路である。制御部３０は、情報受付部３１とシステム配備制御部３２と構成情報抽出部３３と接続関係抽出部３４と優先順決定部３５と開始制御部３６とを有し、これらによって仮想システムを構築する。
【００５５】
情報受付部３１は、ユーザ端末からシステム構築の要求を受け付けた場合に、システムのテンプレートやソフトウェアのテンプレートをユーザ端末に送信して、システムの構成情報を受け付ける処理部である。例えば、情報受付部３１は、システムテンプレート記憶部１３に記憶されるシステムのテンプレートをＷｅｂ画面としてユーザ端末に表示させて、当該Ｗｅｂ画面上で「server」の「id」や「name」、「software」の「no」や「id」などの設定情報を受け付ける。そして、情報受付部３１は、設定情報が記述されたシステムのテンプレートをシステムテンプレート記憶部１３に格納する。なお、システムのテンプレートは、システムにおいて外部ネットワークに近いサーバから順に定義される。
【００５６】
また、情報受付部３１は、ソフトウェアテンプレート記憶部１４に記憶されるソフトウェアのテンプレートをＷｅｂ画面としてユーザ端末に表示させて、当該Ｗｅｂ画面上で「key」や「value」の設定情報を受け付ける。そして、情報受付部３１は、設定情報が記述されたソフトウェアのテンプレートをソフトウェアテンプレート記憶部１４に格納する。なお、ソフトウェアのテンプレートは、システムにおいて外部ネットワークに近いサーバから順に定義される。
【００５７】
システム配備制御部３２は、ユーザに指定されたシステムを物理サーバ上に配備する処理部である。例えば、システム配備制御部３２は、システムテンプレート記憶部１３やソフトウェアテンプレート記憶部１４が更新されたことを検出する。すると、システム配備制御部３２は、システムテンプレート記憶部１３に定義された各「server」をクラウドシステム上に配備する。すなわち、システム配備制御部３２は、クラウドシステム内の存在する物理リソースを用いて、システムテンプレート記憶部１３に定義された各「server」が動作できる領域を確保する。
【００５８】
構成情報抽出部３３は、システムテンプレート記憶部１３やソフトウェアテンプレート記憶部１４が記憶する情報を先頭から読み出して、サーバ情報、ＮＩＣ情報、ソフトウェア情報、ソフトウェアパラメータ情報を抽出する処理部である。起動する契機としては、構成情報抽出部３３は、情報受付部３１から処理開始を通知された場合や、システムテンプレート記憶部１３やソフトウェアテンプレート記憶部１４が更新されたことを検出した場合などがある。ここでは、構成情報抽出部３３が抽出する情報各々について説明する。なお、構成情報抽出部３３は、システムのテンプレートの先頭から順に定義を参照して、後述する処理を実行する。
【００５９】
（サーバ情報の抽出）
構成情報抽出部３３は、システムテンプレート記憶部１３に記憶されるテンプレートであり、ユーザによってシステム構成が記述されたテンプレートからサーバに関する情報を抽出してサーバ情報記憶部１５に格納する。例えば、図３を用いて説明する。構成情報抽出部３３は、「server」内の「no」に定義される「1」と「name」に定義される「Ｗｅｂ１Ｓｅｒｖｅｒ」を抽出する。そして、構成情報抽出部３３は、抽出した「1、Ｗｅｂ１  Ｓｅｒｖｅｒ」を「サーバＮｏ、名前」としてサーバ情報記憶部１５に格納する。同様に、構成情報抽出部３３は、Ｗｅｂ２  Ｓｅｒｖｅｒ、ＡＰ  Ｓｅｒｖｅｒ、ＤＢ  Ｓｅｒｖｅｒのそれぞれについても同様の処理を実行して、システムのテンプレートから「サーバＮｏ、名前」を抽出してサーバ情報記憶部１５に格納する。
【００６０】
（ＮＩＣへの割当）
構成情報抽出部３３は、システムのテンプレートに定義された各仮想サーバのＮＩＣにＩＰアドレスを割り与えて、割り与えた情報等をＮＩＣ情報記憶部１６に格納する。例えば、図３を例にして説明すると、構成情報抽出部３３は、「server」内の「no」に定義される「1」と、「server」内の「vnics」に定義される「net1」および「net2」とを抽出する。そして、構成情報抽出部３３は、抽出した「1、net1」および「1、net2」を「サーバＮｏ、ＮＩＣ  Ｎｏ」としてＮＩＣ情報記憶部１６に格納する。続いて、構成情報抽出部３３は、「net1」にＩＰアドレスとして「192.168.1.2」を割り与え、「net2」にＩＰアドレスとして「192.168.2.2」を割り与える。そして、構成情報抽出部３３は、割り与えたＩＰアドレスをそれぞれのＮＩＣ  Ｎｏに対応付けて、ＮＩＣ情報記憶部１６に格納する。
【００６１】
なお、構成情報抽出部３３は、Ｗｅｂ２  Ｓｅｒｖｅｒ、ＡＰ  Ｓｅｒｖｅｒ、ＤＢ  Ｓｅｒｖｅｒのそれぞれについても同様の処理を実行して、「サーバＮｏ、ＮＩＣ  Ｎｏ、ＩＰアドレス」を生成する。また、構成情報抽出部３３は、DMZ、SubnetA、SubnetB各々で使用できるＩＰアドレスの範囲を記憶しておき、各ＮＩＣ  Ｎｏが使用するネットワークをシステムのテンプレートから特定して、未使用のＩＰアドレスを割り当てるようにしてもよい。
【００６２】
（ソフトウェア情報の抽出）
構成情報抽出部３３は、システムテンプレート記憶部１３に記憶されるテンプレートであり、ユーザによってシステム構成が記述されたテンプレートからソフトウェアに関する情報を抽出してソフトウェア情報記憶部１７に格納する。例えば、図３を用いて説明する。構成情報抽出部３３は、「server」内の「no」に定義される「1」と、「software」内の「no」に定義される「1」および「id」に定義される「SW01」とを抽出する。そして、構成情報抽出部３３は、抽出した「1、1、SW01」を「サーバＮｏ、ソフトＮｏ、パラメータ定義ＩＤ」としてソフトウェア情報記憶部１７に格納する。なお、構成情報抽出部３３は、Ｗｅｂ２  Ｓｅｒｖｅｒ、ＡＰ  Ｓｅｒｖｅｒ、ＤＢ  Ｓｅｒｖｅｒのそれぞれについても同様の処理を実行して、システムのテンプレートから「サーバＮｏ、ソフトＮｏ、パラメータ定義ＩＤ」を抽出してソフトウェア情報記憶部１７に格納する。
【００６３】
（ソフトウェアパラメータ情報の抽出）
構成情報抽出部３３は、ソフトウェアテンプレート記憶部１４に記憶されるテンプレートであり、ユーザによって記述されたテンプレートからパラメータを抽出してソフトウェアパラメータ記憶部１８に格納する。図４を用いて具体的に説明すると、構成情報抽出部３３は、ソフトウェアテンプレート記憶部１４に記憶されるテンプレートから「key＝server[1].software[1].web.ap.connection.ipaddress」と「value＝#｛server[3].nic[1].ipaddress｝」とを抽出する。そして、構成情報抽出部３３は、抽出したkeyにしたがってserver[1]からサーバＮｏ＝１、software[1]からソフトＮｏ＝１、パラメータのキー＝web.ap.connection.ipaddressを抽出し、パラメータの値＝value＝#｛server[3].nic[1].ipaddress｝を抽出する。その後、構成情報抽出部３３は、抽出した情報各々を対応付けてソフトウェアパラメータ記憶部１８に格納する。なお、構成情報抽出部３３は、図４に示す他の「key、value」についても同様の処理を実行する。
【００６４】
図２に戻り、接続関係抽出部３４は、ソフトウェアパラメータ記憶部１８に記憶される情報に基づいて、仮想サーバで実行されるソフトウェア間の接続関係を抽出してソフトウェア接続関係記憶部１９に格納する処理部である。例えば、構成情報抽出部３３が生成した図８のソフトウェアパラメータ記憶部１８に記憶される情報から、図９に示すソフトウェア接続関係記憶部１９に記憶される情報を生成する例で説明する。
【００６５】
接続関係抽出部３４は、図８の１行目である「サーバＮｏ＝１、ソフトＮｏ＝１、パラメータのキー＝web.ap.connection.ipaddress、パラメータの値＝#｛server[3].nic[1].ipaddress｝」を読み込む。そして、接続関係抽出部３４は、「サーバＮｏ＝１」の「ソフトＮｏ＝１」のパラメータである「web.ap.connection.ipaddress」に、「サーバＮｏ＝３」の「nic1」に割り与えられる「ipaddress」を設定すると判定する。この結果、接続関係抽出部３４は、パラメータを設定する側が「サーバＮｏ＝１、ソフトＮｏ＝１」であり、参照される側が「サーバＮｏ＝３」のパラメータ「nic[1].ipaddress」と判定する。したがって、図９の１行目に示すように、接続関係抽出部３４は、「1、1、web.ap.connection.ipaddress、3、-、nic[1].ipaddress」をソフトウェア接続関係記憶部１９に記憶させる。
【００６６】
別例を説明すると、接続関係抽出部３４は、図８の２行目である「サーバＮｏ＝１、ソフトＮｏ＝１、パラメータのキー＝web.ap.connection.port、パラメータの値＝#｛server[3].software[1].ap.connection.port｝」を読み込む。そして、接続関係抽出部３４は、「サーバＮｏ＝１」の「ソフトＮｏ＝１」のパラメータである「web.ap.connection.port」に、「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定される「ap.connection.port」を設定すると判定する。この結果、接続関係抽出部３４は、パラメータを設定する側が「サーバＮｏ＝１、ソフトＮｏ＝１」であり、参照される側が「サーバＮｏ＝３、ソフトＮｏ＝１」のパラメータ「ap.connection.port」と判定する。したがって、図９の２行目に示すように、接続関係抽出部３４は、「1、1、web.ap.connection.port、3、1、ap.connection.port」をソフトウェア接続関係記憶部１９に記憶させる。
【００６７】
別例を説明すると、接続関係抽出部３４は、図８の５行目である「サーバＮｏ＝３、ソフトＮｏ＝１、パラメータのキー＝ap.db.jdbc.url、パラメータの値＝#｛server[4].nic[1].ipaddress｝、#｛server[4].software[1].db.port｝」を読み込む。そして、接続関係抽出部３４は、「サーバＮｏ＝３」の「ソフトＮｏ＝１」のパラメータである「ap.db.jdbc.url」に、「サーバＮｏ＝４」の「nic1」に割り与えられる「ipaddress」を設定すると判定する。さらに、接続関係抽出部３４は、「サーバＮｏ＝３」の「ソフトＮｏ＝１」のパラメータである「ap.db.jdbc.url」に、「サーバＮｏ＝４」の「ソフトＮｏ＝１」に設定される「db.port」を設定すると判定する。
【００６８】
この結果、接続関係抽出部３４は、パラメータを設定する側が「サーバＮｏ＝３、ソフトＮｏ＝１」であり、参照される側が「サーバＮｏ＝４」のパラメータ「nic[1].ipaddress」であると認識する。さらに、接続関係抽出部３４は、パラメータを設定する側が「サーバＮｏ＝３、ソフトＮｏ＝１」であり、参照される側が「サーバＮｏ＝４、ソフトＮｏ＝１」のパラメータ「db.port」と認識する。したがって、図９の５行目に示すように、接続関係抽出部３４は、「3、1、ap.db.jdbc.url、4、-、nic[1].ipaddress」をソフトウェア接続関係記憶部１９に記憶させる。さらに、図９の６行目に示すように、接続関係抽出部３４は、「3、1、ap.db.jdbc.url、4、1、db.port」をソフトウェア接続関係記憶部１９に記憶させる。
【００６９】
図２に戻り、優先順決定部３５は、サーバＯＳの優先順位とソフトウェアの優先順位を決定して、サーバＯＳ優先順記憶部２０とソフトウェア優先順記憶部２１に格納する処理部である。ここでは、サーバＯＳの優先順位を決定する場合と、ソフトウェアの優先順位を決定する場合の各々について説明する。
【００７０】
（サーバＯＳの優先順位）
優先順決定部３５は、サーバ情報記憶部１５に記憶されるサーバＮｏの記憶順と、サーバの接続分類とを用いて優先順位を決定する。サーバのデフォルトの優先順位は、サーバ情報記憶部１５に記憶されるサーバＮｏの記憶順の逆順、言い換えると、外部ネットワークから最も遠いサーバから順に優先度が高い。図１の場合では、優先順決定部３５は、ＤＢサーバ、ＡＰサーバ、Ｗｅｂサーバの順に、デフォルトの優先度が設定される。
【００７１】
また、ソフトウェア接続関係記憶部１９の参照側のソフトＮｏが設定されていない行が、サーバＯＳのパラメータを参照しているものである。接続関係の分類は、この行の値を以下のように判断して分類したものになる。具体的には、優先順決定部３５は、ソフトウェア接続関係記憶部１９の設定側のサーバＮｏだけに存在する仮想サーバについては「設定のみ」と判定する。また、優先順決定部３５は、ソフトウェア接続関係記憶部１９の参照側のサーバＮｏだけに存在する仮想サーバについては「参照のみ」と判定する。優先順決定部３５は、ソフトウェア接続関係記憶部１９の設定側のサーバＮｏと参照側のサーバＮｏの両方に存在する仮想サーバについては「設定と参照」と判定する。優先順決定部３５は、ソフトウェア接続関係記憶部１９の設定側のサーバＮｏにも参照側のサーバＮｏにも存在しない仮想サーバについては「なし」と判定する。
【００７２】
図５と図８と図９を用いて図１０を生成する例を説明する。優先順決定部３５は、図５に示すように、サーバ情報記憶部１５に記憶される順番が「サーバＮｏ＝１」、「サーバＮｏ＝２」、「サーバＮｏ＝３」、「サーバＮｏ＝４」であると認識する。このため、優先順決定部３５は、デフォルトの優先順位が高い順に「サーバＮｏ＝４」、「サーバＮｏ＝３」、「サーバＮｏ＝２」、「サーバＮｏ＝１」となる。
【００７３】
続いて、優先順決定部３５は、図９を参照し、「サーバＮｏ＝４」が「参照側のサーバＮｏ」にしか記憶されていないことから、「サーバＮｏ＝４」の接続関係の分類を「参照のみ」と決定して、図１０に示すようにサーバＯＳ優先順記憶部２０に格納する。同様に、優先順決定部３５は、図９を参照し、「サーバＮｏ＝３」が「設定側のサーバＮｏ」と「参照側のサーバＮｏ」とに記憶されていることから、「サーバＮｏ＝３」の接続関係の分類を「設定と参照」と決定してサーバＯＳ優先順記憶部２０に格納する。また、優先順決定部３５は、図９を参照し、「サーバＮｏ＝２」が「設定側のサーバＮｏ」にしか記憶されていないことから、「サーバＮｏ＝２」の接続関係の分類を「設定のみ」と決定してサーバＯＳ優先順記憶部２０に格納する。同様に、優先順決定部３５は、図９を参照し、「サーバＮｏ＝１」が「設定側のサーバＮｏ」にしか記憶されていないことから、「サーバＮｏ＝１」の接続関係の分類を「設定のみ」と決定してサーバＯＳ優先順記憶部２０に格納する。
【００７４】
そして、優先順決定部３５は、接続状態の分類が「なし」の優先度が最も高く、順に「参照のみ」、「設定と参照」、「設定のみ」となるように優先度を設定する。また、優先順決定部３５は、同じ接続状態の分類に該当するサーバが複数ある場合には、デフォルトの優先度が高いサーバの優先度を高くする。この結果、優先順決定部３５は、図１０に示すように、「サーバＮｏ＝４」、「サーバＮｏ＝３」、「サーバＮｏ＝２」、「サーバＮｏ＝１」の順に優先順位を「１」、「２」、「３」、「４」と決定してサーバＯＳ優先順記憶部２０に格納することができる。
【００７５】
（ソフトウェアの優先順位）
優先順決定部３５は、サーバＯＳ優先順記憶部２０に記憶される優先順位と、ソフトウェアの接続分類とを用いて、ソフトウェアの設定および起動の優先順位を決定する。ソフトウェアのデフォルトの優先順位は、サーバＯＳ優先順記憶部２０に記憶されるサーバＮｏの記憶順とソフトウェア情報記憶部１７に記憶されるソフトウェアの順序とを組み合わせた順序である。
【００７６】
つまり、優先順決定部３５は、サーバＯＳ優先順記憶部２０に記憶されるサーバの順序に基づいてソフトウェアの優先順位が高く、１台のサーバに複数のソフトウェアが実行されている場合には、ソフトウェア情報記憶部１７に記憶される順番で優先順位が高くなる。上述した実施例の場合は、図１０において優先度が最も高いサーバＮｏ＝４で実行されるソフトウェアのデフォルトの優先度が最も高く、続けて、サーバＮｏ＝３のソフトウェア、サーバＮｏ＝２のソフトウェア、サーバＮｏ＝１のソフトウェアの順となる。
【００７７】
図７と図９と図１０とを用いて図１１を生成する例を説明する。優先順決定部３５は、図１０を参照し、サーバＯＳ優先順記憶部２０に記憶される順番が「サーバＮｏ＝４」、「サーバＮｏ＝３」、「サーバＮｏ＝２」、「サーバＮｏ＝１」であると認識する。このため、優先順決定部３５は、ソフトウェアの優先順位を決定する順番をデフォルトの優先順位が低い「サーバＮｏ＝１」、「サーバＮｏ＝２」、「サーバＮｏ＝３」、「サーバＮｏ＝４」の順番に決定する。
【００７８】
続いて、優先順決定部３５は、図９を参照し、「サーバＮｏ＝１」の「ソフトＮｏ＝１」が「設定側のソフトＮｏ」にしか記憶されていないことから、「サーバＮｏ＝１」の「ソフトＮｏ＝１」の接続関係の分類を「設定のみ」と決定する。また、優先順決定部３５は、図９を参照し、「サーバＮｏ＝２」の「ソフトＮｏ＝１」が「設定側のソフトＮｏ」にしか記憶されていないことから、「サーバＮｏ＝２」の「ソフトＮｏ＝１」の接続関係の分類を「設定のみ」と決定する。優先順決定部３５は、図９を参照し、「サーバＮｏ＝３」の「ソフトＮｏ＝１」が「設定側のソフトＮｏ」と「参照側のソフトＮｏ」とに記憶されていることから、「サーバＮｏ＝３」の「ソフトＮｏ＝１」の接続関係の分類を「設定と参照」と決定する。また、優先順決定部３５は、図９を参照し、「サーバＮｏ＝４」の「ソフトＮｏ＝１」が「参照側のソフトＮｏ」にしか記憶されていないことから、「サーバＮｏ＝４」の「ソフトＮｏ＝１」の接続関係の分類を「参照のみ」と決定する。
【００７９】
そして、優先順決定部３５は、接続状態の分類が「なし」の優先度が最も高く、順に「参照のみ」、「設定と参照」、「設定のみ」となるように優先度を設定する。また、優先順決定部３５は、同じ接続状態の分類に該当するソフトウェアが複数ある場合には、デフォルトの優先度が高いソフトウェアの優先度を高くする。この結果、優先順決定部３５は、図１１に示すように、「サーバＮｏ＝４のソフトＮｏ＝１」、「サーバＮｏ＝３のソフトＮｏ＝１」、「サーバＮｏ＝２のソフトＮｏ＝１」、「サーバＮｏ＝１のソフトＮｏ＝１」の順に優先順位を決定する。つまり、優先順決定部３５は、図１１に示すように、上記順番で優先度を「１」、「２」、「３」、「４」と決定してソフトウェア優先順記憶部２１に格納することができる。
【００８０】
図２に戻り、開始制御部３６は、優先順決定部３５によって決定されたサーバＯＳの優先順位にしたがって、仮想サーバの動作環境を設定し、各仮想サーバの動作を開始させる処理部である。また、開始制御部３６は、優先順決定部３５によって決定されたソフトウェアの優先順位にしたがって、ソフトウェアを動作させるパラメータを設定し、ソフトウェアの動作を開始させる処理部である。
【００８１】
具体的には、開始制御部３６は、サーバのＯＳ等に対して設定および起動し、ソフトウェアの設定および起動を実行する。なお、サーバのＯＳ等に対する設定とは、例えば、仮想サーバを動作させるためのプロセッサやメモリなどのリソースを確保したり、仮想サーバのＯＳイメージを物理サーバ上に保存したりすることである。また、仮想サーバが使用するホスト名やＩＰアドレス等を設定したりすることも該当する。ソフトウェアに対する設定とは、例えば、ソフトウェアに仮想サーバのホスト名やＩＰアドレスを設定したり、ソフトウェアが他のソフトウェア等を通信するためのポート番号等を設定したりすることである。
【００８２】
開始制御部３６は、上記設定や起動をスクリプトを用いて制御する。スクリプトは、ソフトウェア固有のコマンドなどを呼び出す。これにより、ソフトウェア毎に異なる仕様を吸収し、依存性をなくす役割を果たす。パラメータとメソッドの定義は、名前と値の型を指定する。ソフトウェア固有のスクリプトも定義する。このスクリプトは、例えば、ソフトウェアの固有のコマンドと、引数にパラメータで指定された値を指定するように記述する。このようにソフトウェアの接続する仕様をパラメータとして定義することにより、ソフトウェア間のインタフェースを統一する。
【００８３】
図１２は、スクリプトに定義するパラメータとメソッドの例を示す図である。図１２に示すように、パラメータ定義ＩＤが「SW01」であるＷｅｂサーバのソフトウェアについては、「script＿web.zip」を実行する。スクリプト「script＿web.zip」には、接続先ＩＰアドレスを設定するstring型の「web.ap.connection.ipaddress」と、接続先ポートを設定するnumber型の「web.ap.connection.port」とを定義することができる。また、スクリプト「script＿web.zip」によって、起動、終了、再起動などのoperationを示すメソッドを実行することもできる。
【００８４】
また、パラメータ定義ＩＤが「SW02」であるＡＰサーバのソフトウェアについては、「script＿ap.zip」を実行する。スクリプト「script＿ap.zip」には、ＡＰ接続ポートを設定するstring型の「ap.connection.port」と、ＪＤＢＣ（Java（登録商標）  Database  Connection）ドライバを設定するstring型のap.db.jdbc.driver」とを定義することができる。スクリプト「script＿ap.zip」には、ＪＤＢＣの接続先を設定するstring型の「ap.db.jdbc.url」を定義することができる。また、スクリプト「script＿ap.zip」によって、起動、終了、再起動などのoperationを示すメソッドを実行することもできる。
【００８５】
また、パラメータ定義ＩＤが「SW03」であるＤＢサーバのソフトウェアについては、「script＿db.zip」を実行する。スクリプト「script＿db.zip」には、ＤＢ接続ポートを設定するstring型の「db.port」を定義することができる。また、スクリプト「script＿db.zip」によって、起動、終了、再起動などのoperationを示すメソッドを実行することもできる。
【００８６】
なお、各スクリプトに定義される「nic.［nic  No］.ipadddres」は、ＮＩＣ情報記憶部１６に記憶される値を指定する。また、「web.ap.connection.port」などの各スクリプトに定義されるソフトウェアパラメータは、ソフトウェアパラメータ記憶部１８に記憶される値を指定する。なお、開始制御部３６は、「web＿setup  −ip  %ap.connection.ipaddress%  -port  %ap.connection.port%」などのように定義してスクリプトを実行する。
【００８７】
［処理の流れ］
次に、実施例２に係る設定制御装置１０が実行する各処理について説明する。ここでは、はじめに設定制御装置１０が実行する全体的な処理を説明した後に、詳細な処理を順次説明する。
【００８８】
（全体的な処理の流れ）
図１３は、実施例２に係る設定制御装置が実行する処理の全体的な流れを示すフローチャートである。図１３に示すように、設定制御装置１０は、システムの配備を要求したユーザがシステムのテンプレートに設定した情報から、システムの構成情報を抽出して保存する構成情報抽出処理を実行する（Ｓ１０１）。なお、設定制御装置１０は、Ｓ１０１の前または後ろで、ユーザが要求したシステムを配備する。
【００８９】
続いて、設定制御装置１０は、システムの配備を要求したユーザがソフトウェアのテンプレートに設定した情報に基づいて、仮想サーバで実行されるソフトウェア間の接続関係を抽出して保存する接続関係抽出処理を実行する（Ｓ１０２）。
【００９０】
そして、設定制御装置１０は、サーバのＯＳの設定順序および起動順序を決定する優先順決定処理１を実行し（Ｓ１０３）、ソフトウェアの設定順序および起動順序を決定する優先順決定処理２を実行する（Ｓ１０４）。
【００９１】
その後、設定制御装置１０は、Ｓ１０３およびＳ１０４で決定した順序にしたがって、サーバのＯＳ、ハードウェア、ソフトウェアの設定や起動を実行する（Ｓ１０５）。このようにすることで、設定制御装置１０は、仮想サーバの動作環境や仮想サーバのソフトウェア等にパラメータを設定し、正常にシステム全体を動作させてユーザに提供する。
【００９２】
（構成情報抽出処理の流れ）
図１４は、実施例２に係る設定制御装置が実行する構成情報抽出処理の流れを示すフローチャートである。なお、ここで実行される処理は、図１３のＳ１０１で実行される。
【００９３】
図１４に示すように、設定制御装置１０の構成情報抽出部３３は、システムテンプレート記憶部１３に記憶されるシステムのテンプレートから、ユーザが設定した仮想サーバの情報を抽出して、サーバ情報記憶部１５に格納する（Ｓ２０１）。
【００９４】
続いて、構成情報抽出部３３は、システムテンプレート記憶部１３に記憶されるシステムのテンプレートにユーザが定義した各仮想サーバのＮＩＣにＩＰアドレスを割り与えて、割り与えた情報等をＮＩＣ情報記憶部１６に格納する（Ｓ２０２）。
【００９５】
そして、構成情報抽出部３３は、システムテンプレート記憶部１３に記憶されるシステムのテンプレートから、ユーザが定義したソフトウェアに関する情報を抽出してソフトウェア情報記憶部１７に格納する（Ｓ２０３）。
【００９６】
その後、構成情報抽出部３３は、ソフトウェアテンプレート記憶部１４に記憶されるテンプレートから、ユーザが定義したソフトウェアのパラメータを抽出してソフトウェアパラメータ記憶部１８に格納する（Ｓ２０４）。
【００９７】
このように、構成情報抽出部３３は、Ｓ２０１からＳ２０４を実行することで、図５から図８に示したサーバ情報記憶部１５、ＮＩＣ情報記憶部１６、ソフトウェア情報記憶部１７、ソフトウェアパラメータ記憶部１８を生成することができる。
【００９８】
（接続関係抽出処理の流れ）
図１５は、実施例２に係る設定制御装置が実行する接続関係抽出処理の流れを示すフローチャートである。なお、ここで実行される処理は、図１３のＳ１０２で実行される。
【００９９】
図１５に示すように、設定制御装置１０の接続関係抽出部３４は、ソフトウェアパラメータ記憶部１８に記憶されるレコードを１つ先頭から選択し（Ｓ３０１）、パラメータの値に変数が含まれているか否かを判定する（Ｓ３０２）。すなわち、接続関係抽出部３４は、ソフトウェア間に接続関係があるかないかを判定する。なお、接続関係抽出部３４は、ソフトウェアパラメータ記憶部１８に記憶されるレコードで図１５の処理が未処理のレコードのうち、先頭に記憶されているレコードを選択する。
【０１００】
続いて、接続関係抽出部３４は、選択したレコードのパラメータの値に変数が含まれていると判定した場合（Ｓ３０２肯定）、変数であるパラメータの値にさらに変数が含まれているか否かを判定する（Ｓ３０３）。
【０１０１】
ここで、接続関係抽出部３４が変数であるパラメータの値にさらに変数があるかないかを判定する例を説明する。図１６は、変数であるパラメータの値にさらに変数があるかないかを説明するソフトウェアパラメータ記憶部の例を示す図である。図１６に示す例は、「サーバＮｏ＝１」の「ソフトＮｏ＝１」に設定されるパラメータ「web.ap.connection.port」は、「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定される「ap.connection.port」を参照することを示している。また、「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定されるパラメータ「ap.connection.port」の値が固定値「9008」であることを示している。
【０１０２】
この場合、接続関係抽出部３４は、「サーバＮｏ＝１」の「ソフトＮｏ＝１」に設定されるパラメータ「web.ap.connection.port」が「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定される「ap.connection.port」を参照すると判定する。また、接続関係抽出部３４は、参照先となる「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定される「ap.connection.port」の値が変数ではなく、固定値「9008」であると判定する。この結果、接続関係抽出部３４は、「サーバＮｏ＝１」の「ソフトＮｏ＝１」に設定されるパラメータ「web.ap.connection.port」には、変数が入っていないと判定する。一方、接続関係抽出部３４は、「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定される「ap.connection.port」に、さらに参照先が指定されている場合には、「web.ap.connection.port」には変数がさらにあると判定する。
【０１０３】
図１５に戻り、接続関係抽出部３４は、変数であるパラメータの値にさらに変数が含まれていないと判定した場合（Ｓ３０３否定）、読み出したレコードに格納される情報にしたがって、Ｓ３０４を実行する。すなわち、接続関係抽出部３４は、読み出したレコードのパラメータの値にしたがって、設定側のサーバＮｏ、ソフトＮｏ、パラメータのキーと、参照側のサーバＮｏ、ソフトＮｏ、パラメータのキーとをソフトウェア接続関係記憶部１９に格納する。このとき、接続関係抽出部３４は、ソフトウェア接続関係記憶部１９の末尾に新たなレコードを追加する。
【０１０４】
また、接続関係抽出部３４は、読み出したレコードのパラメータの値に複数の変数が含まれている場合には、変数の数だけレコードをソフトウェア接続関係記憶部１９に追加する（Ｓ３０５）。例えば、接続関係抽出部３４は、図８の５行目のように、パラメータの値に「#」で始まる変数が複数ある場合に、変数各々つまり「#」で始まる変数ごとに、接続関係を格納する。
【０１０５】
一方、接続関係抽出部３４は、変数であるパラメータの値にさらに変数が含まれていると判定した場合（Ｓ３０３肯定）、パラメータの値に格納される変数の参照が循環参照となっているか否かを判定する（Ｓ３０６）。具体的には、接続関係抽出部３４は、パラメータの値に変数があるかを１度だけではなく、パラメータの値に変数がある限り、複数回繰り返す。そして、接続関係抽出部３４は、変数を参照しているパラメータが以前に参照したものである場合は、循環参照であると判定する。
【０１０６】
ここで、循環参照か否かを判定する例を説明する。図１７は、変数の参照が循環参照でない例を示すソフトウェアパラメータ記憶部を示す図であり、図１８は、変数の参照が循環参照である例を示すソフトウェアパラメータ記憶部を示す図である。図１７に示す例は、「サーバＮｏ＝１」の「ソフトＮｏ＝１」に設定されるパラメータ「web.ap.connection.port」は、「サーバＮｏ＝２」の「ソフトＮｏ＝１」に設定される「web.ap.connection.port」を参照することを示している。また、「サーバＮｏ＝２」の「ソフトＮｏ＝１」に設定されるパラメータ「web.ap.connection.port」は、「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定される「ap.connection.port」を参照することを示している。また、「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定されるパラメータ「ap.connection.port」は、固定値「9008」を参照することを示している。
【０１０７】
図１７の場合、１行目のパラメーターの値は「#｛server[2].software[1].web.ap.connection.port｝」である。これは２行目のパラメータを参照している。２行目のパラメータの値は「#｛server[3].software[1].ap.connection.port｝」である。これは３行目のパラメータを参照している。３行目のパラメータの値は「9008」である。このように、図１７の例では、１行目から３行目までで以前に参照したパラメータが登場しないので、接続関係抽出部３４は、循環参照ではないと判定する。
【０１０８】
図１８に示す例は、「サーバＮｏ＝１」の「ソフトＮｏ＝１」に設定されるパラメータ「web.ap.connection.port」は、「サーバＮｏ＝２」の「ソフトＮｏ＝１」に設定される「web.ap.connection.port」を参照することを示している。また、「サーバＮｏ＝２」の「ソフトＮｏ＝１」に設定されるパラメータ「web.ap.connection.port」は、「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定される「ap.connection.port」を参照することを示している。また、「サーバＮｏ＝３」の「ソフトＮｏ＝１」に設定されるパラメータ「ap.connection.port」は、「サーバＮｏ＝１」の「ソフトＮｏ＝１」に設定される「web.ap.connection.port」を参照することを示している。
【０１０９】
図１８の場合、１行目のパラメータの値は「#｛server[2].software[1].web.ap.connection.port｝」である。これは２行目のパラメータを参照している。２行目のパラメータの値は「#｛server[3].software[1].ap.connection.port｝」である。これは３行目のパラメータを参照している。３行目のパラメーターの値は「#｛server[1].software[1].ap.connection.port｝」である。これは以前に参照した１行目のパラメータを参照している。このため、接続関係抽出部３４は、循環参照であると判定する。
【０１１０】
図１５に戻り、接続関係抽出部３４は、パラメータの値に格納される変数の参照が循環参照となっていると判定した場合（Ｓ３０６肯定）、パラメータ設定に誤りがあるとして、エラーをディスプレイやユーザ端末に出力する。
【０１１１】
一方、接続関係抽出部３４は、パラメータの値に格納される変数の参照が循環参照となっていないと判定した場合（Ｓ３０６否定）、読み出したレコードに格納される情報にしたがって、Ｓ３０７を実行した後、Ｓ３０５を実行する。すなわち、接続関係抽出部３４は、読み出したレコードのパラメータの値にしたがって、設定側のサーバＮｏ、ソフトＮｏ、パラメータのキーをソフトウェア接続関係記憶部１９に格納する。また、接続関係抽出部３４は、最終的に参照されるサーバＮｏ、ソフトＮｏ、パラメータのキーを参照側の情報としてソフトウェア接続関係記憶部１９に格納する。なお、このときも、接続関係抽出部３４は、ソフトウェア接続関係記憶部１９の末尾に新たなレコードを追加する。
【０１１２】
その後、接続関係抽出部３４は、ソフトウェアパラメータ記憶部１８に記憶されるレコードのうち上述した処理が未処理のレコードがある場合には（Ｓ３０８肯定）、Ｓ３０１に戻って以降の処理を繰り返す。一方、接続関係抽出部３４は、ソフトウェアパラメータ記憶部１８に記憶されるレコードのうち上述した処理が未処理のレコードがない場合には（Ｓ３０８否定）、処理を終了する。
【０１１３】
（優先順決定処理１の流れ）
図１９は、実施例２に係る設定制御装置が実行する優先順決定処理１の流れを示すフローチャートである。なお、ここで実行される処理は、図１３のＳ１０３で実行される。また、ここでは、接続状態の分類が「なし」のサーバの優先度が最も高く、順に「参照のみ」、「設定と参照」、「設定のみ」となるように優先度を決定する。つまり、サーバＯＳ優先順記憶部２０には、「なし」を先頭のレコード群、次が「参照のみ」のレコード群、次が「設定と参照」のレコード群、最後が「設定のみ」のレコード群となるように、レコードが格納される。なお、レコード群とは、０以上のレコードを示し、あるレコード群がなくてもよい。
【０１１４】
図１９に示すように、設定制御装置１０の優先順決定部３５は、サーバ情報記憶部１５に記憶されるレコードで図１９の処理が未処理のレコードのうち、先頭に記憶されるレコードを優先順位の決定対象として１つ選択する（Ｓ４０１）。
【０１１５】
続いて、優先順決定部３５は、選択したレコード、すなわち優先順位の決定対象である仮想サーバについて、ソフトウェア接続関係記憶部１９を参照してサーバの接続関係を分類する（Ｓ４０２）。
【０１１６】
そして、優先順決定部３５は、「設定のみ」と分類した場合、「設定のみ」の分類の先頭レコードとして、優先順位の決定対象であるサーバＮｏをサーバＯＳ優先順記憶部２０に追加する（Ｓ４０３）。この結果、新たに格納したサーバＮｏの優先度が分類「設定のみ」の中で最も高くなる。
【０１１７】
また、優先順決定部３５は、「設定と参照」と分類した場合、サーバＯＳ優先順記憶部２０に「設定と参照」の分類で記憶されるサーバと比較して、デフォルトの優先順位が高いか否かを判定する（Ｓ４０４）。つまり、優先順決定部３５は、現在優先順位の決定対象であるサーバＮｏが、既に「設定と参照」で格納されているサーバＮｏよりも、サーバ情報記憶部１５の末尾側に記憶されているか否かを判定する。
【０１１８】
そして、優先順決定部３５は、現在優先順位の決定対象であるサーバＮｏのデフォルトの優先度が、既に格納されているサーバＮｏのデフォルトの優先度よりも高い場合（Ｓ４０４肯定）、Ｓ４０５を実行する。すなわち、優先順決定部３５は、「設定と参照」の分類の先頭レコードとして、優先順位の決定対象であるサーバＮｏをサーバＯＳ優先順記憶部２０に追加する。この結果、新たに格納したサーバＮｏの優先度が分類「設定と参照」の中で最も高くなる。
【０１１９】
一方、優先順決定部３５は、現在優先順位の決定対象であるサーバＮｏのデフォルトの優先度が、既に格納されているサーバＮｏのデフォルトの優先度よりも低い場合（Ｓ４０４否定）、Ｓ４０６を実行する。すなわち、優先順決定部３５は、「設定と参照」の分類のレコードとして、優先順位を入れ替えて、優先順位の決定対象であるサーバＮｏをサーバＯＳ優先順記憶部２０に追加する。つまり、優先順決定部３５は、既に格納されているサーバＮｏの優先度が高くなるように、既に格納されているサーバＮｏの次に、優先順位の決定対象であるサーバＮｏを追加する。この結果、新たに格納したサーバＮｏよりも既に格納されているサーバＮｏの優先度の方が高くなる。
【０１２０】
また、優先順決定部３５は、「参照のみ」と分類した場合、「参照のみ」の分類の先頭レコードとして、優先順位の決定対象のサーバＮｏをサーバＯＳ優先順記憶部２０に追加する（Ｓ４０７）。この結果、新たに格納したサーバＮｏの優先度が分類「参照のみ」の中で最も高くなる。
【０１２１】
また、優先順決定部３５は、「なし」と分類した場合、「なし」の分類の先頭レコードとして、優先順位の決定対象のサーバＮｏをサーバＯＳ優先順記憶部２０に追加する（Ｓ４０８）。この結果、新たに格納したサーバＮｏの優先度が分類「なし」の中で最も高くなる。
【０１２２】
そして、上記Ｓ４０３からＳ４０８を実行した後、優先順決定部３５は、サーバ情報記憶部１５に記憶されるレコードで図１９の処理が未処理であるレコードがある場合には（Ｓ４０９肯定）、Ｓ４０１に戻って以降の処理を繰り返す。一方、優先順決定部３５は、サーバ情報記憶部１５に記憶されるレコードで図１９の処理が未処理であるレコードがない場合には（Ｓ４０９否定）、処理を終了する。
【０１２３】
なお、優先順決定部３５は、Ｓ４０１からＳ４０９の処理が終了した後には、サーバＯＳ優先順記憶部２０に優先度が高い順でサーバＮｏが格納されていることになるので、Ｓ４０１からＳ４０９の処理が終了した後に優先度を割り振って格納してもよい。また、優先順決定部３５は、Ｓ４０１からＳ４０９の処理を実行中に、サーバＯＳ優先順記憶部２０にサーバＮｏを記憶するたびに、記憶されているサーバＮｏに対して優先度を割り振って格納してもよい。
【０１２４】
（優先順決定処理２の流れ）
図２０は、実施例２に係る設定制御装置が実行する優先順決定処理２の流れを示すフローチャートである。なお、ここで実行される処理は、図１３のＳ１０４で実行される。また、ここでは、接続状態の分類が「なし」のソフトウェアの優先度が最も高く、順に「参照のみ」、「設定と参照」、「設定のみ」となるように優先度を決定する。つまり、ソフトウェア優先順記憶部２１には、「なし」を先頭のレコード群、次が「参照のみ」のレコード群、次が「設定と参照」のレコード群、最後が「設定のみ」のレコード群となるように、レコードが格納される。なお、レコード群とは、０以上のレコードを示し、あるレコード群がなくてもよい。
【０１２５】
図２０に示すように、設定制御装置１０の優先順決定部３５は、デフォルトの優先順位とは逆順に、ソフトウェア情報記憶部１７に記憶されるレコードのうち図２０の処理が未処理のレコードで先頭に記憶されるレコードを１つ選択する（Ｓ５０１）。つまり、優先順決定部３５は、デフォルトの優先順位が最も低いソフトウェアを優先順位の決定対象として１つ選択する。
【０１２６】
続いて、優先順決定部３５は、選択したレコード、すなわち優先順位の決定対象であるソフトウェアについて、ソフトウェア接続関係記憶部１９を参照してソフトウェア間の接続関係を分類する（Ｓ５０２）。
【０１２７】
そして、優先順決定部３５は、「設定のみ」と分類した場合、「設定のみ」の分類の先頭レコードとして、優先順位の決定対象であるレコードのサーバＮｏとソフトＮｏとの組のレコードをソフトウェア優先順記憶部２１に追加する（Ｓ５０３）。この結果、新たに格納したソフトＮｏの優先度が分類「設定のみ」の中で最も高くなる。
【０１２８】
また、優先順決定部３５は、「設定と参照」と分類した場合、ソフトウェア優先順記憶部２１に「設定と参照」の分類で記憶されるソフトウェアと比較して、デフォルトの優先順位が高いか否かを判定する（Ｓ５０４）。つまり、優先順決定部３５は、現在優先順位の決定対象であるサーバＮｏとソフトＮｏとの組が、既に「設定と参照」で格納されているサーバＮｏとソフトＮｏとの組よりも、デフォルトの優先度が高いか否かを判定する。
【０１２９】
そして、優先順決定部３５は、現在優先順位の決定対象であるサーバＮｏとソフトＮｏの組のデフォルトの優先度が、既に格納されている組のデフォルトの優先度よりも高い場合（Ｓ５０４肯定）、Ｓ５０５を実行する。すなわち、優先順決定部３５は、「設定と参照」の分類の先頭レコードとして、優先順位の決定対象であるサーバＮｏとソフトＮｏの組のレコードをソフトウェア優先順記憶部２１に追加する。この結果、新たに格納したソフトＮｏの優先度が分類「設定と参照」の中で最も高くなる。
【０１３０】
一方、優先順決定部３５は、現在優先順位の決定対象であるサーバＮｏとソフトＮｏの組のデフォルトの優先度が、既に格納されている組のデフォルトの優先度よりも低い場合（Ｓ５０４否定）、Ｓ５０６を実行する。すなわち、優先順決定部３５は、「設定と参照」の分類のレコードとして、優先順位を入れ替えて、優先順位の決定対象であるサーバＮｏとソフトＮｏの組のレコードをソフトウェア優先順記憶部２１に追加する。つまり、優先順決定部３５は、既に格納されているサーバＮｏとソフトＮｏの組の優先度が高くなるように、既に格納されているサーバＮｏとソフトＮｏの組の次のレコードとして、優先順位の決定対象であるサーバＮｏとソフトＮｏの組のレコードを追加する。この結果、新たに格納したソフトＮｏよりも既に格納されているソフトＮｏの優先度の方が高くなる。
【０１３１】
また、優先順決定部３５は、「参照のみ」と分類した場合、「参照のみ」の分類の先頭レコードとして、優先順位の決定対象のサーバＮｏとソフトＮｏとの組のレコードをソフトウェア優先順記憶部２１に追加する（Ｓ５０７）。この結果、新たに格納したソフトＮｏの優先度が分類「参照のみ」の中で最も高くなる。
【０１３２】
また、優先順決定部３５は、「なし」と分類した場合、サーバＯＳ優先順記憶部２０を参照し、対象となるソフトウェアを搭載するサーバが「参照のみ」または「設定と参照」であるか否かを判定する（Ｓ５０８）。そして、優先順決定部３５は、対象となるソフトウェアを搭載するサーバが「参照のみ」または「設定と参照」であると判定した場合（Ｓ５０８肯定）、Ｓ５０７を実行する。一方、優先順決定部３５は、対象となるソフトウェアを搭載するサーバが「参照のみ」でも「設定と参照」でもないと判定した場合（Ｓ５０８否定）、Ｓ５０９を実行する。すなわち、優先順決定部３５は、「なし」の分類の先頭レコードとして、優先順位の決定対象のサーバＮｏとソフトＮｏとの組のレコードをソフトウェア優先順記憶部２１に追加する（Ｓ５０９）。この結果、新たに格納したソフトＮｏの優先度が分類「なし」の中で最も高くなる。
【０１３３】
そして、上記Ｓ５０３からＳ５０８を実行した後、優先順決定部３５は、ソフトウェア情報記憶部１７に記憶されるレコードのうち図２０の処理が未処理のレコードがある場合には（Ｓ５１０肯定）、Ｓ５０１に戻って以降の処理を繰り返す。一方、優先順決定部３５は、ソフトウェア情報記憶部１７に記憶されるレコードのうち図２０の処理が未処理のレコードで先頭に記憶されるレコードがない場合には（Ｓ５１０否定）、処理を終了する。
【０１３４】
なお、優先順決定部３５は、Ｓ５０１からＳ５０９の処理が終了した後には、ソフトウェア優先順記憶部２１に優先度が高い順でソフトＮｏが格納されていることになるので、Ｓ５０１からＳ５０９の処理が終了した後に優先度を割り振って格納してもよい。また、優先順決定部３５は、Ｓ５０１からＳ５０９の処理を実行中に、ソフトウェア優先順記憶部２１にソフトＮｏを記憶するたびに、記憶されているソフトＮｏに対して優先度を割り振って格納してもよい。
【０１３５】
（設定起動処理の流れ）
図２１は、実施例２に係る設定制御装置が実行する設定起動処理の流れを示すフローチャートである。なお、ここで実行される処理は、図１３のＳ１０５で実行される。
【０１３６】
図２１に示すように、設定制御装置１０の開始制御部３６は、サーバＯＳ優先順記憶部２０を参照し、最も優先度が高い、接続関係の分類が「なし」であるサーバのハードウェアとＯＳの設定および起動を順番に実行する（Ｓ６０１）。
【０１３７】
また、開始制御部３６は、サーバＯＳ優先順記憶部２０を参照し、次に優先度が高い、接続関係の分類が「参照のみ」であるサーバのハードウェアとＯＳの設定および起動を順番に実行する（Ｓ６０２）。
【０１３８】
また、開始制御部３６は、サーバＯＳ優先順記憶部２０を参照し、次に優先度が高い、接続関係の分類が「設定と参照」であるサーバのハードウェアとＯＳの設定および起動を順番に実行する（Ｓ６０３）。
【０１３９】
また、開始制御部３６は、サーバＯＳ優先順記憶部２０を参照し、次に優先度が高い、接続関係の分類が「設定のみ」であるサーバのハードウェアとＯＳの設定および起動を順番に実行する（Ｓ６０４）。
【０１４０】
そして、開始制御部３６は、Ｓ６０１で実行した接続関係の分類が「なし」であるサーバのハードウェアとＯＳの設定および起動が完了すると、Ｓ６０５を実行する。すなわち、開始制御部３６は、ソフトウェア優先順記憶部２１を参照し、最も優先度が高い、接続関係の分類が「なし」であるソフトウェアの設定および起動を順番に行うスクリプトを実行する。
【０１４１】
また、開始制御部３６は、Ｓ６０２で実行した接続関係の分類が「参照のみ」であるサーバのハードウェアとＯＳの設定および起動が完了すると、Ｓ６０６を実行する。すなわち、開始制御部３６は、ソフトウェア優先順記憶部２１を参照し、次に優先度が高い、接続関係の分類が「参照のみ」であるソフトウェアの設定および起動を順番に開始させるスクリプトを実行する。
【０１４２】
そして、開始制御部３６は、Ｓ６０１からＳ６０５を実行し、Ｓ６０６で実行した接続関係の分類が「参照のみ」であるソフトウェアの設定および起動が終了するまで待機する（Ｓ６０７）。
【０１４３】
その後、開始制御部３６は、Ｓ６０６の処理が終了すると（Ｓ６０７肯定）、Ｓ６０３で実行した接続関係の分類が「設定と参照」であるサーバのハードウェアとＯＳの設定および起動が終了するまで待機する（Ｓ６０８）。
【０１４４】
そして、開始制御部３６は、Ｓ６０３の処理が終了すると（Ｓ６０８肯定）、ソフトウェア優先順記憶部２１を参照し、次に優先度が高い、接続関係の分類が「設定と参照」であるソフトウェアの設定を順番に行うスクリプトを実行する（Ｓ６０９）。
【０１４５】
その後、開始制御部３６は、接続関係の分類が「設定と参照」であるソフトウェアの設定が完了すると、ソフトウェア優先順記憶部２１にしたがって接続関係の分類が「設定と参照」であるソフトウェアの起動を順番に開始させるスクリプトを実行する（Ｓ６１０）。
【０１４６】
そして、起動に失敗したソフトウェアが存在する場合には（Ｓ６１１肯定）、開始制御部３６は、起動に失敗したソフトウェアを再起動させるスクリプトを実行する（Ｓ６１２）。なお、再起動する回数は、任意に設定できる。
【０１４７】
その後、起動に失敗したソフトウェアが存在せず（Ｓ６１１否定）、接続関係の分類が「設定と参照」であるソフトウェアの起動が完了すると（Ｓ６１３肯定）、開始制御部３６は、Ｓ６１４を実行する。すなわち、開始制御部３６は、Ｓ６０４で実行した処理が完了するまで待機し、Ｓ６０３で実行した処理が完了すると、Ｓ６１５を実行する。具体的には、開始制御部３６は、ソフトウェア優先順記憶部２１にしたがって接続関係の分類が「設定のみ」であるソフトウェアの設定と起動を順番に行うスクリプトを実行する。
【０１４８】
このようにすることで、開始制御部３６は、優先順決定部３５が決定したサーバの設定と起動の順序、ソフトウェアの設定と起動の順序にしたがって、スクリプトを実行して、配備した仮想システムを使用可能な状態に遷移させることができる。
【０１４９】
上述したように、設定制御装置１０は、仮想サーバ間の接続状況を物理的または論理的な構成ではなく、ソフトウェアでどのように接続されているかに基づいて決定した設定および動作開始の順序で、仮想サーバの設定や起動、ソフトウェアの設定や起動を実行する。したがって、設定制御装置１０は、配備した仮想システムに含まれる仮想サーバに新しいＩＰアドレスやホスト名を割り当てることができる。また、設定制御装置１０は、ＯＳやソフトウェアについてもＩＰアドレスやホスト名を変更することができる。さらに、設定制御装置１０は、ソフトウェアの接続先を指定するＩＰアドレスやホスト名のパラメータを自動で変更することができる。
【０１５０】
設定制御装置１０は、上述したように、ソフトウェア間の接続状況にしたがって各種パラメータを設定するので、ソフトウェアの接続関係を示すパラメータであるポート番号についても、自動で変更することができる。また、ＩＰアドレスとホスト名はサーバやＯＳごとのパラメータであり、ポート番号はソフトウェアごとのパラメータである。設定制御装置１０は、これら２つのレベルのパラメータの関係を自動で解決し、フロー作成することなく、自動で設定することができる。
【０１５１】
また、接続のソフトウェアに接続関係を示すパラメータを設定すると、対象のソフトウェアに接続を試みる。このため、接続先のパラメータが未設定の場合にはエラーが発生する。これに対しては、設定制御装置１０は、接続関係がなし、設定と参照、参照のみ、設定のみの順で、各種設定を実行することができるので、接続元のソフトウェアのパラメータを設定する前に、接続先のソフトウェアのパラメータの設定を完了させることができる。また、設定制御装置１０は、循環参照となるエラーを検出することができるので、システムが稼動する前にエラーを検出することができる。
【実施例３】
【０１５２】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【０１５３】
（スクリプト）
上記実施例で説明したスクリプトの定義例等は、あくまで例示であり、これに限定されるものではない。例えば、スクリプトでなくても、コマンドやシェルなど様々な手法を用いることができる。
【０１５４】
（構成情報）
上記実施例で説明したシステムの構成情報やパラメータはあくまで例示であり、これに限定されるものではない。例えば、一般的なシステムにおいて構成情報として用いられるメモリやプロセッサの割当状況等を含んでもよく、ネットワークの帯域制限等を含んでもよい。また、パラメータとしても、ポート番号やＩＰアドレス以外の様々な情報を適用することができ、例えばソフトウェア間で接続先を認証するのに用いる認証情報等を適用してもよい。
【０１５５】
（テンプレート）
上記実施例では、テンプレートを用いてシステムやソフトウェアの情報を受け付ける例を説明したが、これに限定されるものではない。例えば、単なるＷｅｂ画面上で入力を受け付けてもよく、ＤＢやテーブルで受け付けることもできる。また、テンプレートとして保持されるシステム構成はあくまで例示であり、実施例で説明したＷｅｂサーバ−ＡＰサーバ−ＤＢサーバで形成されるシステムに限定されない。
【０１５６】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１５７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１５８】
（ハードウェア構成）
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【０１５９】
図２２は、設定制御プログラムを実行するコンピュータのハードウェア構成例を示す図である。図２２に示すように、コンピュータ１００は、ＣＰＵ１０２、入力装置１０３、出力装置１０４、通信インタフェース１０５、媒体読取装置１０６、ＨＤＤ（Hard  Disk  Drive）１０７、ＲＡＭ（Random  Access  Memory）１０８を有する。また、図１５に示した各部は、バス１０１で相互に接続される。
【０１６０】
入力装置１０３は、マウスやキーボードであり、出力装置１０４は、ディスプレイなどであり、通信インタフェース１０５は、ＮＩＣなどのインタフェースである。ＨＤＤ１０７は、設定制御プログラム１０７ａとともに、図２に示した各記憶部が記憶する情報等を記憶する。記憶媒体の例としてＨＤＤ１０７を例に挙げたが、ＲＯＭ（Read  Only  Memory）、ＲＡＭ、ＣＤ−ＲＯＭ等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
【０１６１】
ＣＰＵ１０２は、設定制御プログラム１０７ａを読み出してＲＡＭ１０８に展開することで、図２等で説明した各機能を実行する設定制御プロセス１０８ａを動作させる。すなわち、設定制御プロセス１０８ａは、図２に記載した情報受付部３１、システム配備制御部３２、構成情報抽出部３３、接続関係抽出部３４、優先順決定部３５、開始制御部３６と同様の機能を実行する。このようにコンピュータ１００は、プログラムを読み出して実行することで設定制御方法を実行する情報処理装置として動作する。
【０１６２】
また、コンピュータ１００は、媒体読取装置１０６によって記録媒体から設定制御プログラム１０７ａを読み出し、読み出された設定制御プログラム１０７ａを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ１００によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【０１６３】
１０  設定制御装置
１０ａ  決定部
１０ｂ  動作環境設定部
１１  通信インタフェース
１２  記憶部
１３  システムテンプレート記憶部
１４  ソフトウェアテンプレート記憶部
１５  サーバ情報記憶部
１６  ＮＩＣ情報記憶部
１７  ソフトウェア情報記憶部
１８  ソフトウェアパラメータ記憶部
１９  ソフトウェア接続関係記憶部
２０  サーバＯＳ優先順記憶部
２１  ソフトウェア優先順記憶部
３０  制御部
３１  情報受付部
３２  システム配備制御部
３３  構成情報抽出部
３４  接続関係抽出部
３５  優先順決定部
３６  開始制御部
【図１】
0005903822.tif 000002
【図２】
0005903822.tif 000003
【図３】
0005903822.tif 000004
【図４】
0005903822.tif 000005
【図５】
0005903822.tif 000006
【図６】
0005903822.tif 000007
【図７】
0005903822.tif 000008
【図８】
0005903822.tif 000009
【図９】
0005903822.tif 000010
【図１０】
0005903822.tif 000011
【図１１】
0005903822.tif 000012
【図１２】
0005903822.tif 000013
【図１３】
0005903822.tif 000014
【図１４】
0005903822.tif 000015
【図１５】
0005903822.tif 000016
【図１６】
0005903822.tif 000017
【図１７】
0005903822.tif 000018
【図１８】
0005903822.tif 000019
【図１９】
0005903822.tif 000020
【図２０】
0005903822.tif 000021
【図２１】
0005903822.tif 000022
【図２２】
0005903822.tif 000023