(57)【要約】【課題】仮想マシンのテンプレートを効率的に作成可能にすること。【解決手段】記憶部１ａは、仮想マシンの既存のテンプレートに含まれるプログラムの組合せを示す管理情報４を記憶する。処理部１ｂは、仮想マシンへのインストール対象のプログラムの組合せを示すインストール情報５を受け付ける。処理部１ｂは、記憶部１ａを参照してインストール情報５における組合せに一致する管理情報４における組合せの有無を判定する。処理部１ｂは、インストール情報５における組合せに一致する管理情報４における組合せがない場合、インストール情報５における組合せに属するプログラムのインストールを特定の仮想マシン２ａに対して実行する。処理部１ｂは、インストール後の特定の仮想マシン２ａから作成されたテンプレート６に関連付けて、インストール情報５における組合せを示す情報７を記憶部１ａに格納する。【選択図】図１
2019091153.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンへのインストール対象のプログラムの第１の組合せを示す情報を受け付け、
前記仮想マシンの既存のテンプレートに含まれるプログラムの第２の組合せを示す情報に基づいて、前記第１の組合せに一致する前記第２の組合せの有無を判定し、
前記第１の組合せに一致する前記第２の組合せがない場合、前記第１の組合せに属するプログラムのインストールを特定の仮想マシンに対して実行し、
インストール後の前記特定の仮想マシンから作成されたテンプレートに関連付けて、前記第１の組合せを示す情報を記憶部に格納する、
処理をコンピュータに実行させる管理プログラム。
【請求項２】
前記判定では、前記第１の組合せを含む前記第２の組合せを特定し、前記第１の組合せに属するプログラムのうち、特定した前記第２の組合せに対して追加された差分のプログラムを特定し、
前記実行では、前記第２の組合せに対応する前記特定の仮想マシンに対して、前記差分のプログラムのインストールを実行し、前記第１の組合せのうち前記差分のプログラム以外のプログラムのインストールを省略する、
請求項１記載の管理プログラム。
【請求項３】
前記差分のプログラムは、前記第１の組合せに属する他のプログラムに対するパッチである、請求項２記載の管理プログラム。
【請求項４】
前記第１の組合せは、オペレーティングシステムを示す情報を含み、
前記実行では、前記オペレーティングシステムがインストールされた状態の前記特定の仮想マシンを物理マシンに配備し、前記第１の組合せに属する前記オペレーティングシステム以外のプログラムのインストールを前記特定の仮想マシンに対して実行する、
請求項１記載の管理プログラム。
【請求項５】
前記格納では、更に、前記特定の仮想マシンの識別情報に関連付けて、前記第１の組合せを示す情報を前記記憶部に格納する、請求項１乃至４の何れか１項に記載の管理プログラム。
【請求項６】
仮想マシンの既存のテンプレートに含まれるプログラムの第１の組合せを示す情報を記憶する記憶部と、
前記仮想マシンへのインストール対象のプログラムの第２の組合せを示す情報を受け付け、前記記憶部を参照して前記第２の組合せに一致する前記第１の組合せの有無を判定し、前記第２の組合せに一致する前記第１の組合せがない場合、前記第２の組合せに属するプログラムのインストールを特定の仮想マシンに対して実行し、インストール後の前記特定の仮想マシンから作成されたテンプレートに関連付けて、前記第２の組合せを示す情報を前記記憶部に格納する処理部と、
を有する管理装置。
【請求項７】
コンピュータが、
仮想マシンへのインストール対象のプログラムの第１の組合せを示す情報を受け付け、
前記仮想マシンの既存のテンプレートに含まれるプログラムの第２の組合せを示す情報に基づいて、前記第１の組合せに一致する前記第２の組合せの有無を判定し、
前記第１の組合せに一致する前記第２の組合せがない場合、前記第１の組合せに属するプログラムのインストールを特定の仮想マシンに対して実行し、
インストール後の前記特定の仮想マシンから作成されたテンプレートに関連付けて、前記第１の組合せを示す情報を記憶部に格納する、
管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は管理プログラム、管理装置および管理方法に関する。
【背景技術】
【０００２】
情報処理の分野では、物理的なコンピュータ（物理マシンや物理ホストと呼ぶことがある）上で、複数の仮想的なコンピュータ（仮想マシンや仮想ホストと呼ぶことがある）を動作させる仮想化技術が利用されている。各仮想マシン上では、ＯＳ（Operating System）などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。例えば、ハイパーバイザと呼ばれるソフトウェアが、ＣＰＵ（Central Processing Unit）の処理能力やＲＡＭ（Random Access Memory）の記憶領域を、演算のリソースとして複数の仮想マシンに割り振ることがある。
【０００３】
仮想マシンの運用では、種々のソフトウェアがインストールされた状態の仮想マシンをテンプレート化し、テンプレートを基に共通のソフトウェア構成をもつ複数の仮想マシンを作成可能にすることがある。
【０００４】
例えば、同一構成の複数の仮想マシンの用途に必要な全てのアプリケーションをインストールしたテンプレート元の仮想マシンを作成し、当該テンプレート元の仮想マシンのテンプレート化を行う管理サーバの提案がある。この提案では、管理サーバは、１つの仮想マシンテンプレートを作成するのみで複数の用途の仮想マシンを作成する。
【０００５】
また、仮想マシンの動作に使用されているファイルとテンプレートファイルとを比較し、比較結果に基づいて仮想マシンの設定状況を示す構成情報を生成する情報処理装置の提案がある。
【０００６】
なお、仮想化サーバに対するＯＳとアプリケーション（ＡＰ：APplication）とを別の仮想ディスクにより差し替え可能とし、ＯＳおよびＡＰの環境設定とユーザ設定とに関する仮想ディスクの差分ファイルを作成するシステムの提案もある。提案のシステムは、仮想ディスクの差し替えに際して差分ファイルを参照することによりＯＳおよびＡＰの環境設定の差し替えとユーザ設定の引継ぎとを自動的に行う。
【０００７】
また、仮想マシン上のＯＳやＡＰにより認識されるファイル単位ではなく、仮想ディスク用の仮想ディスクファイルを構成するブロックファイル単位でファイルサーバとのデータ転送を行うことで、ファイルサーバとのデータの同期を効率化する提案もある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−２０３２３４号公報
【特許文献２】特開２０１２−２０３６４０号公報
【特許文献３】特開２０１０−２２５１０９号公報
【特許文献４】特開２０１３−１６１８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
仮想マシンの用途に応じて、仮想マシンへのインストール対象となるＯＳ、ミドルウェアおよびパッチなどのプログラムの組合せは変わり得る。そこで、例えば、要求されるプログラムの組合せ毎に、システム管理者が仮想マシンのテンプレートを作成する作業を行うことが考えられる。ところが、テンプレートの作成作業には、例えば、システム管理者が、所定の物理マシンで動作するテンプレート作成用の仮想マシンに対して、該当の組合せに属する各プログラムを個別にインストールしていくといった煩雑な作業を伴う。このため、テンプレートの作成に時間がかかり、テンプレートを基にした仮想マシンの提供が遅れることがあるという問題がある。
【００１０】
１つの側面では、本発明は、仮想マシンのテンプレートを効率的に作成可能にすることを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、管理プログラムが提供される。管理プログラムは、仮想マシンへのインストール対象のプログラムの第１の組合せを示す情報を受け付け、仮想マシンの既存のテンプレートに含まれるプログラムの第２の組合せを示す情報に基づいて、第１の組合せに一致する第２の組合せの有無を判定し、第１の組合せに一致する第２の組合せがない場合、第１の組合せに属するプログラムのインストールを特定の仮想マシンに対して実行し、インストール後の特定の仮想マシンから作成されたテンプレートに関連付けて、第１の組合せを示す情報を記憶部に格納する、処理をコンピュータに実行させる。
【発明の効果】
【００１２】
１つの側面では、仮想マシンのテンプレートを効率的に作成できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の管理装置を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】テンプレート管理サーバのハードウェア例を示す図である。
【図４】テンプレート管理サーバの機能例を示す図である。
【図５】インストールパターン＃１テーブルの例を示す図である。
【図６】ＯＳ＃１テーブルの例を示す図である。
【図７】ミドルウェア＃１テーブルの例を示す図である。
【図８】仮想マシンテンプレート＃１テーブルの例を示す図である。
【図９】更新内容＃１テーブルの例を示す図である。
【図１０】テンプレート管理サーバの処理例を示すフローチャートである。
【図１１】仮想マシンテンプレートの作成例（その１）を示す図である。
【図１２】仮想マシンテンプレートの作成例（その１）の手順を示す図である。
【図１３】仮想マシンテンプレートの作成例（その２）を示す図である。
【図１４】仮想マシンテンプレートの作成例（その２）の手順を示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の管理装置を示す図である。管理装置１は、物理マシン２とネットワーク３を介して接続されている。管理装置１は、物理マシン２で動作する仮想マシン２ａを用いて、仮想マシンのテンプレートを作成する。
【００１５】
ここで、仮想マシンの動作に使用されるファイルの集合は、他の仮想マシンとは独立のファイルシステムとして管理することが可能である。仮想マシンのファイルシステムは、当該仮想マシンの設定変更などに伴って更新される。ファイルシステムを不揮発性の記憶装置に保存しておくことで、保存されたファイルシステムを用いて仮想マシンを再起動することができる。仮想マシンのファイルシステムをひと固まりのデータとして扱うとき、当該ひと固まりのデータを仮想マシンイメージと呼ぶことがある。仮想マシンイメージを移動または複製することで、仮想マシンを任意の情報処理装置上で起動させることもできる。仮想マシンのテンプレートは、新規に配備する仮想マシンの初期状態に相当する仮想マシンイメージである。
【００１６】
例えば、仮想マシンに幾つかのプログラムをインストールした状態で、当該仮想マシンによりテンプレートを作成することで、該当のプログラムがインストールされた状態の仮想マシンに対応するテンプレートを作成することができる。仮想マシンへのインストール対象となるプログラムは、例えば、ＯＳ（オペレーティングシステム）、ミドルウェア、アプリケーションなどのソフトウェアや各ソフトウェアに対するパッチなどである。ただし、ＯＳについては、該当のＯＳのみがインストールされた状態の仮想マシンのテンプレートが予め用意されている。
【００１７】
管理装置１は、記憶部１ａおよび処理部１ｂを有する。記憶部１ａは、ＲＡＭなどの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部１ｂは、ＣＰＵ、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。処理部１ｂはプログラムを実行するプロセッサでもよい。プロセッサは、複数のプロセッサの集合（マルチプロセッサ）を含み得る。
【００１８】
記憶部１ａは、仮想マシンの既存のテンプレートに含まれるプログラムの組合せを示す管理情報４を記憶する。既存のテンプレートは、作成済みのテンプレートともいえる。例えば、管理情報４は、プログラムおよびテンプレートの項目を含む。プログラムの項目には、プログラムの組合せを示す情報（例えば、プログラムの識別名の組合せ）が登録される。テンプレートの項目には、テンプレートの格納場所を表すパス（テンプレートのファイル名を含む）が登録される。テンプレートの格納場所は、記憶部１ａでもよいし、管理装置１の内部または外部の所定の記憶装置でもよい。テンプレートの格納場所は、ネットワーク３に接続された記憶装置でもよい。
【００１９】
例えば、管理情報４は、プログラムＡ，Ｄ，Ｅの組合せとテンプレート“ｔ１．ｉｍｇ”とが登録されたレコードを含む。当該レコードは、プログラムＡ，Ｄ，Ｅがインストールされた状態の仮想マシンのテンプレート“ｔ１．ｉｍｇ”が作成済みであることを示す。管理情報４には他のプログラムの組合せ（例えば、プログラムＦ，Ｇ）と他のテンプレート（例えば、“ｔ２．ｉｍｇ”）との対応関係を示すレコードも同様に登録されている。
【００２０】
処理部１ｂは、インストール情報５を受け付ける。インストール情報５は、仮想マシンへのインストール対象のプログラムの組合せを示す。処理部１ｂは、記憶部１ａに記憶された管理情報４に含まれるプログラムの組合せ（既存の組合せ）を示す情報に基づいて、インストール情報５で示される組合せに一致する既存の組合せの有無を判定する。
【００２１】
処理部１ｂは、インストール情報５で示される組合せに一致する既存の組合せがある場合、インストール情報５で示される組合せに対応するテンプレートの作成を行わない。
処理部１ｂは、インストール情報５で示される組合せに一致する既存の組合せがない場合、インストール情報５で示される組合せに属するプログラムのインストールを特定の仮想マシンに対して実行する。
【００２２】
例えば、インストール情報５は、インストール対象のプログラムの組合せとして、プログラムＡ，Ｂ，Ｃの組合せを示しているとする。この場合、処理部１ｂは、管理情報４に含まれる各組合せと、プログラムＡ，Ｂ，Ｃの組とを比較し、管理情報４に、プログラムＡ，Ｂ，Ｃの組合せが含まれるか否かを判定する。管理情報４の例によれば、プログラムＡ，Ｂ，Ｃの組合せに一致する組合せは、管理情報４には登録されていない。このため、処理部１ｂは、プログラムＡ，Ｂ，Ｃのインストールを仮想マシン２ａに対して実行する。ここで、インストール対象のプログラムの一部がＯＳの場合もある。この場合、該当のＯＳのみがインストールされた状態の仮想マシンのテンプレートから仮想マシン２ａを起動することが、該当のＯＳを仮想マシン２ａにインストールすることに相当する。インストールの結果、仮想マシン２ａにプログラムＡ，Ｂ，Ｃがインストールされた状態となる。
【００２３】
処理部１ｂは、インストール後の特定の仮想マシンから作成されたテンプレートに関連付けて、インストール情報５で示される組合せを示す情報を記憶部１ａに格納する。
例えば、処理部１ｂは、プログラムＡ，Ｂ，Ｃがインストールされた状態の仮想マシン２ａのテンプレートの作成を、物理マシン２に指示する。物理マシン２は、テンプレートの作成の指示に応じて、仮想マシン２ａに関するテンプレート６を作成する。例えば、物理マシン２は、仮想マシン２ａの動作に用いられるファイルの集合を基に、テンプレート６を作成する。テンプレート６のファイル名は、例えば、“ｔ３．ｉｍｇ”である。
【００２４】
処理部１ｂは、テンプレート６を取得し、記憶部１ａまたは所定の記憶装置に格納する。そして、処理部１ｂは、テンプレート６に関連付けて、プログラムＡ，Ｂ，Ｃを管理情報４に登録する。具体的には、処理部１ｂは、プログラムＡ，Ｂ，Ｃの組合せを示す情報と、テンプレート６のパス“ｔ３．ｉｍｇ”との対応関係を示すレコード７を生成し、管理情報４に追加する。その結果、管理情報４によりプログラムＡ，Ｂ，Ｃの組合せに対応するテンプレート６が作成済みとして管理される。
【００２５】
管理装置１によれば、仮想マシンのテンプレートを効率的に作成できる。例えば、システムの管理者は、仮想マシンのテンプレートを作成するとき、所望のプログラムの組合せを、管理装置１に入力しさえすればよい。そうすれば、管理装置１により、入力された組合せが新規の組合せであるか否かが判定される。そして、新規の組合せであれば、管理装置１により、該当の組合せのプログラムを適用した仮想マシンが作成され、該当のプログラムがインストールされた状態の仮想マシンのテンプレートが作成される。
【００２６】
このため、システムの管理者が、各プログラムを個別に仮想マシンにインストールする作業を行ってテンプレートを作成せずに済み、テンプレートの作成に伴う当該作業の省力化を図れる。また、管理装置１によりインストールの実行やテンプレートの作成を自動化することで、これらの処理を任意の時間帯に行えるようになる。このため、システムの管理者がインストールの作業を行うよりも、テンプレートの作成を早いタイミングで完了できる可能性が高まる。これにより、テンプレートを基にした仮想マシンの提供を迅速に行えるようになる。
【００２７】
なお、処理部１ｂは、既存のテンプレートにおけるプログラムの組合せと、新規の組合せとの差分を確認してもよい。そして、処理部１ｂは、新規の組合せにおいて、既存の組合せに対して追加された差分のプログラムがある場合には、既存のテンプレートに対応する仮想マシンに、差分のプログラムのみをインストールして、仮想マシンのテンプレートを作成してもよい。
【００２８】
すなわち、処理部１ｂは、インストール情報で示された第１の組合せを含む、既存の仮想マシンのテンプレートにおける第２の組合せを特定し、第１の組合せに属するプログラムのうち、第２の組合せに対して追加された差分のプログラムを特定してもよい。そして、処理部１ｂは、第２の組合せに対応する仮想マシンに対して差分のプログラムのインストールを実行し、第１の組合せのうち差分のプログラム以外のプログラムのインストールを省略してもよい。
【００２９】
差分のプログラムとして、例えば、処理部１ｂは、インストール情報で示された第１の組合せにおいて追加されたミドルウェアやアプリケーションを特定することが考えられる。あるいは、処理部１ｂは、第１の組合せに属する所定のソフトウェアに対する更新分のパッチを、差分のプログラムとして特定することも考えられる。
【００３０】
この場合、インストール対象が差分のプログラムのみ（新規の組合せのうちの一部分）で済むため、新規の組合せの全体をインストールするよりも、テンプレートの作成時間を短縮できる。
【００３１】
以下では、より具体的な情報処理システムを例示して、管理装置１の機能を更に詳細に説明する。
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムの例を示す図である。第２の実施の形態の情報処理システムは、テンプレート管理サーバ１００、作業サーバ２００および仮想マシン実行サーバ３００，４００，・・・を含む。テンプレート管理サーバ１００、作業サーバ２００および仮想マシン実行サーバ３００，４００，・・・は、ネットワーク１０に接続されている。ネットワーク１０は、例えば、データセンタ内に設けられたＬＡＮ（Local Area Network）である。ネットワーク１０には、端末装置５０，６０も接続されている。更に、ネットワーク１０は、ネットワーク２０に接続されている。ネットワーク２０は、例えば、インターネットやＷＡＮ（Wide Area Network）である。ネットワーク２０には、ユーザにより利用されるユーザ端末７０が接続されている。
【００３２】
第２の実施の形態の情報処理システムは、プライベートクラウドと呼ばれるサービスを提供する。プライベートクラウドでは、仮想マシンの利用環境をユーザに提供する。プライベートクラウドでは、仮想マシンにより実行されるＯＳおよびミドルウェアなどのソフトウェアや各ソフトウェアに適用するパッチのバージョンなどは、ユーザにより自由に決定可能である。
【００３３】
テンプレート管理サーバ１００は、仮想マシンを新規に配備する際に用いられる仮想マシンのテンプレート（仮想マシンテンプレートと称する）の作成を管理するサーバコンピュータである。テンプレート管理サーバ１００は、第１の実施の形態の管理装置１の一例である。
【００３４】
作業サーバ２００は、仮想マシンテンプレートの作成作業に用いられるサーバコンピュータである。作業サーバ２００は、仮想マシンテンプレートを作成するための仮想マシン（仮想マシンテンプレート作成元仮想マシンと称する）を実行する。作業サーバ２００は、第１の実施の形態の物理マシン２の一例である。
【００３５】
仮想マシン実行サーバ３００，４００，・・・は、ユーザの業務に用いられる仮想マシンを実行するサーバコンピュータである。
作業サーバ２００および仮想マシン実行サーバ３００，４００，・・・それぞれは、ハイパーバイザと呼ばれるソフトウェアを実行する。ハイパーバイザは、自サーバのプロセッサやＲＡＭなどの演算リソースを仮想マシンに割り当て、自サーバ上で仮想マシンを動作させる。
【００３６】
端末装置５０は、システムの管理者８１により操作されるクライアントコンピュータである。端末装置５０は、管理者８１による入力を受け付け、当該入力に応じた指示をテンプレート管理サーバ１００に送信する。例えば、管理者８１は、新たな仮想マシンのプログラム構成（ソフトウェア構成ともいえる）の情報をユーザから受け付け、当該プログラム構成でのテンプレートの作成要求を、端末装置５０に入力する。プログラム構成の情報は、仮想マシンへのインストール対象のＯＳやミドルウェアなどのソフトウェアや各ソフトウェアに適用するパッチの情報を含む。なお、インストール対象のＯＳ、ミドルウェアおよびパッチを総称して、インストール対象の「プログラム」と称することができる。端末装置５０は、当該作成要求をテンプレート管理サーバ１００に送信する。
【００３７】
端末装置６０は、作業員８２により操作されるクライアントコンピュータである。端末装置６０は、テンプレート管理サーバ１００により取得された仮想マシンテンプレートを用いて、仮想マシン実行サーバ３００，４００，・・・に仮想マシンを配備する。また、端末装置６０は、作業員８２による設定入力を受け付け、配備した仮想マシンに対して、仮想マシン個別の設定指示を送信し、ユーザ端末７０により仮想マシンを利用開始可能にするまでの準備を行う。
【００３８】
図３は、テンプレート管理サーバのハードウェア例を示す図である。テンプレート管理サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６およびＮＩＣ（Network Interface Card）１０７を有する。各ハードウェアはテンプレート管理サーバ１００のバスに接続されている。
【００３９】
プロセッサ１０１は、テンプレート管理サーバ１００の情報処理を制御するハードウェアである。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組合せであってもよい。
【００４０】
ＲＡＭ１０２は、テンプレート管理サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００４１】
ＨＤＤ１０３は、テンプレート管理サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。テンプレート管理サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００４２】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、テンプレート管理サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１として、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４３】
入力信号処理部１０５は、テンプレート管理サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４４】
媒体リーダ１０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４５】
ＮＩＣ１０７は、ネットワーク１０を介して他の装置と通信を行う。ＮＩＣ１０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
なお、作業サーバ２００、仮想マシン実行サーバ３００，４００，・・・、端末装置５０，６０およびユーザ端末７０も、テンプレート管理サーバ１００と同様のハードウェアを用いて実現できる。
【００４６】
図４は、テンプレート管理サーバの機能例を示す図である。テンプレート管理サーバ１００は、インストールパターン記憶部１１０、仮想マシンテンプレート記憶部１２０、更新内容ＤＢ１３０、インストールパターン取得部１４０、差分抽出部１５０、更新実行ファイル生成部１６０およびテンプレート生成制御部１７０を有する。
【００４７】
インストールパターン記憶部１１０、仮想マシンテンプレート記憶部１２０および更新内容ＤＢ１３０は、ＲＡＭ１０２やＨＤＤ１０３の記憶領域を用いて実現される。インストールパターン取得部１４０、差分抽出部１５０、更新実行ファイル生成部１６０およびテンプレート生成制御部１７０は、プロセッサ１０１により実現される。
【００４８】
例えば、プロセッサ１０１は、ＲＡＭ１０２に記憶されたプログラムを実行することで、インストールパターン取得部１４０、差分抽出部１５０、更新実行ファイル生成部１６０およびテンプレート生成制御部１７０の機能を発揮する。あるいは、インストールパターン取得部１４０、差分抽出部１５０、更新実行ファイル生成部１６０およびテンプレート生成制御部１７０は、ＦＰＧＡやＡＳＩＣなどのハードワイヤードロジックにより実現されてもよい。
【００４９】
インストールパターン記憶部１１０は、インストールパターンテーブルを記憶する。インストールパターンテーブルは、インストール対象のソフトウェアの組合せを示す情報である。ここで、インストール対象のソフトウェアは、ＯＳおよびミドルウェアを含む。以下では、インストール対象のソフトウェアの組合せを指して、「インストールパターン」と称することがある。
【００５０】
また、インストールパターン記憶部１１０は、該当のＯＳに関するＯＳテーブル、および、該当のミドルウェアに関するミドルウェアテーブルを記憶する。ＯＳテーブルは、ＯＳのみがインストールされた状態の仮想マシンテンプレートの識別情報（ＩＤ：IDentifier）やＯＳ設定に用いられるＯＳ設定実行ファイルの名称、および、ＯＳに適用するパッチ（ＯＳパッチ）の名称などの情報を含む。ミドルウェアテーブルは、ミドルウェアの名称、ミドルウェアのインストールメディアのファイル名、および、ミドルウェアに適用するパッチ（ミドルウェアパッチ）の名称などの情報を含む。
【００５１】
仮想マシンテンプレート記憶部１２０は、仮想マシンテンプレートテーブルを記憶する。仮想マシンテンプレートテーブルは、作成済みの仮想マシンテンプレートを管理するための情報である。仮想マシンテンプレートテーブルは、仮想マシンテンプレートのファイル名、仮想マシンテンプレートに含まれるＯＳやミドルウェアの名称、および、適用されているＯＳパッチの名称やミドルウェアパッチの名称を含む。
【００５２】
また、仮想マシンテンプレートテーブルは、該当の仮想マシンを作成する際に用いられた仮想マシンテンプレート作成元仮想マシンのホスト名、ＩＰアドレスおよび管理者ユーザパスワードの情報を含む。
【００５３】
更新内容ＤＢ１３０は、更新内容テーブルを記憶する。更新内容テーブルは、インストールパターンテーブル、ＯＳテーブルおよびミドルウェアテーブルにより示されるプログラム構成と、仮想マシンテンプレートテーブルにより示されるプログラム構成との差分を示す情報である。更新内容テーブルは、新規に作成する仮想マシンテンプレートに関する情報であるともいえる。
【００５４】
インストールパターン取得部１４０は、インストールパターンと、インストールパターンに含まれるＯＳに関する情報と、インストールパターンに含まれるミドルウェアに関する情報とを、端末装置５０から取得する。インストールパターン取得部１４０は、端末装置５０から取得した情報に基づいて、インストールパターンテーブル、ＯＳテーブルおよびミドルウェアテーブルを生成し、インストールパターン記憶部１１０に格納する。
【００５５】
差分抽出部１５０は、インストールパターン記憶部１１０に記憶されたインストールパターンテーブル、ＯＳテーブルおよびミドルウェアテーブルと、仮想マシンテンプレート記憶部１２０に記憶された仮想マシンテンプレートテーブルとを比較し、差分を抽出する。差分抽出部１５０は、抽出した差分に基づいて、更新内容テーブルを生成し、更新内容ＤＢ１３０に格納する。
【００５６】
更新実行ファイル生成部１６０は、更新内容ＤＢ１３０に記憶された更新内容テーブルに基づいて、仮想マシンの更新実行ファイルを生成する。更新実行ファイルは、ＯＳのみがインストールされた状態の仮想マシンの作業サーバ２００上への配備、ミドルウェアやパッチなどのインストール、および、インストール後の仮想マシンテンプレートの生成を行うシェルスクリプトまたはバッチファイルである。
【００５７】
テンプレート生成制御部１７０は、更新実行ファイル生成部１６０により生成された更新実行ファイルに基づいて、作業サーバ２００による仮想マシンテンプレートの生成を制御する。例えば、テンプレート生成制御部１７０は、更新実行ファイルを作業サーバ２００上で実行させることで、仮想マシンテンプレート作成元仮想マシンである仮想マシン２１０を作業サーバ２００上で起動させる。そして、テンプレート生成制御部１７０は、仮想マシン２１０に各種のミドルウェアやＯＳパッチおよびミドルウェアパッチのインストールを行う。また、テンプレート生成制御部１７０は、作業サーバ２００により当該インストール後の仮想マシン２１０に対応する仮想マシンテンプレートを生成させ、当該仮想マシンテンプレートを取得する。仮想マシンテンプレートは、ひと固まりのファイル（イメージファイル）として生成される。
【００５８】
テンプレート生成制御部１７０は、仮想マシンテンプレートを、仮想マシンテンプレート記憶部１２０、または、テンプレート管理サーバ１００からアクセス可能なストレージ装置（図２では図示を省略した）に格納する。テンプレート生成制御部１７０は、生成された仮想マシンテンプレートに関する仮想マシンテンプレートテーブルを生成し、仮想マシンテンプレート記憶部１２０に格納する。
【００５９】
なお、あるインストールパターンについて、仮想マシンテンプレート作成元仮想マシン（例えば、仮想マシン２１０）を作業サーバ２００上に配備した場合、当該仮想マシンテンプレート作成元仮想マシン（例えば、仮想マシン２１０）は、削除されずに残される。
【００６０】
図５は、インストールパターン＃１テーブルの例を示す図である。インストールパターン＃１テーブル１１１は、インストールパターン＃１を示すインストールパターンテーブルである。ここで、“＃１”は、複数のインストールパターンそれぞれを区別するための識別番号である。また、以下では、ＯＳ、ミドルウェア、仮想マシンテンプレートおよび更新内容についても、識別番号を用いた同様の表記により区別することがある。
【００６１】
インストールパターン＃１テーブル１１１は、項目名およびデータ内容の項目を含む。項目名の項目には、ソフトウェアの種別が登録される。データ内容の項目には、該当のソフトウェアに関するデータ内容へのリンク（パス）が登録される。
【００６２】
例えば、インストールパターン＃１テーブル１１１には、項目名“ＯＳ＃１”、データ内容“ＯＳ＃１テーブルへのリンク”を含むレコードが登録される。このレコードは、インストールパターン＃１に含まれるＯＳが“ＯＳ＃１”であり、当該ＯＳの具体的な情報が、“ＯＳ＃１テーブルへのリンク”で示されるパスに格納されていることを示す。
【００６３】
また、インストールパターン＃１テーブル１１１には、項目名“ミドルウェア＃１”、データ内容“ミドルウェア＃１テーブルへのリンク”を含むレコードが登録される。このレコードは、インストールパターン＃１に含まれるミドルウェアが“ミドルウェア＃１”であり、当該ミドルウェアの具体的な情報が、“ミドルウェア＃１テーブルへのリンク”で示されるパスに格納されていることを示す。
【００６４】
インストールパターン＃１テーブル１１１には、ミドルウェア＃１以外にも、複数のミドルウェアに関するレコードが登録され得る。
図６は、ＯＳ＃１テーブルの例を示す図である。ＯＳ＃１テーブル１１２は、ＯＳ＃１を示すＯＳテーブルである。ＯＳ＃１テーブル１１２は、項目名およびデータ内容の項目を含む。項目名の項目には、情報の種別が登録される。データ内容の項目には、具体的なデータの内容（具体的な値）が登録される。
【００６５】
例えば、項目名“ＯＳＩＤ”には、データ内容として“ＯＳ＃１のＩＤ”が登録される。項目名“ＯＳ名”には、データ内容として“ＯＳ＃１の名称”が登録される。項目名“仮想マシンテンプレート（ＯＳのみ）ＩＤ”（ＯＳのみが登録された状態の仮想マシンテンプレートのＩＤ）には、データ内容として“仮想マシンテンプレート（ＯＳ＃１のみ）のＩＤ”が登録される。項目名“ＯＳ設定実行ファイル名”には、データ内容として“ＯＳ設定実行ファイルの名称”が登録される。項目名“ＯＳパッチ名”には、データ内容として“ＯＳパッチの名称”が登録される。なお、ＯＳパッチ名のレコードは、ＯＳ＃１テーブル１１２に複数登録され得る。
【００６６】
図７は、ミドルウェア＃１テーブルの例を示す図である。ミドルウェア＃１テーブル１１３は、ミドルウェア＃１を示すミドルウェアテーブルである。ミドルウェア＃１テーブル１１３は、項目名およびデータ内容の項目を含む。項目名の項目には、情報の種別が登録される。データ内容の項目には、具体的なデータの内容（具体的な値）が登録される。
【００６７】
例えば、項目名“ミドルウェアＩＤ”には、データ内容として“ミドルウェア＃１のＩＤ”が登録される。項目名“ミドルウェア名”には、データ内容として“ミドルウェア＃１の名称”が登録される。項目名“ミドルウェアインストールメディア名”には、データ内容として“ミドルウェア＃１のインストールメディアのファイル名”が登録される。項目名“ミドルウェアサイレントインストール実行ファイル名”には、データ内容として“ミドルウェア＃１のサイレントインストール実行用のファイル名”が登録される。当該ファイル名は、ミドルウェアミドルウェア＃１のサイレントインストールを行うためのシェルスクリプトまたはバッチファイルの名称である。
【００６８】
ここで、「サイレントインストール」とは、テンプレート管理サーバ１００が、管理者８１や作業員８２に対する問合せなしにインストールを行う方法である。
項目名“ミドルウェアパッチ名”には、データ内容として“ミドルウェアパッチの名称”が登録される。なお、ミドルウェアパッチ名のレコードは、ミドルウェア＃１テーブル１１３に複数登録され得る。
【００６９】
図８は、仮想マシンテンプレート＃１テーブルの例を示す図である。仮想マシンテンプレート＃１テーブル１１４は、仮想マシンテンプレート＃１を示す仮想マシンテンプレートテーブルである。仮想マシンテンプレート＃１テーブル１１４は、項目名およびデータ内容の項目を含む。項目名の項目には、情報の種別が登録される。データ内容の項目には、具体的なデータの内容（具体的な値）が登録される。
【００７０】
例えば、項目名“仮想マシン名”には、データ内容として“仮想マシンテンプレート作成元仮想マシンのホスト名”が登録される。項目名“仮想マシンＩＰ（Internet Protocol）アドレス”には、データ内容として“仮想マシンテンプレート作成元仮想マシンのＩＰアドレス”が登録される。項目名“仮想マシンパスワード”には、データ内容として“仮想マシンテンプレート作成元仮想マシンの管理者ユーザパスワード”が登録される。項目名“仮想マシンテンプレートファイル名”には、データ内容として“仮想マシンテンプレート＃１のファイル名”が登録される。項目名“ＯＳ名”には、データ内容として“ＯＳの名称”が登録される。項目名“ミドルウェアパッチ名”には、データ内容として“ミドルウェアパッチの名称”が登録される。
【００７１】
なお、仮想マシンテンプレート＃１テーブル１１４は、上記以外にもミドルウェア名、ＯＳパッチ名およびミドルウェアパッチ名それぞれについて、１以上のレコードを含み得る。
【００７２】
図９は、更新内容＃１テーブルの例を示す図である。更新内容＃１テーブル１１５は、更新内容＃１を示す更新内容テーブルである。更新内容＃１テーブル１１５は、項目名およびデータ内容の項目を含む。項目名の項目には、情報の種別が登録される。データ内容の項目には、具体的なデータの内容（具体的な値）が登録される。
【００７３】
例えば、項目名“仮想マシン名”には、データ内容として“仮想マシンテンプレート作成元仮想マシンのホスト名”が登録される。このレコードは、今回の仮想マシンテンプレート作成に利用可能な仮想マシンテンプレート作成元仮想マシンがある場合、当該仮想マシンテンプレート作成元仮想マシンの仮想マシン名が“仮想マシンテンプレート作成元仮想マシンのホスト名”であることを示す。なお、今回の仮想マシンテンプレート作成に利用可能な仮想マシンテンプレート作成元仮想マシンがない場合、項目名“仮想マシン名”に対応するデータ内容は、設定なしとなる。
【００７４】
項目名“仮想マシンＩＰアドレス”には、データ内容として“仮想マシンテンプレート作成元仮想マシンのＩＰアドレス”が登録される。このレコードは、今回の仮想マシンテンプレート作成に利用可能な仮想マシンテンプレート作成元仮想マシンがある場合、当該仮想マシンテンプレート作成元仮想マシンのＩＰアドレスが“仮想マシンテンプレート作成元仮想マシンのＩＰアドレス”であることを示す。なお、今回の仮想マシンテンプレート作成に利用可能な仮想マシンテンプレート作成元仮想マシンがない場合、項目名“仮想マシンＩＰアドレス”に対応するデータ内容は、設定なしとなる。
【００７５】
項目名“仮想マシンパスワード”には、データ内容として“仮想マシンテンプレート作成元仮想マシンの管理者ユーザパスワード”が登録される。このレコードは、今回の仮想マシンテンプレート作成に利用可能な仮想マシンテンプレート作成元仮想マシンがある場合、当該仮想マシンテンプレート作成元仮想マシンにログインするためのパスワードが“仮想マシンテンプレート作成元仮想マシンの管理者ユーザパスワード”であることを示す。なお、今回の仮想マシンテンプレート作成に利用可能な仮想マシンテンプレート作成元仮想マシンがない場合、項目名“仮想マシンＩＰアドレス”に対応するデータ内容は、設定なしとなる。
【００７６】
項目名“仮想マシンテンプレート（ＯＳのみ）ＩＤ”には、データ内容として“仮想マシンテンプレート（ＯＳのみ）のＩＤ”が登録される。このレコードは、今回の仮想マシンテンプレート作成に利用可能な仮想マシンテンプレート作成元仮想マシンがない場合、仮想マシンテンプレート作成元仮想マシンを新たに作成するための仮想マシンテンプレート（ＯＳのみがインストールされた状態の仮想マシンテンプレート）のＩＤが“仮想マシンテンプレート（ＯＳのみ）のＩＤ”であることを示す。なお、今回の仮想マシンテンプレート作成に利用可能な仮想マシンテンプレート作成元仮想マシンがある場合、項目名“仮想マシンテンプレート（ＯＳのみ）ＩＤ”に対応するデータ内容は、設定なしとなる。
【００７７】
項目名“ＯＳ設定実行ファイル名”には、データ内容として“ＯＳ設定実行ファイルの名称”（ＯＳに対する設定を行うためのシェルスクリプトまたはバッチファイルの名称）が登録される。
【００７８】
項目名“ＯＳパッチ名”には、データ内容として“ＯＳパッチの名称”が登録される。更新内容＃１テーブル１１５には、ＯＳパッチの名称のレコードが複数登録され得る。
項目名“ミドルウェア＃１インストールメディア名”には、データ内容として“ミドルウェア＃１のインストールメディアのファイル名”が登録される。項目名“ミドルウェア＃１サイレントインストール実行ファイル名”には、データ内容として“ミドルウェア＃１のサイレントインストール実行用のファイル名”が登録される。
【００７９】
項目名“ミドルウェア＃１パッチ名”には、データ内容として“ミドルウェア＃１のパッチ名”が登録される。なお、更新内容＃１テーブル１１５には、ミドルウェア＃１に適用するパッチの名称が複数登録され得る。
【００８０】
また、更新内容＃１テーブル１１５には、ミドルウェア＃１以外の他のミドルウェアに関しても、同様に、他のミドルウェアのインストールメディア名、サイレントインストール実行ファイル名およびミドルウェアパッチ名が登録される。
【００８１】
次に、テンプレート管理サーバ１００による処理手順を説明する。
図１０は、テンプレート管理サーバの処理例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００８２】
（Ｓ１）インストールパターン取得部１４０は、新規に作成する仮想マシンテンプレートに関するインストール情報を受け付け、インストールパターン記憶部１１０に格納する。インストール情報は、端末装置５０によりテンプレート管理サーバ１００に入力される。インストール情報は、インストールパターン（インストール対象のソフトウェアの組合せ）、インストール対象のＯＳやミドルウェアに関する情報を含む。また、インストール情報は、インストールに用いられる各種ファイル（ソフトウェアやパッチのインストーラや、設定用スクリプトなど）を含む。例えば、インストールパターン取得部１４０は、インストール情報に基づいて、インストールパターンテーブル、ＯＳテーブルおよびミドルウェアテーブルを生成し、インストールパターン記憶部１１０に格納する。
【００８３】
ここで、ソフトウェアに対して適用されるパッチとして、既存の仮想マシンテンプレートに適用されているパッチのバージョン以上のものが選択されるものとする。
（Ｓ２）差分抽出部１５０は、インストールパターン記憶部１１０に記憶されたインストールパターンテーブルと、仮想マシンテンプレート記憶部１２０に記憶された仮想マシンテンプレートテーブルとを比較して、インストールパターン（すなわち、インストール対象のソフトウェアの組合せ）に差分があるか否かを判定する。インストールパターンに差分がある場合、差分抽出部１５０は、ステップＳ３に処理を進める。インストールパターンに差分がない場合、差分抽出部１５０は、ステップＳ４に処理を進める。
【００８４】
ここで、インストールパターンに差分がある場合とは、今回取得したインストールパターンで示されるソフトウェアの組合せに一致する組合せに対応する作成済みの仮想マシンテンプレートがない場合である。また、インストールパターンに差分がない場合とは、今回取得したインストールパターンで示されるソフトウェアの組合せに一致する組合せに対応する作成済みの仮想マシンテンプレートがある場合である。
【００８５】
（Ｓ３）差分抽出部１５０は、更新内容ＤＢ１３０にインストールパターン情報を追加する。例えば、差分抽出部１５０は、仮想マシンテンプレート（ＯＳのみ）ＩＤ、ＯＳ設定実行ファイル名、ミドルウェアインストールメディア名およびミドルウェアサイレントインストール実行ファイル名に対するデータ内容を、更新内容テーブルに登録する。ここで、差分抽出部１５０は、仮想マシンテンプレート（ＯＳのみ）ＩＤとして、今回受け付けたインストールパターンに含まれるＯＳに対応する仮想マシンテンプレート（ＯＳのみ）ＩＤを登録する。
【００８６】
（Ｓ４）差分抽出部１５０は、インストールパターン記憶部１１０に記憶されたＯＳテーブルと、仮想マシンテンプレート記憶部１２０に記憶された仮想マシンテンプレートテーブルとを比較して、ＯＳパッチに差分があるか否かを判定する。ＯＳパッチに差分がある場合、差分抽出部１５０は、ステップＳ５に処理を進める。ＯＳパッチに差分がない場合、差分抽出部１５０は、ステップＳ６に処理を進める。
【００８７】
ここで、ＯＳパッチに差分がある場合とは、次の場合である。第１には、インストールパターンに差分がある（ステップＳ２  Ｙｅｓ）場合である。第２には、インストールパターンに差分がなく（ステップＳ２  Ｎｏ）、かつ、新規に作成する仮想マシンテンプレートのＯＳパッチが既存の仮想マシンテンプレートのＯＳパッチよりも新しい場合である。一方、ＯＳパッチに差分がない場合とは、インストールパターンに差分がなく（ステップＳ２  Ｎｏ）、かつ、新規に作成する仮想マシンテンプレートのＯＳパッチが既存の仮想マシンテンプレートのＯＳパッチに一致する場合である。
【００８８】
（Ｓ５）差分抽出部１５０は、更新内容ＤＢ１３０にＯＳパッチ情報を追加する。例えば、差分抽出部１５０は、適用対象（インストール対象）のＯＳパッチ名を更新内容テーブルに登録する。
【００８９】
なお、インストールパターンに差分がなく（ステップＳ２  Ｎｏ）、かつ、ＯＳパッチに差分がある（ステップＳ４  Ｙｅｓ）場合、差分抽出部１５０は、インストールパターンが一致する既存の仮想マシンテンプレートに関する仮想マシンテンプレート作成元仮想マシンの情報も更新内容ＤＢ１３０に追加する。すなわち、差分抽出部１５０は、当該仮想マシンテンプレート作成元仮想マシンの仮想マシン名、仮想マシンＩＰアドレスおよび仮想マシンパスワードを、既存の仮想マシンテンプレートテーブルから取得し、更新内容テーブルに登録する。インストールパターンに差分がある（ステップＳ２  Ｙｅｓ）場合は、仮想マシンテンプレート作成元仮想マシンの情報は更新内容データベースには登録されないことになる（インストールパターンに対応する仮想マシンテンプレート作成元仮想マシンがないため）。
【００９０】
（Ｓ６）差分抽出部１５０は、インストールパターン記憶部１１０に記憶されたミドルウェアテーブルと、仮想マシンテンプレート記憶部１２０に記憶された仮想マシンテンプレートテーブルとを比較して、ミドルウェアパッチに差分があるか否かを判定する。ミドルウェアパッチに差分がある場合、差分抽出部１５０は、ステップＳ７に処理を進める。ミドルウェアパッチに差分がない場合、差分抽出部１５０は、ステップＳ８に処理を進める。
【００９１】
ここで、ミドルウェアパッチに差分がある場合とは、次の場合である。第１には、インストールパターンに差分がある（ステップＳ２  Ｙｅｓ）場合である。第２には、インストールパターンに差分がなく（ステップＳ２  Ｎｏ）、かつ、新規に作成する仮想マシンテンプレートのミドルウェアパッチが既存の仮想マシンテンプレートのミドルウェアパッチよりも新しい場合である。一方、ミドルウェアパッチに差分がない場合とは、インストールパターンに差分がなく（ステップＳ２  Ｎｏ）、かつ、新規に作成する仮想マシンテンプレートのミドルウェアパッチが既存の仮想マシンテンプレートのミドルウェアパッチに一致する場合である。
【００９２】
（Ｓ７）差分抽出部１５０は、更新内容ＤＢ１３０にミドルウェアパッチ情報を追加する。例えば、差分抽出部１５０は、適用対象（インストール対象）のミドルウェアパッチ名を更新内容テーブルに登録する。
【００９３】
なお、インストールパターンに差分がなく（ステップＳ２  Ｎｏ）、かつ、ＯＳパッチに差分がある（ステップＳ４  Ｙｅｓ）場合、差分抽出部１５０は、インストールパターンが一致する既存の仮想マシンテンプレートに関する仮想マシンテンプレート作成元仮想マシンの情報も更新内容ＤＢ１３０に追加する。すなわち、差分抽出部１５０は、当該仮想マシンテンプレート作成元仮想マシンの仮想マシン名、仮想マシンＩＰアドレスおよび仮想マシンパスワードを、既存の仮想マシンテンプレートテーブルから取得し、更新内容テーブルに登録する。ただし、ステップＳ５で仮想マシンテンプレート作成元仮想マシンに関する情報の登録を行っている場合は、重複して登録しなくてよい。また、ステップＳ５と同様に、インストールパターンに差分がある（ステップＳ２  Ｙｅｓ）場合は、仮想マシンテンプレート作成元仮想マシンの情報は更新内容データベースには登録されないことになる。
【００９４】
（Ｓ８）更新実行ファイル生成部１６０は、更新内容ＤＢ１３０の仮想マシンテンプレート情報があるか否かを判定する。該当の仮想マシンテンプレート情報がある場合、更新実行ファイル生成部１６０は、ステップＳ１０に処理を進める。該当の仮想マシンテンプレート情報がない場合、更新実行ファイル生成部１６０は、ステップＳ９に処理を進める。
【００９５】
ここで、更新内容ＤＢ１３０の仮想マシンテンプレート情報がある場合とは、更新内容ＤＢ１３０に格納された更新内容テーブルにおいて、仮想マシンテンプレート作成元仮想マシンの情報（仮想マシン名、仮想マシンＩＰアドレスおよび仮想マシンパスワード）が登録されている場合である。この場合、仮想マシンテンプレート作成元仮想マシンが作業サーバ２００上に既に存在しているので、仮想マシンテンプレート作成元仮想マシンを新たに作成しなくてよい。一方、更新内容ＤＢ１３０の仮想マシンテンプレート情報がない場合とは、更新内容テーブルにおいて、仮想マシンテンプレート作成元仮想マシンの情報が登録されていない場合である。
【００９６】
（Ｓ９）更新実行ファイル生成部１６０は、更新実行ファイルＸを作成する。更新実行ファイルＸは、ＯＳのみがインストールされた状態の仮想マシンテンプレートを用いて、仮想マシンテンプレート作成元仮想マシンを新たに作成するためのシェルスクリプトまたはバッチファイルである。
【００９７】
（Ｓ１０）更新実行ファイル生成部１６０は、更新内容ＤＢ１３０の情報（すなわち、更新内容テーブルにおける各項目名に対するデータ内容の値の登録）があるか否かを判定する。更新内容ＤＢ１３０の情報がある場合、更新実行ファイル生成部１６０は、ステップＳ１１に処理を進める。更新内容ＤＢ１３０の情報がない場合、更新実行ファイル生成部１６０は、ステップＳ１２に処理を進める。更新内容テーブルの少なくとも１つの項目名に対してデータ内容の値の登録がある場合、更新内容ＤＢ１３０の情報があることになる。また、更新内容テーブルの何れの項目名に対してもデータ内容の値の登録がない場合、更新内容ＤＢ１３０の情報がないことになる。
【００９８】
（Ｓ１１）更新実行ファイル生成部１６０は、更新内容ＤＢ１３０に格納された更新内容テーブルに基づいて、更新実行ファイルＹ，Ｚを作成する。更新実行ファイルＹは、更新内容テーブルにおける更新内容を仮想マシンテンプレート作成元仮想マシンに反映させるためのシェルスクリプトまたはバッチファイルである。更新内容の反映とは、例えば、ＯＳ設定実行ファイルに基づくＯＳ設定、ミドルウェアのインストール、ＯＳパッチおよびミドルウェアパッチのインストール（適用）である。更新実行ファイルＺは、更新内容の反映後の仮想マシンテンプレート作成元仮想マシンを基に仮想マシンテンプレートを作成するためのシェルスクリプトまたはバッチファイルである。
【００９９】
（Ｓ１２）テンプレート生成制御部１７０は、更新実行ファイルＸがあるか否かを判定する。更新実行ファイルＸがある場合、テンプレート生成制御部１７０は、ステップＳ１３に処理を進める。更新実行ファイルＸがない場合、テンプレート生成制御部１７０は、ステップＳ１４に処理を進める。
【０１００】
（Ｓ１３）テンプレート生成制御部１７０は、更新実行ファイルＸを作業サーバ２００により実行させることで、インストール情報で指定されたＯＳのみがインストールされた状態の仮想マシンテンプレート作成元仮想マシンを作業サーバ２００上に作成する。このとき、テンプレート生成制御部１７０は、新たに作成した仮想マシンテンプレート作成元仮想マシンの仮想マシン名、仮想マシンＩＰアドレスおよび仮想マシンパスワードに相当する情報を決定し、仮想マシンテンプレート作成元仮想マシンに設定する。
【０１０１】
（Ｓ１４）テンプレート生成制御部１７０は、更新実行ファイルＹ，Ｚがあるか否かを判定する。更新実行ファイルＹ，Ｚがある場合、テンプレート生成制御部１７０は、ステップＳ１５に処理を進める。更新実行ファイルＹ，Ｚがない場合、テンプレート生成制御部１７０は、処理を終了する。なお、更新実行ファイルＹ，Ｚがなく、処理を終了する場合、テンプレート生成制御部１７０は、ステップＳ１３で作成した仮想マシンテンプレート作成元仮想マシンを削除するよう作業サーバ２００に指示する。
【０１０２】
（Ｓ１５）テンプレート生成制御部１７０は、更新実行ファイルＹによる更新内容の反映に用いられる関連ファイルを作業サーバ２００に送信する。関連ファイルは、ミドルウェアインストール用のファイル、ＯＳパッチやミドルウェアパッチのインストール用のファイルを含む。テンプレート生成制御部１７０は、更新実行ファイルＹを作業サーバ２００に実行させることで、仮想マシンテンプレート作成元仮想マシンに対する更新内容の反映を行う。
【０１０３】
（Ｓ１６）テンプレート生成制御部１７０は、更新実行ファイルＺを作業サーバ２００に実行させることで、仮想マシンテンプレート作成元仮想マシンに基づく仮想マシンテンプレートを作成する。テンプレート生成制御部１７０は、仮想マシンテンプレートを作業サーバ２００から取得する。テンプレート生成制御部１７０は、仮想マシンテンプレートを、仮想マシンテンプレート記憶部１２０、または、所定のストレージ装置に格納する。
【０１０４】
（Ｓ１７）テンプレート生成制御部１７０は、作成した仮想マシンテンプレートの情報を仮想マシンテンプレート記憶部１２０に記憶された仮想マシンテンプレートテーブルに登録する。このとき、テンプレート生成制御部１７０は、今回作成した更新内容テーブルのデータ内容を、仮想マシンテンプレートテーブルの各項目名に対して登録する。また、今回新たに仮想マシンテンプレート作成元仮想マシンを作成した場合は、当該仮想マシンに対して設定した仮想マシン名、仮想マシンＩＰアドレスおよび仮想マシンパスワードを、仮想マシンテンプレートテーブルに登録する。
【０１０５】
仮想マシンテンプレート作成元仮想マシンの仮想マシン名やＩＰアドレスなどは、仮想マシンの識別情報と呼べる。したがって、ステップＳ１７では、テンプレート生成制御部１７０は、仮想マシンテンプレート作成元仮想マシンの識別情報を、今回指定されたインストールパターンに対応付けて仮想マシンテンプレート記憶部１２０に格納するといえる。これにより、今回作成した仮想マシンテンプレートに対応する仮想マシンテンプレート作成元仮想マシンを後の仮想マシンテンプレートの作成に流用する際に、当該仮想マシンの特定が可能になる。
【０１０６】
なお、ステップＳ８の判定では、更新実行ファイル生成部１６０は、更新内容ＤＢ１３０の更新内容テーブルにおける仮想マシンテンプレート（ＯＳのみ）ＩＤのデータ内容の設定の有無に基づく判定を行ってもよい。すなわち、更新実行ファイル生成部１６０は、該当の更新内容テーブルに仮想マシンテンプレート（ＯＳのみ）ＩＤの設定がある場合にステップＳ９に進め、ない場合にステップＳ１０に処理を進めてもよい。
【０１０７】
次に、テンプレート管理サーバ１００による仮想マシンテンプレートの作成の具体例を説明する。
図１１は、仮想マシンテンプレートの作成例（その１）を示す図である。図１１では、ＯＳのみがインストールされた状態の仮想マシンテンプレートＦ１を用いる場合を例示する。
【０１０８】
まず、テンプレート管理サーバ１００は、端末装置５０からインストール情報を受け付ける。インストール情報で示されるインストールパターンが、既存の仮想マシンテンプレートには存在しないとする。この場合、テンプレート管理サーバ１００は、インストール情報で示されるインストールパターンに含まれるＯＳのみがインストールされた状態の仮想マシンテンプレートＦ１を特定する。テンプレート管理サーバ１００は、仮想マシンテンプレートＦ１を用いて、該当のＯＳのみがインストールされた状態の仮想マシンテンプレート作成元仮想マシン（仮想マシン２１０）を作業サーバ２００上に配備する。
【０１０９】
そして、テンプレート管理サーバ１００は、インストール情報で示されるミドルウェア、ＯＳパッチおよびミドルウェアパッチのインストールを、仮想マシン２１０に対して実行する。テンプレート管理サーバ１００は、インストール後の仮想マシン２１０を基に仮想マシンテンプレートＦ２を取得し、仮想マシンテンプレート記憶部１２０（または他のストレージ装置）に格納する。
【０１１０】
例えば、作業員８２は、端末装置６０を操作し、仮想マシンテンプレートＦ２を用いて、仮想マシン実行サーバ３００，４００，・・・上に、共通のプログラム構成をもつ複数の仮想マシン（例えば、仮想マシン８１０，８２０，８３０）を配備する。作業員８２は、端末装置６０を用いて、テンプレート管理サーバ１００に、仮想マシンテンプレートＦ２に基づく仮想マシン８１０，８２０，８３０の配備を指示してもよい。そして、テンプレート管理サーバ１００が、仮想マシンテンプレートＦ２に基づいて、仮想マシン実行サーバ３００，４００，・・・上に、仮想マシン８１０，８２０，８３０を配備してもよい。こうして、ユーザ端末７０から仮想マシン８１０，８２０，８３０を利用可能になる。
【０１１１】
次に、図１１の仮想マシンテンプレートの作成手順の具体例を説明する。
図１２は、仮想マシンテンプレートの作成例（その１）の手順を示す図である。テンプレート管理サーバ１００は、端末装置５０からインストール情報を受信する。インストール情報は、インストールパターン、ＯＳパッチおよびミドルウェアパッチを示す情報を含む。インストール情報は、ＯＳパッチの本体のファイル、ミドルウェアパッチの本体のファイル、ミドルウェアインストールメディアおよびミドルウェアサイレントインストール実行ファイルなどの関連ファイル群Ｇ１を含む。
【０１１２】
テンプレート管理サーバ１００は、インストール情報から、インストールパターンテーブル、ＯＳテーブルおよびミドルウェアテーブルを生成し、インストールパターン記憶部１１０に格納する。
【０１１３】
そして、テンプレート管理サーバ１００は、インストールパターンの差分確認を行う（ステップＳＴ１１）。具体的には、テンプレート管理サーバ１００は、インストールパターン記憶部１１０に記憶されたインストールパターンテーブルと、仮想マシンテンプレート記憶部１２０に記憶された仮想マシンテンプレートテーブルとを比較する。これにより、テンプレート管理サーバ１００は、インストールパターンで示されるＯＳおよびミドルウェアの組合せを含む仮想マシンテンプレートテーブルが存在するか否かを確認する。
【０１１４】
テンプレート管理サーバ１００は、仮想マシンテンプレートテーブルに、今回のインストールパターンで示されるＯＳおよびミドルウェアの組合せがないと判断すると、更新内容ＤＢ１３０に更新内容を追加する（ステップＳＴ１２）。具体的には、テンプレート管理サーバ１００は、該当のインストールパターンの更新内容テーブルを更新内容ＤＢ１３０に作成し、ＯＳテーブルおよびミドルウェアテーブルにおける次の情報を追加する。
【０１１５】
第１には、仮想マシンテンプレート（ＯＳのみ）ＩＤである。第２には、ＯＳ設定実行ファイル名である。第３には、ミドルウェアインストールメディア名である。第４には、ミドルウェアサイレントインストール実行ファイル名である。第５には、ミドルウェアパッチ名である。
【０１１６】
次に、テンプレート管理サーバ１００は、ＯＳパッチの差分確認を行う（ステップＳＴ１３）。ステップＳＴ１１において、インストールパターンの差分ありと確認されているため、ＯＳパッチに関しても差分ありとなる。テンプレート管理サーバ１００は、更新内容ＤＢ１３０に更新内容を追加する（ステップＳＴ１４）。具体的には、テンプレート管理サーバ１００は、更新内容テーブルに、ＯＳテーブルにおけるＯＳパッチ名を追加する。
【０１１７】
次に、テンプレート管理サーバ１００は、ミドルウェアパッチの差分確認を行う（ステップＳＴ１５）。ステップＳＴ１１において、インストールパターンの差分ありと確認されているため、ミドルウェアパッチに関しても差分ありとなる。テンプレート管理サーバ１００は、更新内容ＤＢ１３０に更新内容を追加する（ステップＳＴ１６）。具体的には、テンプレート管理サーバ１００は、更新内容テーブルに、ミドルウェアテーブルにおけるミドルウェアパッチ名を追加する。
【０１１８】
そして、テンプレート管理サーバ１００は、作成した更新内容テーブルに登録された情報に基づいて、更新実行ファイルＸ，Ｙ，Ｚを作成する（ステップＳＴ１７）。更新実行ファイルＸには、インストール情報で指定されたＯＳに対応する仮想マシンテンプレート（ＯＳのみ）ＩＤが設定されることになる。
【０１１９】
テンプレート管理サーバ１００は、更新実行ファイルＸを作業サーバ２００に実行させることで、作業サーバ２００上に、仮想マシンテンプレート作成元仮想マシン（仮想マシン２１０）を配備する（ステップＳＴ１８）。
【０１２０】
テンプレート管理サーバ１００は、関連ファイル群Ｇ１を作業サーバ２００に送信する。そして、テンプレート管理サーバ１００は、更新実行ファイルＹを作業サーバ２００に実行させることで、仮想マシン２１０に対するミドルウェア、ＯＳパッチおよびミドルウェアパッチのインストールを行う（ステップＳＴ１９）。
【０１２１】
テンプレート管理サーバ１００は、更新実行ファイルＺを作業サーバ２００に実行させることで、仮想マシン２１０に対応する仮想マシンテンプレートを作成する（ステップＳＴ２０）。
【０１２２】
テンプレート管理サーバ１００は、作成した仮想マシンテンプレートに関する仮想マシンテンプレートテーブルを作成し、仮想マシンテンプレート記憶部１２０に登録する（ステップＳＴ２１）。
【０１２３】
このように、新規に受け付けたインストールパターンに対応する既存の仮想マシンテンプレートが存在しない場合もある。この場合、テンプレート管理サーバ１００は、ＯＳのみがインストールされた状態の仮想マシンテンプレートを用いて、仮想マシンテンプレート作成元仮想マシン（仮想マシン２１０）を作成する。そして、テンプレート管理サーバ１００は、仮想マシン２１０に対してミドルウェアや各種パッチをインストールすることで、仮想マシンテンプレートを作成する。
【０１２４】
すなわち、テンプレート管理サーバ１００は、ＯＳがインストールされた状態の仮想マシン作成元仮想マシンを作業サーバ２００（物理マシン）に配備し、インストールパターンに属するＯＳ以外のプログラムのインストールを当該仮想マシンに対して実行する。これにより、インストールパターンで指定されたＯＳを含む仮想マシンテンプレートを適切に作成可能になる。
【０１２５】
なお、仮想マシン２１０は、作業サーバ２００上に残される。仮想マシン２１０を新たな仮想マシンテンプレートの作成に流用可能にするためである。ただし、テンプレート管理サーバ１００は、仮想マシン２１０をシャットダウンしておき、新たな仮想マシンテンプレートの作成に流用したいタイミングで、当該仮想マシン２１０を起動してもよい。
【０１２６】
次に、仮想マシン２１０を新たな仮想マシンテンプレートの作成に流用する場合を例示する。
図１３は、仮想マシンテンプレートの作成例（その２）を示す図である。まず、テンプレート管理サーバ１００は、端末装置５０からインストール情報を受け付ける。インストール情報で示されるインストールパターンは、仮想マシン２１０を用いて作成された仮想マシンテンプレートにおけるＯＳおよびミドルウェアの組合せに一致するものとする。
【０１２７】
この場合、テンプレート管理サーバ１００は、該当の仮想マシンテンプレートに基づいて、仮想マシンテンプレート作成元仮想マシンである仮想マシン２１０を特定する。そして、テンプレート管理サーバ１００は、仮想マシン２１０に対してＯＳパッチやミドルウェアパッチの適用を行うことで、仮想マシン２１０を仮想マシン２２０に更新する。
【０１２８】
そして、テンプレート管理サーバ１００は、仮想マシン２２０を基に仮想マシンテンプレートＦ３を取得し、仮想マシンテンプレート記憶部１２０（または他のストレージ装置）に格納する。
【０１２９】
例えば、作業員８２は、端末装置６０を操作し、仮想マシンテンプレートＦ３を用いて、仮想マシン実行サーバ３００，４００，・・・上に、共通のプログラム構成をもつ複数の仮想マシン（例えば、仮想マシン９１０，９２０，９３０）を配備する。作業員８２は、端末装置６０を用いて、テンプレート管理サーバ１００に、仮想マシンテンプレートＦ２に基づく仮想マシン９１０，９２０，９３０の配備を指示してもよい。そして、テンプレート管理サーバ１００が、仮想マシンテンプレートＦ３に基づいて、仮想マシン実行サーバ３００，４００，・・・上に、仮想マシン９１０，９２０，９３０を配備してもよい。こうして、ユーザ端末７０から仮想マシン９１０，９２０，９３０を利用可能になる。
【０１３０】
次に、図１３の仮想マシンテンプレートの作成手順の具体例を説明する。
図１４は、仮想マシンテンプレートの作成例（その２）の手順を示す図である。テンプレート管理サーバ１００は、端末装置５０からインストール情報を受信する。インストール情報は、インストールパターン、ＯＳパッチおよびミドルウェアパッチを示す情報を含む。インストール情報は、ＯＳパッチの本体のファイル、ミドルウェアパッチの本体のファイル、ミドルウェアインストールメディアおよびミドルウェアサイレントインストール実行ファイルなどの関連ファイル群Ｇ２を含む。
【０１３１】
テンプレート管理サーバ１００は、インストール情報から、インストールパターンテーブル、ＯＳテーブルおよびミドルウェアテーブルを生成し、インストールパターン記憶部１１０に格納する。
【０１３２】
そして、テンプレート管理サーバ１００は、インストールパターンの差分確認を行う（ステップＳＴ３１）。具体的には、テンプレート管理サーバ１００は、インストールパターン記憶部１１０に記憶されたインストールパターンテーブルと、仮想マシンテンプレート記憶部１２０に記憶された仮想マシンテンプレートテーブルとを比較する。これにより、テンプレート管理サーバ１００は、インストールパターンで示されるＯＳおよびミドルウェアの組合せを含む仮想マシンテンプレートテーブルが存在するか否かを確認する。
【０１３３】
そして、テンプレート管理サーバ１００は、仮想マシンテンプレートテーブルに、今回のインストールパターンで示されるＯＳおよびミドルウェアの組合せがあると判断する。
次に、テンプレート管理サーバ１００は、ＯＳパッチの差分確認を行う（ステップＳＴ３２）。テンプレート管理サーバ１００は、ステップＳＴ３１で特定された仮想マシンテンプレートテーブルにおけるＯＳパッチが、今回のＯＳテーブルにおけるＯＳパッチと一致するか否かを判定する。そして、テンプレート管理サーバ１００は、ＯＳパッチが一致しない場合、更新内容ＤＢ１３０に、更新内容テーブルを作成し、次の情報を追加する（ステップＳＴ３３）。第１には、該当の仮想マシンテンプレートテーブルにおける仮想マシン名である。第２には、該当の仮想マシンテンプレートテーブルにおける仮想マシンＩＰアドレスである。第３には、該当の仮想マシンテンプレートテーブルにおける仮想マシンパスワードである。第４には、ＯＳテーブルにおけるＯＳパッチ名である。
【０１３４】
次に、テンプレート管理サーバ１００は、ミドルウェアパッチの差分確認を行う（ステップＳＴ３４）。テンプレート管理サーバ１００は、ステップＳＴ３１で特定された仮想マシンテンプレートテーブルにおけるミドルウェアパッチが、今回のミドルウェアテーブルにおけるミドルウェアパッチと一致するか否かを判定する。そして、テンプレート管理サーバ１００は、ミドルウェアパッチが一致しない場合、更新内容ＤＢ１３０に、更新内容テーブルを作成し（ステップＳＴ３３で作成済みの場合は作成不要）、次の情報を追加する。第１には、該当の仮想マシンテンプレートテーブルにおける仮想マシン名である。第２には、該当の仮想マシンテンプレートテーブルにおける仮想マシンＩＰアドレスである。第３には、該当の仮想マシンテンプレートテーブルにおける仮想マシンパスワードである。第４には、ミドルウェアテーブルにおけるミドルウェアパッチ名である。ただし、仮想マシン名、仮想マシンＩＰアドレスおよび仮想マシンパスワードに関しては、ステップＳＴ３３で追加済みの場合には追加不要である。
【０１３５】
そして、テンプレート管理サーバ１００は、作成した更新内容テーブルに登録された情報に基づいて、更新実行ファイルＹ，Ｚを作成する（ステップＳＴ３６）。ここで、図１４のケースでは、更新実行ファイルＸを作成しない点が、図１２のケースと異なる。図１４のケースでは、仮想マシンテンプレート作成元仮想マシンである仮想マシン２１０が作業サーバ２００上に既に存在しているからである。
【０１３６】
テンプレート管理サーバ１００は、関連ファイル群Ｇ２を作業サーバ２００に送信する。このとき、テンプレート管理サーバ１００は、関連ファイル群Ｇ２のうち、ＯＳパッチおよびミドルウェアパッチを送信対象としてもよい（ミドルウェアインストール用のファイルは使用されないため）。そして、テンプレート管理サーバ１００は、更新実行ファイルＹを作業サーバ２００に実行させることで、仮想マシン２１０に対するＯＳパッチおよびミドルウェアパッチのインストールを行う（ステップＳＴ３７）。これにより、仮想マシン２１０は、仮想マシン２２０に更新される。
【０１３７】
テンプレート管理サーバ１００は、更新実行ファイルＺを作業サーバ２００に実行させることで、仮想マシン２２０に対応する仮想マシンテンプレートを作成する（ステップＳＴ３８）。
【０１３８】
テンプレート管理サーバ１００は、作成した仮想マシンテンプレートに関する仮想マシンテンプレートテーブルを作成し、仮想マシンテンプレート記憶部１２０に登録する（ステップＳＴ３９）。
【０１３９】
このように、新規に受け付けたインストールパターンに対応する既存の仮想マシンテンプレートが存在する場合もある。この場合、テンプレート管理サーバ１００は、既存の仮想マシンテンプレートに対応する仮想マシン作成元仮想マシン（仮想マシン２１０）を特定し、当該仮想マシン２１０に対して、差分のＯＳパッチやミドルウェアパッチをインストールする。当該インストールにより、仮想マシン２１０は、ＯＳパッチやミドルウェアパッチが更新された状態の仮想マシン２２０となる。そして、テンプレート管理サーバ１００は、仮想マシン２２０を基に、仮想マシンテンプレートを作成する。なお、仮想マシン２２０は、作業サーバ２００上に残される。仮想マシン２２０を新たな仮想マシンテンプレートの作成に流用可能にするためである。
【０１４０】
ところで、プライベートクラウド基盤上の仮想マシン構築を行う場合、管理者８１および作業員８２は次の作業を行っていた。まず、管理者８１は、ＯＳのみインストールされた状態のＯＳテンプレートを使用して作業サーバ２００に仮想マシンを配備する。次に、作業員８２は、該当の仮想マシンに対して必要なＯＳの設定、ミドルウェアのインストール、ＯＳパッチの適用およびミドルウェアパッチの適用などの設定を行う。そして、当該設定後の仮想マシンがユーザに提供される。
【０１４１】
ＯＳとミドルウェアとの組合せ（インストールパターン）は、複数（例えば、数十種類、より具体的には７０種類程度）存在する。ユーザは、自身の業務に用いるインストールパターンを選択し、管理者８１に通知する。インストールパターンは、定期的に増加（例えば、十数種類程度）する。
【０１４２】
仮想マシン構築において、仮想マシン作成毎に、作業員８２が手動でＯＳの設定やミドルウェアのインストールなどを行う場合、一定期間に１人の作業員８２が構築可能な仮想マシンの台数は限られる。そこで、ＯＳのみがインストールされた状態の仮想マシンテンプレートにより作成した仮想マシンに、ＯＳの設定、ミドルウェアのインストールを実施し、当該仮想マシンをテンプレート化することが考えられる。そして、当該仮想マシンの仮想マシンテンプレートを使用して、仮想マシンの構築（ＯＳ設定、ＯＳのパッチ適用およびミドルウェアのパッチ適用）を行うことで、構築時間を削減することも考えられる。
【０１４３】
ここで、仮想マシンテンプレートは、全てのインストールパターンの分だけ作成される。このため、新しいインストールパターンが作成された際に、管理者８１がＯＳ毎に所定期間（例えば、一週間程度）をかけて仮想マシンテンプレートを手動で作成していると、インストールパターンが増すほど、管理者８１によるテンプレート作成時間も増す。その結果、新しいインストールパターンでの仮想マシンの早期提供を行えないことがある。
【０１４４】
また、仮想マシンテンプレートから仮想マシン作成後に適用するＯＳパッチおよびミドルウェアパッチは月に１回程度の頻度で更新され得る。しかし、仮想マシンテンプレートへのパッチ適用は、作業期間の確保（例えば、１つのＯＳ当たり、１週間程度）が困難なことがある。そこで、仮想マシン作成後に、仮想マシン毎にパッチ適用作業を行うことが考えられるが、仮想マシンを利用可能になるまでにパッチ適用のための待ち時間（例えば、約１時間程度）がかかる可能性がある。
【０１４５】
そこで、新しいインストールパターンの仮想マシンの早期提供および仮想マシン構築時間の削減を可能にするために、テンプレート管理サーバ１００により、第２の実施の形態で説明した次の点を実現する。
【０１４６】
第１に、テンプレート管理サーバ１００は、インストールパターン増加毎の管理者８１の手動作業を軽減し、仮想マシンテンプレート作成作業期間を削減する。
第２に、テンプレート管理サーバ１００は、仮想マシンテンプレートにＯＳパッチおよびミドルウェアパッチが自動で適用されている状態とし、仮想マシン作成毎にパッチ適用時間を削減する。
【０１４７】
こうして、テンプレート管理サーバ１００によれば、仮想マシンテンプレートを効率的に作成できる。具体的には次の通りである。
例えば、管理者８１は、仮想マシンテンプレートを作成するとき、所望のプログラムの組合せを、テンプレート管理サーバ１００に入力しさえすればよい。そうすれば、テンプレート管理サーバ１００により、入力された組合せが新規の組合せであるか否かが判定される。そして、新規の組合せであれば、テンプレート管理サーバ１００により、該当の組合せのプログラムを適用した仮想マシンが作成され、該当のプログラムがインストールされた状態の仮想マシンテンプレートが作成される。
【０１４８】
このため、管理者８１が、各プログラムを個別に仮想マシンにインストールする作業を行って仮想マシンテンプレートを作成せずに済み、仮想マシンテンプレートの作成に伴う管理者８１の作業の省力化を図れる。また、テンプレート管理サーバ１００によりインストールの実行や仮想マシンテンプレートの作成を自動化することで、これらの処理を任意の時間帯に行えるようになる。このため、管理者８１がインストールの作業を行うよりも、仮想マシンテンプレートの作成を早いタイミングで完了できる可能性が高まる。これにより、作成した仮想マシンテンプレートを基にした仮想マシンの提供を迅速に行えるようになる。
【０１４９】
このとき、テンプレート管理サーバ１００は、既存の仮想マシンテンプレートにおけるソフトウェアの組合せと、今回の組合せ（インストール情報で指定されたソフトウェアの組合せ）との差分を確認する。テンプレート管理サーバ１００は、今回の組合せにおいて、既存の組合せに対する追加分のプログラムがある場合には、既存の仮想マシンテンプレートに対応する仮想マシンに、追加分のプログラムのみをインストールして、仮想マシンのテンプレートを作成する。
【０１５０】
追加分のプログラムの確認方法としては、例えば、上記のように、既存の仮想マシンテンプレートに対するＯＳパッチやミドルウェアパッチの差分を確認することが考えられる。あるいは、テンプレート管理サーバ１００は、今回の組合せにおいて、既存の仮想マシンテンプレートのプログラム構成に対して追加されたミドルウェアを確認してもよい。
【０１５１】
この場合、インストール対象が追加分のプログラム（例えば、ＯＳパッチやミドルウェアパッチの更新分、または、追加分のミドルウェア）のみで済む。すなわち、今回指定されたプログラムの組合せのうちの一部分のみをインストール対象とすればよく、当該組合せの全体をインストールするよりも、テンプレートの作成時間を短縮できる。
【０１５２】
なお、第２の実施の形態の例では、インストールパターンとして、主に、ＯＳとミドルウェアとの組合せを例示したが、インストールパターンは、ＯＳとミドルウェアとアプリケーションとの組合せでもよい。また、使用するＯＳが固定されているならば、インストールパターンは、ＯＳ以外のソフトウェア（ミドルウェアやアプリケーション）の組合せでもよい。
【０１５３】
また、第１の実施の形態の情報処理は、処理部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１５４】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１５５】
１  管理装置
１ａ  記憶部
１ｂ  処理部
２  物理マシン
２ａ  仮想マシン
３  ネットワーク
４  管理情報
５  インストール情報
６  テンプレート
７  レコード
【図１】
2019091153.tif 000003
【図２】
2019091153.tif 000004
【図３】
2019091153.tif 000005
【図４】
2019091153.tif 000006
【図５】
2019091153.tif 000007
【図６】
2019091153.tif 000008
【図７】
2019091153.tif 000009
【図８】
2019091153.tif 000010
【図９】
2019091153.tif 000011
【図１０】
2019091153.tif 000012
【図１１】
2019091153.tif 000013
【図１２】
2019091153.tif 000014
【図１３】
2019091153.tif 000015
【図１４】
2019091153.tif 000016