特許第6040836号(P6040836)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6040836実行制御プログラム、実行制御方法およびネットワークシステム
<>
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000002
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000003
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000004
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000005
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000006
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000007
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000008
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000009
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000010
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000011
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000012
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000013
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000014
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000015
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000016
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000017
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000018
  • 特許6040836-実行制御プログラム、実行制御方法およびネットワークシステム 図000019
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6040836
(24)【登録日】2016年11月18日
(45)【発行日】2016年12月7日
(54)【発明の名称】実行制御プログラム、実行制御方法およびネットワークシステム
(51)【国際特許分類】
   G06F 9/445 20060101AFI20161128BHJP
【FI】
   G06F9/06 610A
【請求項の数】8
【全頁数】28
(21)【出願番号】特願2013-70410(P2013-70410)
(22)【出願日】2013年3月28日
(65)【公開番号】特開2014-194631(P2014-194631A)
(43)【公開日】2014年10月9日
【審査請求日】2015年12月4日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】會田 悟史
(72)【発明者】
【氏名】和田 裕二
(72)【発明者】
【氏名】嶋田 邦昭
【審査官】 坂庭 剛史
(56)【参考文献】
【文献】 特開2000−194630(JP,A)
【文献】 特開2000−181735(JP,A)
【文献】 特開平01−228009(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
システムの構築の際に複数の情報処理装置のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドが選択された場合、前記実行対象となるコマンドの引数の特性と前記システムの構成情報とに基づいて、前記実行対象となるコマンドの実行可否を判断し、
前記実行対象となるコマンドが実行できないと判断した場合、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択する、
処理を実行させることを特徴とする実行制御プログラム。
【請求項2】
前記判断する処理は、
前記実行対象となるコマンドの引数が、前記実行対象となるコマンドの実行時に入力となる情報に関する引数である場合に、前記実行対象となるコマンドの実行可否を判断することを特徴とする請求項1に記載の実行制御プログラム。
【請求項3】
前記システムの構成情報は、過去に構築された前記システムの第1構成情報と、現在構築中の前記システムの第2構成情報とを対応付けて表す情報であり、
前記コンピュータに、
前記システムの構成情報から前記実行対象のコマンドの引数となる値が設定された第1構成情報を抽出し、
抽出した前記第1構成情報に対応する第2構成情報に前記実行対象のコマンドの引数となる値が設定されているか否かを判定する、処理を実行させ、
前記判断する処理は、
前記実行対象のコマンドの引数となる値が設定されていない場合、前記実行対象となるコマンドが実行できないと判断することを特徴とする請求項2に記載の実行制御プログラム。
【請求項4】
前記コンピュータに、
前記実行対象となるコマンドが実行できると判断した場合、前記いずれかの情報処理装置に対して前記実行対象となるコマンドを実行し、
前記実行対象となるコマンドの実行結果に基づいて、前記システムの構成情報を更新する、処理を実行させ、
前記選択する処理は、
前記実行対象となるコマンドを実行した場合、前記いずれかの情報処理装置に対して実行するコマンド群のうちの未実行のコマンドから前記実行対象となるコマンドを選択することを特徴とする請求項1〜3のいずれか一つに記載の実行制御プログラム。
【請求項5】
前記コンピュータに、
前記実行対象のコマンドを実行した場合、前記実行対象のコマンドのログと対応付けて前記実行対象のコマンドを実行した情報処理装置の識別子を出力する処理を実行させることを特徴とする請求項1〜4のいずれか一つに記載の実行制御プログラム。
【請求項6】
前記コンピュータに、
前記実行対象となるコマンドが実行できないと判断した場合、過去に前記システムを構築した際の前記実行対象となるコマンドのログから情報処理装置の識別子を検出する処理を実行させ、
前記選択する処理は、
前記ログから情報処理装置の識別子が検出された場合、当該識別子から識別される情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択することを特徴とする請求項1〜5のいずれか一つに記載の実行制御プログラム。
【請求項7】
コンピュータが、
システムの構築の際に複数の情報処理装置のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドが選択された場合、前記実行対象となるコマンドの引数の特性と前記システムの構成情報とに基づいて、前記実行対象となるコマンドの実行可否を判断し、
前記実行対象となるコマンドが実行できないと判断した場合、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択する、
処理を実行することを特徴とする実行制御方法。
【請求項8】
複数の情報処理装置と、
システムの構築の際に前記複数の情報処理装置のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドが選択された場合、前記実行対象となるコマンドの引数の特性と前記システムの構成情報とに基づいて、前記実行対象となるコマンドの実行可否を判断し、前記実行対象となるコマンドが実行できないと判断した場合、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択する実行制御装置と、
を含むことを特徴とするネットワークシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、実行制御プログラム、実行制御方法およびネットワークシステムに関する。
【背景技術】
【0002】
近年、クラウドサービスを提供するプロバイダ数の増加に伴って、システムの移行を行う場合が増えている。システムの移行を行う方法としては、システムの再構築がある。また、システムの構築の際にサーバの各種設定を行うために実行したコマンドを実行順に示す構築ログを記録しておき、システムの再構築の際に構築ログに従ってサーバに対するコマンドを自動実行する技術がある。
【0003】
関連する先行技術として、例えば、複数のソフトウェア部品を統合してアプリケーションプログラムを作成する際に、複数のソフトウェア部品の各々が利用する他のソフトウェア部品を指定する情報に基づいて、ソフトウェア部品の生成順序を決定するものがある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−137603号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術において、構築ログはサーバ単位で記録されるため、複数のサーバを含むシステムを再構築する場合には、サーバ単位の構築ログからサーバ間の実行順序の依存関係を考慮してコマンドを実行することが難しい。このため、例えば、人手によりサーバ間の実行順序の依存関係を考慮して各サーバに対するコマンドを実行することになり、システムの構築作業にかかる作業者の負荷が増大する。
【0006】
また、構築ログにコマンド実行時の時刻(タイムスタンプ)が記録されている場合には、タイムスタンプからコマンドの実行順序を判断することもできるが、サーバ間で時刻が同期しているとは限らない。また、構築ログにはタイムスタンプが記録されていない場合がある。例えば、デフォルト設定のhistoryログやバックグラウンド実行したコマンドのログはタイムスタンプが残らない場合がある。
【0007】
1つの側面では、本発明は、システムの構築作業にかかる作業負荷を軽減させる実行制御プログラム、実行制御方法およびネットワークシステムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一側面によれば、システムの構築の際に複数の情報処理装置のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドが選択された場合、前記実行対象となるコマンドの引数の特性と前記システムの構成情報とに基づいて、前記実行対象となるコマンドの実行可否を判断し、前記実行対象となるコマンドが実行できないと判断した場合、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択する実行制御プログラム、実行制御方法およびネットワークシステムが提案される。
【発明の効果】
【0009】
本発明の一態様によれば、システムの構築作業にかかる作業負荷を軽減させるという効果を奏する。
【図面の簡単な説明】
【0010】
図1図1は、実施の形態にかかる制御方法の一実施例を示す説明図である。
図2図2は、ネットワークシステム200のシステム構成例を示す説明図である。
図3図3は、実行制御装置101のハードウェア構成例を示すブロック図である。
図4図4は、コマンド特性DB220の記憶内容の一例を示す説明図である。
図5図5は、マッピングDB230の記憶内容の一例を示す説明図である。
図6図6は、構築ログLの具体例を示す説明図である。
図7図7は、実行制御装置101の機能的構成例を示すブロック図である。
図8図8は、実行制御装置101の実行制御処理例を示す説明図(その1)である。
図9図9は、実行制御装置101の実行制御処理例を示す説明図(その2)である。
図10図10は、実行制御装置101の実行制御処理例を示す説明図(その3)である。
図11図11は、実行制御装置101の実行制御処理例を示す説明図(その4)である。
図12図12は、実行制御装置101の実行制御処理例を示す説明図(その5)である。
図13図13は、集約ログPLの具体例を示す説明図である。
図14図14は、実行制御装置101の実行制御処理例を示す説明図(その6)である。
図15図15は、実行制御装置101の第1の実行制御処理手順の一例を示すフローチャートである。
図16図16は、コマンド実行可否判断処理の具体的処理手順の一例を示すフローチャートである。
図17図17は、コマンド実行処理の具体的処理手順の一例を示すフローチャートである。
図18図18は、実行制御装置101の第2の実行制御処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下に図面を参照して、本発明にかかる実行制御プログラム、実行制御方法およびネットワークシステムの実施の形態を詳細に説明する。
【0012】
(制御方法の一実施例)
図1は、実施の形態にかかる制御方法の一実施例を示す説明図である。図1において、実行制御装置101は、システムの構築の際に実行されるコマンドの実行を制御するコンピュータである。システムは、複数の情報処理装置(例えば、情報処理装置102,103)を用いて構築される。
【0013】
情報処理装置は、システムを実現するためのOS(Operating System)がインストールされたコンピュータであり、システムの構築に必要な各種設定を行う。コマンドは、システムの構築の際に情報処理装置の各種設定を行うためのものである。コマンドとしては、例えば、OSの設定、フォルダの作成、ファイルの作成等を行うためのものがある。
【0014】
ここで、サーバAとサーバBとを含むシステムXを移行する場合を想定する。また、移行先のシステムXでは、情報処理装置102によりサーバAの機能を実現し、情報処理装置103によりサーバBの機能を実現する場合を想定する。また、システムXを構築する場合、情報処理装置102によりコマンドA1、コマンドA2が実行され、情報処理装置103によりコマンドB1、コマンドB2が実行される場合を想定する。
【0015】
ここで、コマンドB2は、情報処理装置102でコマンドA1が実行された後に実行されるべきコマンドである。また、コマンドA2は、情報処理装置103でコマンドB2が実行された後に実行されるべきコマンドである。すなわち、情報処理装置102,103間でコマンドの実行順序に依存関係がある。
【0016】
この場合、各情報処理装置102,103に対してコマンドA1,A2とコマンドB1,B2とをそれぞれ独立に実行した場合、例えば、情報処理装置102でコマンドA1が実行される前に情報処理装置103でコマンドB2が実行されることがある。この場合、コマンドB2の実行時に実行に必要な情報が存在せず、コマンドB2を正常に実行できない場合がある。
【0017】
そこで、本実施の形態では、実行制御装置101は、システムXの構築の際に情報処理装置に対して実行するコマンドの引数の特性から、そのコマンドが情報処理装置間で実行順序の依存関係があるか否かを判定する。また、実行制御装置101は、情報処理装置間で実行順序の依存関係がある場合、システムXの移行元の構成情報と移行先の構成情報との対応関係から、そのコマンドの実行可否を判断する。以下、実行制御装置101の実行制御処理例について説明する。
【0018】
(1)実行制御装置101は、システムXの構築の際に情報処理装置102,103のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドを選択する。ここで、各情報処理装置102,103に対して実行するコマンド群は、例えば、構築ログ111,112から特定される。構築ログ111,112は、移行元のシステムXを構築した際に各情報処理装置102,103に対して実行したコマンドを実行順に示す情報である。
【0019】
具体的には、例えば、実行制御装置101は、情報処理装置103の構築ログ112を参照して、情報処理装置103に対して実行するコマンド群から実行対象となるコマンドを実行順に選択する。ここでは、情報処理装置103に対して実行するコマンドB2が選択された場合を想定する。ただし、コマンドB1は実行済みとする。
【0020】
(2)実行制御装置101は、実行対象となるコマンドの引数の特性とシステムXの構成情報120とに基づいて、実行対象となるコマンドの実行可否を判断する。ここで、システムXの構成情報120は、移行元の構成情報と移行先の構成情報とを対応付けて表す情報である。
【0021】
移行元の構成情報は、移行元で構築されたシステムXの構成情報である。移行先の構成情報は、移行先で現在構築中のシステムXの構成情報であり、システムXの構築中に更新される。構成情報としては、例えば、各サーバA,BのIP(Internet Protocol)アドレスや各サーバA,Bで生成されたファイル、フォルダ等のパスなどがある。
【0022】
また、引数の特性は、引数として与えられる値が、コマンドの実行にどのような影響を与えるのかを表すものである。具体的には、例えば、引数として与えられる値がコマンドの実行時に入力となる情報に関するという特性や、引数として与えられる値がコマンドの実行時に出力される情報に関するという特性などがある。
【0023】
ここで、コマンドの実行時に入力となる情報は、他のコマンドが実行されていないと存在しない場合がある。コマンドの実行時に入力となる情報が存在しないと、そのコマンドは正しく実行されない。このため、実行制御装置101は、例えば、実行対象となるコマンドの引数が、実行対象となるコマンドの実行時に入力となる情報に関する引数である場合に、実行対象となるコマンドの実行可否を判断する。
【0024】
具体的には、例えば、まず、実行制御装置101は、構築ログ112を参照して、コマンドB2に対応するログに記載されているコマンドB2の引数の値を特定する。すなわち、実行制御装置101は、移行元のシステムXを構築時にコマンドB2に引数として与えられた値を特定する(図1中、(2−1)参照)。
【0025】
つぎに、実行制御装置101は、システムXの構成情報120を参照して、コマンドB2の引数の値が設定された移行元の構成情報を特定する。そして、実行制御装置101は、移行元の構成情報に対応する移行先の構成情報が存在するか否かを判断する(図1中、(2−2)参照)。すなわち、実行制御装置101は、コマンドB2の引数となる値が存在するか否かを判断する。
【0026】
ここで、移行先の構成情報が存在しない場合は、実行制御装置101は、実行対象となるコマンドB2を実行できないと判断する。すなわち、実行制御装置101は、実行対象となるコマンドB2の実行に必要な引数の値が存在しないと判断して、実行対象となるコマンドB2を実行できないと判断する。
【0027】
一方、移行先の構成情報が存在する場合は、実行制御装置101は、実行対象となるコマンドB2を実行できると判断する。すなわち、実行制御装置101は、実行対象となるコマンドB2の実行に必要な引数の値が存在すると判断して、実行対象となるコマンドB2を実行できると判断する。この場合、実行制御装置101は、情報処理装置103に対して実行対象となるコマンドB2を実行する。
【0028】
ここでは、移行元のシステムXの構築の際にコマンドB2に引数として与えられた値が設定された移行元の構成情報に対応する移行先の構成情報が存在しない、すなわち、コマンドB2の実行に必要な値が存在しない場合を想定する。このため、実行制御装置101は、実行対象となるコマンドB2を実行できないと判断する。
【0029】
(3)実行制御装置101は、実行対象となるコマンドB2が実行できないと判断した場合、情報処理装置103とは異なる情報処理装置102に対して実行するコマンド群から実行対象となるコマンドを選択する。具体的には、例えば、実行制御装置101は、情報処理装置103の構築ログ111を参照して、情報処理装置103に対して実行するコマンド群から実行対象となるコマンドを実行順に選択する。
【0030】
以降において、実行制御装置101は、選択した実行対象となるコマンドに対して、上記(2)および上記(3)と同様の処理を繰り返す。
【0031】
このように、実行制御装置101によれば、移行先のシステムXの構築の際に情報処理装置102,103間の実行順序の依存関係を考慮してコマンドを実行することができる。これにより、人手により情報処理装置102,103間の実行順序の依存関係を考慮して各情報処理装置102,103に対するコマンドを実行する必要がなくなり、システムの構築作業にかかる負荷を軽減させることができる。
【0032】
(ネットワークシステム200のシステム構成例)
つぎに、実施の形態にかかるネットワークシステム200のシステム構成例について説明する。なお、図1に示した情報処理装置102,103は、図2に示す情報処理装置201に相当する。
【0033】
図2は、ネットワークシステム200のシステム構成例を示す説明図である。図2において、ネットワークシステム200は、実行制御装置101と、複数の情報処理装置201とを含む。ネットワークシステム200において、実行制御装置101および情報処理装置201は、有線または無線のネットワーク210によって接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
【0034】
ここで、実行制御装置101は、コマンド特性DB(データベース)220およびマッピングDB230を有し、システムの構築の際に実行されるコマンドの実行を制御する。なお、コマンド特性DB220の記憶内容については、図4を用いて後述する。また、マッピングDB230の記憶内容については、図5を用いて後述する。
【0035】
情報処理装置201は、自装置のハードウェア資源を仮想化して、複数の異なるOSを実行可能なコンピュータである。自装置のハードウェア資源とは、例えば、情報処理装置201のCPU(Central Processing Unit)、メモリ、I/F(Interface)などである。
【0036】
具体的には、例えば、情報処理装置201は、自装置のハードウェア資源を分割して構築される実行環境で動作する仮想マシンVM(Virtual Machine)によってOSを稼働させることができる。ここで、仮想マシンVMとは、情報処理装置201のハードウェア資源を分割して構築される実行環境で動作する仮想的なコンピュータである。仮想マシンVMの実体は、例えば、プログラムやOSなどのソフトウェア、ソフトウェアに与えられる変数、およびソフトウェアを実行させるためのハードウェア資源を指定する情報を含むものである。
【0037】
ネットワークシステム200では、1以上の情報処理装置201で複数の仮想マシンVMを起動させてシステムを構築することができる。より具体的には、例えば、情報処理装置201にはOSとSSH(Secure SHell)がインストールされたイメージが配備されており、情報処理装置201上で起動される複数の仮想マシンVMにより、後述するサーバ甲、乙、丙等が実現される。
【0038】
また、ネットワークシステム200において、複数の仮想マシンVM等によって構築されるシステムの構成情報は、例えば、実行制御装置101がアクセス可能な不図示のCMDB(Configuration Management Database)を用いて管理される。
【0039】
(実行制御装置101のハードウェア構成例)
図3は、実行制御装置101のハードウェア構成例を示すブロック図である。図3において、実行制御装置101は、CPU301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、I/F(Interface)306と、ディスプレイ307と、キーボード308と、マウス309と、を有する。また、各構成部はバス300によってそれぞれ接続される。
【0040】
ここで、CPU301は、実行制御装置101の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御にしたがって磁気ディスク305に対するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
【0041】
I/F306は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他の装置に接続される。そして、I/F306は、ネットワーク210と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F306には、例えば、モデムやLANアダプタなどを採用することができる。
【0042】
ディスプレイ307は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ307は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【0043】
キーボード308は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス309は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。
【0044】
なお、実行制御装置101は、上述した構成部のうち、例えば、ディスプレイ307、キーボード308、マウス309等を有さないことにしてもよい。また、図2に示した情報処理装置201についても、実行制御装置101と同様のハードウェア構成によって実現することができる。
【0045】
(コマンド特性DB220)
つぎに、図2に示したコマンド特性DB220の記憶内容について説明する。なお、コマンド特性DB220は、例えば、図3に示したROM302、RAM303、磁気ディスク305等の記憶装置に記憶される。
【0046】
図4は、コマンド特性DB220の記憶内容の一例を示す説明図である。図4において、コマンド特性DB220は、コマンド名、引数番号/オプションおよび引数/オプション特性のフィールドを有し、各フィールドに情報を設定することにより、特性情報(例えば、特性情報400−1〜400−10)をレコードとして記憶している。
【0047】
ここで、コマンド名は、システムの構築の際に実行されるコマンド(シェルスクリプト)を識別する識別子である。引数番号/オプションは、コマンドの引数/オプションを識別する識別子である。引数番号は、コマンドの何番目の引数かを表す。引数/オプション特性は、引数/オプションの特性を表す。
【0048】
特性「input String」は、コマンドの実行時に入力となる情報(例えば、パスワード)を表す。特性「output String」は、コマンドの実行時に出力となる情報を表す。特性「input file」は、コマンドの実行時に入力となるファイルを表す。ここでは、便宜上ディレクトリもファイルとみなす。特性「output file」は、コマンドの実行時に出力となるファイルを表す。特性「−」は、引数/オプションの特性が設定されていないことを示す。
【0049】
例えば、特性情報400−1は、コマンド「mkdir」の1番目の引数の特性が「output file」であることを示している。コマンド「mkdir」は、指定場所にフォルダを作成するコマンドである。また、特性情報400−2は、コマンド「ssh」のオプション「keygen」の特性が「−」であることを示している。
【0050】
(マッピングDB230の記憶内容)
つぎに、図2に示したマッピングDB230の記憶内容について説明する。なお、マッピングDB230は、例えば、図3に示したRAM303、磁気ディスク305等の記憶装置により実現される。図1に示したシステムXの構成情報120は、例えば、マッピングDB230に相当する。
【0051】
図5は、マッピングDB230の記憶内容の一例を示す説明図である。図5において、マッピングDB230は、構成情報、移行元システムおよび移行先システムのフィールドを有し、各フィールドに情報を設定することにより、マッピング情報(例えば、マッピング情報500−1〜500−6)がレコードとして記憶されている。
【0052】
ここで、構成情報は、システムの構成情報を表す。移行元システムは、移行元システムの構成情報を表す。ここでは、初期設定として、移行元システムのすべての構成情報が設定されている。移行元システムの構成情報は、例えば、移行元システムの構成アイテムを管理するCMDBから取得することができる。
【0053】
移行先システムは、現在構築中の移行先システムの構成情報を表す。ここでは、初期設定として、サーバ甲のユーザ名、サーバ甲のIPアドレスおよびサーバ乙のIPアドレスが設定されている。移行先システムの構成情報は、例えば、移行先システムの構成アイテムを管理するCMDBから取得することができる。
【0054】
例えば、マッピング情報500−1は、移行元システムのサーバ甲のユーザ名「root」と、移行先システムのサーバ甲のユーザ名「root」とを対応付けて表す。また、マッピング情報500−2は、移行元システムのサーバ甲のIPアドレス「10.0.0.1」と移行先システムのサーバ乙のIPアドレス「10.0.1.1」と対応付けて表す。
【0055】
(構築ログLの具体例)
つぎに、構築ログLの具体例について説明する。構築ログLは、システムの構築時にシステム内の各サーバ(例えば、サーバ甲、乙)に対して実行したコマンドを実行順に示す情報である。図1に示した構築ログ111,112は、例えば、構築ログLに相当する。
【0056】
図6は、構築ログLの具体例を示す説明図である。図6において、構築ログ610は、移行元システムの構築時にサーバ甲に対して実行したコマンドを実行順に示す情報である。構築ログ610には、ログ611とログ612が含まれている。ログ611は、SSHによって暗号化された通信を行うコマンド「scp」のログである。ログ612は、ファイルをコピーするコマンド「cp」のログである。
【0057】
また、構築ログ620は、移行元システムの構築時にサーバ乙に対して実行したコマンドを実行順に示す情報である。構築ログ620には、ログ621が含まれている。ログ621は、公開鍵を生成するコマンド「ssh」のログである。
【0058】
移行元システムでは、サーバ乙に対するコマンド「ssh」の実行が完了した後に、サーバ甲に対するコマンド「scp」が実行され、その後、コマンド「cp」が実行された場合を想定する。すなわち、サーバ乙に対して実行するコマンド「ssh」とサーバ甲に対して実行するコマンド「scp」との間に実行順序の依存関係がある。
【0059】
(実行制御装置101の機能的構成例)
図7は、実行制御装置101の機能的構成例を示すブロック図である。図7において、実行制御装置101は、取得部701と、選択部702と、判定部703と、判断部704と、制御部705と、更新部706と、出力部707と、を含む構成である。各機能部は、具体的には、例えば、図3に示したROM302、RAM303、磁気ディスク305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F306により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したRAM303、磁気ディスク305等の記憶装置に記憶される。
【0060】
以下の説明では、システム内の複数のサーバを「サーバS1〜Sn」と表記し、サーバS1〜Snのうちの任意のサーバを「サーバSi」と表記する場合がある(n:2以上の自然数、i=1,2,…,n)。サーバSiは、例えば、図2に示した情報処理装置201または情報処理装置201上で起動される仮想マシンVMによって実現される。また、システムの構築時にサーバSiに対して実行したコマンドを実行順に示す構築ログLを「構築ログLi」と表記する場合がある。
【0061】
取得部701は、システムの構築の際に各サーバSiに対して実行したコマンドを実行順に示す構築ログLiを取得する機能を有する。具体的には、例えば、取得部701は、図3に示したキーボード308やマウス309を用いたユーザの操作入力により、システムの構築の際に各サーバSi(例えば、各サーバ甲、乙)に対して実行したコマンドの実行順序を示す構築ログLi(例えば、構築ログ610,620)を取得する。また、構築ログLiが各サーバSiにおいて記録される場合には、取得部701は、システムの各サーバSiから構築ログLiを受信することにしてもよい。
【0062】
選択部702は、システムの構築の際にサーバSiに対して実行するコマンド群から実行対象となるコマンドを選択する機能を有する。具体的には、例えば、選択部702は、サーバSiの構築ログLiを参照して、サーバSiに対して実行する実行対象となるコマンドを実行順に選択する。以下の説明では、サーバSiに対して実行する実行対象となるコマンドを「対象コマンドC」と表記する場合がある。
【0063】
判定部703は、対象コマンドCが選択された場合、対象コマンドCの引数が、対象コマンドCの実行時に入力となる情報に関する引数であるか否かを判定する機能を有する。具体的には、例えば、判定部703は、コマンド特性DB220(図4参照)を参照して、対象コマンドCに、対象コマンドCの実行時に入力となる情報に関する引数が含まれているか否かを判定する。
【0064】
より具体的には、例えば、判定部703は、対象コマンドCに、引数/オプション特性が「input String」または「input file」の引数が含まれているか否かを判定する。これにより、サーバSiに対して実行する対象コマンドCが他のサーバSj(i≠j、j=1,2,…,n)に対して実行するコマンドと実行順序の依存関係があるか否かを判定することができる。なお、判定部703の具体的な処理内容については、図8図12を用いて後述する。
【0065】
判断部704は、対象コマンドCの実行可否を判断する機能を有する。具体的には、例えば、判断部704は、対象コマンドCの引数が、対象コマンドCの実行時に入力となる情報に関する引数ではないと判定された場合、対象コマンドCを実行できると判断する。
【0066】
一方、対象コマンドCの引数が、対象コマンドCの実行時に入力となる情報に関する引数であると判定された場合、まず、判断部704は、構築ログLiを参照して、移行元システムの構築の際に実行された対象コマンドCの引数の値を特定する。つぎに、判断部704は、マッピングDB230(図5参照)から、特定した対象コマンドCの引数の値が移行元システムフィールドに設定されたマッピング情報を抽出する。そして、判断部704は、抽出したマッピング情報の移行先システムフィールドに情報が設定されているか否かを判断する。
【0067】
ここで、判断部704は、移行先システムフィールドに情報が設定されている場合、対象コマンドCを実行できると判断する。これにより、移行先システムの構成情報として、対象コマンドCの実行に必要な情報(引数の値)が存在する場合に、対象コマンドCを実行できると判断することができる。
【0068】
一方、判断部704は、移行先システムフィールドに情報が設定されていない場合、対象コマンドCを実行できないと判断する。これにより、移行先システムの構成情報として、対象コマンドCの実行に必要な情報(引数の値)が存在しない場合に、対象コマンドCを実行できないと判断することができる。なお、判断部704の具体的な処理内容については、図8図12を用いて後述する。
【0069】
また、選択部702は、対象コマンドCが実行できないと判断された場合、サーバSiとは異なる他のサーバSjに対して実行するコマンド群から対象コマンドCを選択する機能を有する。具体的には、例えば、選択部702は、他のサーバSjの構築ログLjを参照して、サーバSjに対して実行する対象コマンドCを実行順に選択する。これにより、サーバSiの対象コマンドCの実行に必要な情報(引数の値)が存在しない場合に、対象コマンドCを他のサーバSjのコマンドに切り替えることができる。
【0070】
制御部705は、対象コマンドCが実行できると判断された場合、サーバSiに対して対象コマンドCを実行する機能を有する。具体的には、例えば、制御部705は、サーバSiに対象コマンドCの実行指示を送信する。対象コマンドCの実行指示には、例えば、対象コマンドCに与える引数の値が含まれている。
【0071】
より具体的には、例えば、制御部705は、構築ログLiに含まれるログ群のうちの対象コマンドCに対応するログを、対象コマンドCの実行指示として送信することにしてもよい。この際、制御部705は、対象コマンドCの引数が、対象コマンドCの実行時に入力となる情報に関する引数である場合、ログに含まれる該引数の値を、マッピングDB230内の対応する移行先システムの構成情報に置換する。
【0072】
更新部706は、対象コマンドCの実行結果に基づいて、システムの構成情報を更新する機能を有する。具体的には、例えば、更新部706は、移行先システムのCMDBまたはサーバSiに構成情報を問い合わせることにより、マッピングDB230内の移行先システムの構成情報を更新する。なお、マッピングDB230の更新例については、図8図12を用いて後述する。
【0073】
また、選択部702は、対象コマンドCが実行された場合、サーバSiに対して実行するコマンド群のうちの未実行のコマンドから対象コマンドCを選択する機能を有する。具体的には、例えば、選択部702は、サーバSiの構築ログLiを参照して、サーバSiに対して実行する未実行のコマンドを対象コマンドCとして選択する。これにより、サーバSiに対して実行する対象コマンドCを実行順に切り替えることができる。
【0074】
また、選択部702は、サーバSiに対して実行するコマンド群のうちの未実行のコマンドがない場合には、他のサーバSjに対して実行するコマンド群のうちの未実行のコマンドから対象コマンドCを選択する機能を有する。具体的には、例えば、選択部702は、他のサーバSjの構築ログLjを参照して、サーバSjに対して実行する未実行のコマンドを対象コマンドCとして選択する。これにより、サーバSiに対して実行するコマンド群の実行が完了した場合に、対象コマンドCをサーバSiのコマンドから他のサーバSjのコマンドに切り替えることができる。
【0075】
出力部707は、対象コマンドCが実行された場合、対象コマンドCと対象コマンドCを実行したサーバSiの識別子とを対応付けて表すログ(以下、「再構築ログ」と称する)を出力する機能を有する。サーバSiの識別子は、例えば、移行先システムのサーバSiのIPアドレス、ホスト名、ユーザ名などである。具体的には、例えば、出力部707は、図13に示すような集約ログPLを出力することにしてもよい。
【0076】
なお、出力部707の出力形式としては、例えば、RAM303、磁気ディスク305等の記憶装置への記憶、ディスプレイ307への表示、プリンタ(不図示)への印刷出力、I/F306による外部のコンピュータへの送信がある。
【0077】
また、選択部702は、対象コマンドCが実行できないと判断された場合、構築ログLiに含まれるログ群のうち対象コマンドCに対応するログから、他のサーバSjの識別子を検出することにしてもよい。そして、選択部702は、他のサーバSjの識別子を検出した場合は、当該識別子から識別されるサーバSjに実行させるコマンド群から対象コマンドCを選択することにしてもよい。これにより、対象コマンドCが実行できないと判断された場合に、対象コマンドCと実行順序の依存関係があるコマンドを効率的に選別することができる。
【0078】
(実行制御装置101の実行制御処理例)
つぎに、実行制御装置101の実行制御処理例について説明する。
【0079】
図8図12は、実行制御装置101の実行制御処理例を示す説明図である。図8において、(8−1)選択部702は、サーバ甲の構築ログ610(図6参照)を参照して、サーバ甲に対して実行する対象コマンドCを選択する。図8の例では、ログ611の対象コマンドC「scp」が選択されている。
【0080】
(8−2)判定部703は、コマンド特性DB220を参照して、対象コマンドC「scp」に、対象コマンドC「scp」の実行時に入力となる情報に関する引数が含まれているか否かを判定する。ここでは、対象コマンドC「scp」の1番目の引数の特性が「input file」のため、対象コマンドC「scp」の実行時に入力となる情報に関する引数が含まれていると判定される。
【0081】
(8−3)判断部704は、対象コマンドC「scp」の実行可否を判断する。具体的には、例えば、まず、判断部704は、ログ611を参照して、移行元システムの構築時に実行された対象コマンドC「scp」の引数の値「root」、「10.0.0.2」および「〜/.ssh/id_rsa.pub」を特定する。
【0082】
つぎに、判断部704は、マッピングDB230から、対象コマンドC「scp」の引数の値「root」、「10.0.0.2」および「〜/.ssh/id_rsa.pub」が移行元システムフィールドにそれぞれ設定されたマッピング情報を抽出する。ここでは、マッピング情報500−1,500−5,500−6が抽出される。
【0083】
そして、判断部704は、マッピング情報500−1,500−5,500−6の移行先システムフィールドに情報がそれぞれ設定されているか否かを判断する。ここでは、マッピング情報500−6の移行先システムフィールドが「null」のため、判断部704は、マッピング情報500−6の移行先システムフィールドに情報が設定されていないと判断する。そして、判断部704は、対象コマンドC「scp」を実行できないと判断する。
【0084】
図9において、(9−1)選択部702は、対象コマンドC「scp」が実行できないと判断された場合、サーバ乙の構築ログ620(図6参照)を参照して、サーバ乙に対して実行する対象コマンドCを選択する。図9の例では、ログ621の対象コマンドC「ssh」が選択されている。
【0085】
(9−2)判定部703は、コマンド特性DB220を参照して、対象コマンドC「ssh」に、対象コマンドC「ssh」の実行時に入力となる情報に関する引数が含まれているか否かを判定する。ここでは、対象コマンドC「ssh」の引数「keygen」およびオプション「t」の特性が「−」のため、対象コマンドC「ssh」の実行時に入力となる情報に関する引数が含まれていないと判定される。
【0086】
(9−3)判断部704は、対象コマンドC「ssh」に、対象コマンドC「ssh」の実行時に入力となる情報に関する引数が含まれていないと判定された場合、対象コマンドC「scp」を実行できると判断する。そして、制御部705は、対象コマンドC「ssh」が実行できると判断された場合、サーバ乙に対する対象コマンドC「ssh」を実行する。
【0087】
また、更新部706は、移行先システムのサーバ乙に構成情報を問い合わせることにより、マッピングDB230を更新する。ここでは、マッピングDB230内のマッピング情報500−6の移行先システムフィールドに「〜/.ssh/id_rsa.pub」が設定されている。
【0088】
図10において、(10−1)選択部702は、サーバ甲の構築ログ610(図6参照)を参照して、サーバ甲に対して実行する対象コマンドCを選択する。図10の例では、ログ611の対象コマンドC「scp」が選択されている。
【0089】
(10−2)判定部703は、コマンド特性DB220を参照して、対象コマンドC「scp」に、対象コマンドC「scp」の実行時に入力となる情報に関する引数が含まれているか否かを判定する。ここでは、対象コマンドC「scp」の1番目の引数の特性が「input file」のため、対象コマンドC「scp」の実行時に入力となる情報に関する引数が含まれていると判定される。
【0090】
(10−3)判断部704は、対象コマンドC「scp」の実行可否を判断する。具体的には、例えば、まず、判断部704は、ログ611を参照して、移行元システムの構築時に実行された対象コマンドC「scp」の1番目の引数の値「root」、「10.0.0.2」および「〜/.ssh/id_rsa.pub」を特定する。
【0091】
つぎに、判断部704は、マッピングDB230から、対象コマンドC「scp」の引数の値「root」、「10.0.0.2」および「〜/.ssh/id_rsa.pub」が移行元システムフィールドにそれぞれ設定されたマッピング情報を抽出する。ここでは、マッピング情報500−1,500−5,500−6が抽出される。
【0092】
そして、判断部704は、マッピング情報500−1,500−5,500−6の移行先システムフィールドに情報がそれぞれ設定されているか否かを判断する。ここでは、判断部704は、マッピング情報500−1,500−5,500−6の移行先システムフィールドに情報がそれぞれ設定されていると判断する。そして、判断部704は、対象コマンドC「scp」を実行できると判断する。
【0093】
図11において、(11−1)制御部705は、対象コマンドC「scp」が実行できると判断された場合、サーバ甲に対して対象コマンドC「scp」を実行する。具体的には、例えば、制御部705は、ログ611に含まれる1番目の引数の値を、マッピングDB230内の対応する移行先システムの構成情報に置換することにより、対象コマンドC「scp」の実行指示1100を生成する。
【0094】
ここでは、引数の値「root」が「root」に置換され、引数の値「10.0.0.2」が「10.0.1.2」に置換され、引数の値「〜/.ssh/id_rsa.pub」が「〜/.ssh/id_rsa.pub」に置換される。なお、引数の値「root」および「〜/.ssh/id_rsa.pub」は移行元システムと同じため置換は不要である。そして、制御部705は、サーバ甲に対象コマンドC「scp」の実行指示1100を送信する。
【0095】
(11−2)更新部706は、実行指示1100が送信された結果、移行先システムのサーバ乙に構成情報を問い合わせることにより、マッピングDB230を更新する。ここでは、マッピングDB230内のマッピング情報500−3の移行先システムフィールドに「〜/id_rsa.pub」が設定されている。
【0096】
図12において、(12−1)選択部702は、サーバ甲の構築ログ610(図6参照)を参照して、サーバ甲に対して実行する対象コマンドCを選択する。図12の例では、ログ612の対象コマンドC「cp」が選択されている。
【0097】
(12−2)判定部703は、コマンド特性DB220を参照して、対象コマンドC「cp」に、対象コマンドC「cp」の実行時に入力となる情報に関する引数が含まれているか否かを判定する。ここでは、対象コマンドC「cp」の1番目の引数の特性が「input file」のため、対象コマンドC「cp」の実行時に入力となる情報に関する引数が含まれていると判定される。
【0098】
(12−3)判断部704は、対象コマンドC「cp」の実行可否を判断する。具体的には、例えば、まず、判断部704は、ログ612を参照して、移行元システムの構築時に実行された対象コマンドC「cp」の1番目の引数の値「〜/id_rsa.pub」を特定する。
【0099】
つぎに、判断部704は、マッピングDB230から、対象コマンドC「cp」の引数の値「〜/id_rsa.pub」が移行元システムフィールドに設定されたマッピング情報を抽出する。ここでは、マッピング情報500−3が抽出される。
【0100】
そして、判断部704は、マッピング情報500−3の移行先システムフィールドに情報が設定されているか否かを判断する。ここでは、判断部704は、マッピング情報500−3の移行先システムフィールドに情報が設定されていると判断する。そして、判断部704は、対象コマンドC「cp」を実行できると判断する。
【0101】
(12−4)制御部705は、対象コマンドC「cp」が実行できると判断された場合、サーバ甲に対して対象コマンドC「cp」を実行する。具体的には、例えば、制御部705は、ログ612に含まれる1番目の引数の値を、マッピングDB230内の対応する移行先システムの構成情報に置換することにより、対象コマンドC「cp」の実行指示1200を生成する。ここでは、引数の値「id_rsa.pub」が「id_rsa.pub」に置換される。そして、制御部705は、サーバ甲に対象コマンドC「cp」の実行指示1200を送信する。
【0102】
(集約ログPLの具体例)
つぎに、移行先システムの構築の際に各サーバSiで実行されたコマンドのログを実行順に示す集約ログPLについて説明する。
【0103】
図13は、集約ログPLの具体例を示す説明図である。図13において、集約ログPLは、移行先システムの構築の際に各サーバ甲、乙に対して実行したコマンドの再構築ログ1300−1〜1300−3が実行順に示されている。
【0104】
各再構築ログ1300−1〜1300−3には、各サーバ甲、乙のIPアドレスが含まれている。また、再構築ログ1300−1〜1300−3には、各サーバ甲、乙に実行指示(例えば、実行指示1100,1200)を送信した送信時刻が含まれている。また、再構築ログ1300−1〜1300−3には、各サーバ甲、乙に対して実行したコマンドが含まれている。
【0105】
集約ログPLによれば、移行先システムの構築時に各サーバ甲、乙に対して実行したコマンドを実行順に特定することができる。これにより、新たにシステムを構築する際に、集約ログPLに従って各サーバ甲、乙に対するコマンドを実行することにより、サーバ間の実行順序の依存関係を考慮することなくシステムを構築することができる。
【0106】
また、集約ログPLによれば、各サーバ甲、乙に送信した実行指示の送信時刻から各サーバ甲、乙に対するコマンドの実行タイミングを特定することができる。この際、各サーバ甲、乙における時刻に依存しないため、サーバ間で時刻が同期していなくても、サーバ間の実行順序の依存関係を考慮することなくシステムを構築することができる。
【0107】
(サーバが3台以上の場合の実行制御装置101の実行制御処理例)
つぎに、システム内のサーバが3台以上の場合の実行制御装置101の実行制御処理例について説明する。ここでは、上述したサーバ甲、乙とは異なる3台目のサーバを「サーバ丙」とする。また、移行元システムでのサーバ丙のIPアドレスを「10.0.0.3」とし、移行先システムでのサーバ丙のIPアドレスを「10.0.1.3」とする。また、移行元システムおよび移行先システムの構成情報のうちサーバ丙以外の構成情報については、上述したサーバ甲、乙の2台で移行元システムおよび移行先システムを構築する場合と同様とする。
【0108】
図14は、実行制御装置101の実行制御処理例を示す説明図(その6)である。図14において、(14−1)選択部702は、サーバ甲の構築ログ610(図6参照)を参照して、サーバ甲に対して実行する対象コマンドCを選択する。図14の例では、ログ611の対象コマンドC「scp」が選択されている。
【0109】
(14−2)判定部703は、コマンド特性DB220を参照して、対象コマンドC「scp」に、対象コマンドC「scp」の実行時に入力となる情報に関する引数が含まれているか否かを判定する。ここでは、対象コマンドC「scp」の1番目の引数の特性が「input file」のため、対象コマンドC「scp」の実行時に入力となる情報に関する引数が含まれていると判定される。
【0110】
(14−3)判断部704は、対象コマンドC「scp」の実行可否を判断する。なお、対象コマンドC「scp」の実行可否を判断する具体的な処理内容は、図8に示した(8−3)の処理内容と同様のため、ここでは説明を省略する。すなわち、対象コマンドC「scp」を実行できないと判断される。
【0111】
この場合、選択部702は、サーバ甲とは異なるサーバ乙またはサーバ丙に対して実行するコマンド群から対象コマンドCを選択する。この際、選択部702は、サーバ甲の対象コマンドC「scp」の実行に必要な情報が設定されていなかったマッピング情報500−6を参照して、サーバ乙またはサーバ丙を選択することにしてもよい。
【0112】
具体的には、例えば、選択部702は、マッピング情報500−6の構成情報フィールドに設定されている文字列から識別されるサーバ乙を選択する。これにより、サーバ甲の対象コマンドC「scp」と実行順序の依存関係があるコマンドを効率的に選別することができる。
【0113】
(実行制御装置101の実行制御処理手順)
つぎに、実行制御装置101の実行制御処理手順について説明する。
【0114】
図15は、実行制御装置101の第1の実行制御処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、実行制御装置101は、移行元システムの構築ログL1〜Lnを取得したか否かを判断する(ステップS1501)。
【0115】
ここで、実行制御装置101は、移行元システムの構築ログL1〜Lnを取得するのを待つ(ステップS1501:No)。そして、実行制御装置101は、移行元システムの構築ログL1〜Lnを取得した場合(ステップS1501:Yes)、構築ログLiの「i」を「i=1」で初期化する(ステップS1502)。
【0116】
つぎに、実行制御装置101は、構築ログL1〜Lnから構築ログLiを選択する(ステップS1503)。そして、実行制御装置101は、構築ログLiを実行済みか否か判断する(ステップS1504)。なお、構築ログLiを実行済みとは、構築ログLiに含まれるすべてのログに対応するコマンドを実行済みであることを意味する。
【0117】
ここで、構築ログLiを実行済みの場合(ステップS1504:Yes)、実行制御装置101は、ステップS1510に移行する。一方、構築ログLiを実行済みではない場合(ステップS1504:No)、実行制御装置101は、構築ログLiから移行先システムでサーバSiに対して実行する対象コマンドCを選択する(ステップS1505)。なお、対象コマンドCは、構築ログLiに含まれるログに対応するコマンドのうち実行順序が最も早い未実行のコマンドである。
【0118】
そして、実行制御装置101は、選択した対象コマンドCの実行可否を判断するコマンド実行可否判断処理を実行する(ステップS1506)。なお、コマンド実行可否判断処理の具体的な処理手順については、図16を用いて後述する。
【0119】
つぎに、実行制御装置101は、対象コマンドCを実行するコマンド実行処理を実行する(ステップS1507)。なお、コマンド実行処理の具体的な処理手順については、図17を用いて後述する。そして、実行制御装置101は、構築ログLiのうち実行されていない未実行のコマンドがあるか否かを判断する(ステップS1508)。
【0120】
ここで、未実行のコマンドがある場合(ステップS1508:Yes)、実行制御装置101は、ステップS1505に戻る。一方、未実行のコマンドがない場合(ステップS1508:No)、実行制御装置101は、構築ログL1〜Lnのうち実行されていない未実行の構築ログがあるか否かを判断する(ステップS1509)。
【0121】
ここで、未実行の構築ログがある場合(ステップS1509:Yes)、実行制御装置101は、構築ログLiの「i」をインクリメントして(ステップS1510)、「i」が「n」より大きくなったか否かを判断する(ステップS1511)。ここで、「i」が「n」以下の場合(ステップS1511:No)、実行制御装置101は、ステップS1503に戻る。一方、「i」が「n」より大きくなった場合(ステップS1511:Yes)、実行制御装置101は、ステップS1502に戻る。
【0122】
また、ステップS1509において、未実行の構築ログがない場合(ステップS1509:No)、実行制御装置101は、集約ログPLを出力して(ステップS1512)、本フローチャートによる一連の処理を終了する。なお、集約ログPLは、移行先システムの構築時に各サーバSiに対して実行した対象コマンドCの再構築ログを実行順に示す情報である。
【0123】
これにより、移行先システム内のサーバ間の実行順序の依存関係を考慮してコマンドを実行することができる。
【0124】
つぎに、図15に示したステップS1506のコマンド実行可否判断処理の具体的な処理手順について説明する。
【0125】
図16は、コマンド実行可否判断処理の具体的処理手順の一例を示すフローチャートである。図16のフローチャートにおいて、まず、実行制御装置101は、コマンド特性DB220を参照して、対象コマンドCの引数の特性を判断する(ステップS1601)。
【0126】
つぎに、実行制御装置101は、対象コマンドCの引数の特性が「input String」または「input file」であるか否かを判断する(ステップS1602)。ここで、「input String」または「input file」ではない場合(ステップS1602:No)、実行制御装置101は、コマンド実行可否判断処理を呼び出したステップに戻る。
【0127】
一方、「input String」または「input file」の場合(ステップS1602:Yes)、実行制御装置101は、構築ログLiを参照して、移行元システムの構築時に実行された対象コマンドCの引数の値を特定する(ステップS1603)。つぎに、実行制御装置101は、マッピングDB230から、特定した対象コマンドCの引数の値が移行元システムフィールドに設定されたマッピング情報を抽出する(ステップS1604)。
【0128】
そして、実行制御装置101は、抽出したマッピング情報の移行先システムフィールドに「null」が設定されているか否かを判断する(ステップS1605)。ここで、「null」が設定されている場合(ステップS1605:Yes)、実行制御装置101は、図15に示したステップS1510に移行する。
【0129】
一方、「null」が設定されていない場合(ステップS1605:No)、実行制御装置101は、対象コマンドCの引数の値を、抽出したマッピング情報の移行先システムフィールドに設定されている情報に置換する(ステップS1606)。そして、実行制御装置101は、コマンド実行可否判断処理を呼び出したステップに戻る。
【0130】
これにより、対象コマンドCがサーバ間で実行順序の依存関係がある場合に、対象コマンドCの実行に必要な移行先システムの構成情報(引数の値)がマッピングDB230に設定されているか否かによって、対象コマンドCの実行可否を判断することができる。
【0131】
つぎに、図15に示したステップS1507のコマンド実行処理の具体的な処理手順について説明する。
【0132】
図17は、コマンド実行処理の具体的処理手順の一例を示すフローチャートである。図17のフローチャートにおいて、まず、実行制御装置101は、サーバSiに対する対象コマンドCを実行する(ステップS1701)。そして、実行制御装置101は、対象コマンドCとサーバSiのIPアドレスとを対応付けて表す再構築ログを作成する(ステップS1702)。
【0133】
つぎに、実行制御装置101は、移行先システムのサーバSiに問い合わせることにより、移行先システムの構成情報を取得する(ステップS1703)。そして、実行制御装置101は、取得した移行先システムの構成情報に基づいて、マッピングDB230の記憶内容を更新して(ステップS1704)、コマンド実行処理を呼び出したステップに戻る。
【0134】
これにより、サーバSiに対して対象コマンドCを実行することができる。また、対象コマンドCと、対象コマンドCを実行したサーバSiのIPアドレスとを対応付けて表す再構築ログを作成することができる。
【0135】
つぎに、実行制御装置101の第2の実行制御処理手順について説明する。第2の実行制御処理は、図15に示したステップS1512において出力される集約ログPLに基づいて、システム構築時の各サーバSiのコマンドの実行を制御する処理である。
【0136】
図18は、実行制御装置101の第2の実行制御処理手順の一例を示すフローチャートである。図18のフローチャートにおいて、まず、実行制御装置101は、移行元システムの集約ログPLを取得したか否かを判断する(ステップS1801)。ここで、実行制御装置101は、移行元システムの集約ログPLを取得するのを待つ(ステップS1801:No)。
【0137】
そして、実行制御装置101は、移行元システムの集約ログPLを取得した場合(ステップS1801:Yes)、集約ログPLから移行先システムでサーバSiに対して実行する対象コマンドCを選択する(ステップS1802)。なお、この対象コマンドCは、集約ログPLに含まれる再構築ログに対応するコマンドのうち実行順序が最も早い未実行のコマンドである。
【0138】
つぎに、実行制御装置101は、コマンド特性DB220を参照して、対象コマンドCの引数の特性を判断する(ステップS1803)。つぎに、実行制御装置101は、対象コマンドCの引数の特性が「input String」または「input file」であるか否かを判断する(ステップS1804)。
【0139】
ここで、「input String」または「input file」ではない場合(ステップS1804:No)、実行制御装置101は、ステップS1808に移行する。一方、「input String」または「input file」の場合(ステップS1804:Yes)、実行制御装置101は、集約ログPLを参照して、移行元システムの構築時に実行された対象コマンドCの引数の値を特定する(ステップS1805)。
【0140】
つぎに、実行制御装置101は、マッピングDB230から、特定した対象コマンドCの引数の値が移行元システムフィールドに設定されたマッピング情報を抽出する(ステップS1806)。そして、実行制御装置101は、対象コマンドCの引数の値を、抽出したマッピング情報の移行先システムフィールドに設定されている情報に置換する(ステップS1807)。
【0141】
つぎに、実行制御装置101は、サーバSiに対する対象コマンドCを実行する(ステップS1808)。そして、実行制御装置101は、移行先システムのサーバSiに問い合わせることにより、移行先システムの構成情報を取得する(ステップS1809)。そして、実行制御装置101は、取得した移行先システムの構成情報に基づいて、マッピングDB230の記憶内容を更新する(ステップS1810)。
【0142】
つぎに、実行制御装置101は、集約ログPLのうち実行されていない未実行のコマンドがあるか否かを判断する(ステップS1811)。ここで、未実行のコマンドがある場合(ステップS1811:Yes)、実行制御装置101は、ステップS1802に戻る。一方、未実行のコマンドがない場合(ステップS1811:No)、実行制御装置101は、本フローチャートによる一連の処理を終了する。
【0143】
これにより、システム構築時にサーバ間の実行順序の依存関係を考慮することなくコマンドを実行することができる。
【0144】
以上説明したように、実行制御装置101によれば、サーバSiに対して実行するコマンド群から対象コマンドCが選択された場合、コマンド特性DB220を参照して、対象コマンドCの引数が、対象コマンドCの実行時に入力となる情報に関する引数であるか否かを判定することができる。これにより、サーバSiに対して実行する対象コマンドCが他のサーバSjに対して実行するコマンドと実行順序の依存関係があるか否かを判定することができる。
【0145】
また、実行制御装置101によれば、対象コマンドCの引数が、対象コマンドCの実行時に入力となる情報に関する引数ではない場合には、対象コマンドCを実行できると判断することができる。これにより、対象コマンドCがサーバ間で実行順序の依存関係がないコマンドの場合に、対象コマンドCを実行できると判断することができる。
【0146】
また、実行制御装置101によれば、対象コマンドCの引数が、対象コマンドCの実行時に入力となる情報に関する引数である場合、マッピングDB230を参照して、対象コマンドCの実行可否を判断することができる。具体的には、例えば、実行制御装置101は、構築ログLiを参照して、移行元システムの構築時に実行された対象コマンドCの引数の値を特定する。また、実行制御装置101は、マッピングDB230から、特定した対象コマンドCの引数の値が移行元システムフィールドに設定されたマッピング情報を抽出して、マッピング情報の移行先システムフィールドに情報が設定されているか否かを判断する。ここで、移行先システムフィールドに情報が設定されている場合、実行制御装置101は、対象コマンドCを実行できると判断する。一方、移行先システムフィールドに情報が設定されていない場合、実行制御装置101は、対象コマンドCを実行できないと判断する。
【0147】
これにより、移行先システムの構成情報として、対象コマンドCの実行に必要な情報(引数の値)が存在する場合に、対象コマンドCを実行できると判断することができる。また、移行先システムの構成情報として、対象コマンドCの実行に必要な情報(引数の値)が存在しない場合には、対象コマンドCを実行できないと判断することができる。
【0148】
また、実行制御装置101によれば、対象コマンドCが実行できない場合は、サーバSiとは異なる他のサーバSjに対して実行するコマンド群から対象コマンドCを選択することができる。これにより、サーバSiの対象コマンドCの実行に必要な情報(引数の値)が存在しない場合に、対象コマンドCを他のサーバSjのコマンドに切り替えることができる。
【0149】
また、実行制御装置101によれば、対象コマンドCが実行できる場合は、サーバSiに対して対象コマンドCを実行することができる。また、実行制御装置101によれば、対象コマンドCの実行結果に基づいて、マッピングDB230の記憶内容(移行先システムの構成情報)を更新することができる。これにより、対象コマンドCが実行される度に、他のコマンドの実行に必要な情報(引数の値)をマッピングDB230に登録することができる。
【0150】
また、実行制御装置101によれば、対象コマンドCを実行した場合、サーバSiに対して実行するコマンド群のうちの未実行のコマンドから対象コマンドCを選択することができる。これにより、サーバSiに対して実行する対象コマンドCを実行順に切り替えることができる。
【0151】
また、実行制御装置101によれば、サーバSiに対して実行するコマンド群のうちの未実行のコマンドがない場合には、他のサーバSjに対して実行するコマンド群のうちの未実行のコマンドから対象コマンドCを選択することができる。これにより、サーバSiに対して実行するコマンド群の実行が完了した場合に、対象コマンドCをサーバSiのコマンドから他のサーバSjのコマンドに切り替えることができる。
【0152】
また、実行制御装置101によれば、対象コマンドCが実行できない場合、構築ログLiに含まれるログ群のうち対象コマンドCに対応するログから、他のサーバSjの識別子を検出することができる。また、実行制御装置101によれば、他のサーバSjの識別子を検出した場合は、当該識別子から識別されるサーバSjに実行させるコマンド群から対象コマンドCを選択することができる。これにより、対象コマンドCが実行できない場合に、対象コマンドCと実行順序の依存関係があるコマンドを効率的に選別することができる。
【0153】
また、実行制御装置101によれば、対象コマンドCを実行した場合、対象コマンドCと対象コマンドCを実行したサーバSiの識別子とを対応付けて表す再構築ログを作成することができる。また、実行制御装置101によれば、移行先システムが構築された結果、再構築ログを実行順に示す集約ログPLを出力することができる。これにより、新たにシステムを構築する際に、集約ログPLに従って各サーバSiに対するコマンドを実行することにより、サーバ間の実行順序の依存関係を考慮することなくシステムを構築することができる。
【0154】
これらのことから、実行制御装置101によれば、サーバS1〜Snを用いてシステム構築する場合に、サーバ間の実行順序の依存関係を考慮して各サーバSiに対するコマンドを実行することができ、システムの構築作業にかかる負荷を軽減させることができる。また、実行制御装置101によれば、サーバ間で実行順序の依存関係がないコマンドについては、サーバ単位で並列に実行することができるため、システムの構築に要する時間の短縮化を図ることができる。また、実行制御装置101によれば、システムを再々構築する場合には、システムの再構築時の集約ログPLに従って各サーバSiに対するコマンドを実行することにより、サーバ間の実行順序の依存関係を考慮することなくシステムを構築することができる。
【0155】
なお、本実施の形態で説明した実行制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実行制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実行制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【0156】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0157】
(付記1)コンピュータに、
システムの構築の際に複数の情報処理装置のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドが選択された場合、前記実行対象となるコマンドの引数の特性と前記システムの構成情報とに基づいて、前記実行対象となるコマンドの実行可否を判断し、
前記実行対象となるコマンドが実行できないと判断した場合、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択する、
処理を実行させることを特徴とする実行制御プログラム。
【0158】
(付記2)前記判断する処理は、
前記実行対象となるコマンドの引数が、前記実行対象となるコマンドの実行時に入力となる情報に関する引数である場合に、前記実行対象となるコマンドの実行可否を判断することを特徴とする付記1に記載の実行制御プログラム。
【0159】
(付記3)前記システムの構成情報は、過去に構築された前記システムの第1構成情報と、現在構築中の前記システムの第2構成情報とを対応付けて表す情報であり、
前記コンピュータに、
前記システムの構成情報から前記実行対象のコマンドの引数となる値が設定された第1構成情報を抽出し、
抽出した前記第1構成情報に対応する第2構成情報に前記実行対象のコマンドの引数となる値が設定されているか否かを判定する、処理を実行させ、
前記判断する処理は、
前記実行対象のコマンドの引数となる値が設定されていない場合、前記実行対象となるコマンドが実行できないと判断することを特徴とする付記2に記載の実行制御プログラム。
【0160】
(付記4)前記コンピュータに、
前記実行対象となるコマンドが実行できると判断した場合、前記いずれかの情報処理装置に対して前記実行対象となるコマンドを実行し、
前記実行対象となるコマンドの実行結果に基づいて、前記システムの構成情報を更新する、処理を実行させ、
前記選択する処理は、
前記実行対象となるコマンドを実行した場合、前記いずれかの情報処理装置に対して実行するコマンド群のうちの未実行のコマンドから前記実行対象となるコマンドを選択することを特徴とする付記1〜3のいずれか一つに記載の実行制御プログラム。
【0161】
(付記5)前記コンピュータに、
前記実行対象のコマンドを実行した場合、前記実行対象のコマンドのログと対応付けて前記実行対象のコマンドを実行した情報処理装置の識別子を出力する処理を実行させることを特徴とする付記1〜4のいずれか一つに記載の実行制御プログラム。
【0162】
(付記6)前記コンピュータに、
前記実行対象となるコマンドが実行できないと判断した場合、過去に前記システムを構築した際の前記実行対象となるコマンドのログから情報処理装置の識別子を検出する処理を実行させ、
前記選択する処理は、
前記ログから情報処理装置の識別子が検出された場合、当該識別子から識別される情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択することを特徴とする付記1〜5のいずれか一つに記載の実行制御プログラム。
【0163】
(付記7)前記コンピュータに、
コマンドの識別子と前記コマンドの実行時に入力となる情報に関する引数の識別子とを対応付けて表す情報を参照して、前記実行対象となるコマンドに、前記実行対象となるコマンドの実行時に入力となる情報に関する引数が含まれているか否かを判定する処理を実行させ、
前記判断する処理は、
前記入力となる情報に関する引数が含まれていると判定した場合に、前記実行対象となるコマンドの実行可否を判断することを特徴とする付記2に記載の実行制御プログラム。
【0164】
(付記8)前記選択する処理は、
前記いずれかの情報処理装置に対して実行するコマンド群のうちの未実行のコマンドがない場合には、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群のうちの未実行のコマンドから前記実行対象となるコマンドを選択することを特徴とする付記4に記載の実行制御プログラム。
【0165】
(付記9)コンピュータが、
システムの構築の際に複数の情報処理装置のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドが選択された場合、前記実行対象となるコマンドの引数の特性と前記システムの構成情報とに基づいて、前記実行対象となるコマンドの実行可否を判断し、
前記実行対象となるコマンドが実行できないと判断した場合、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択する、
処理を実行することを特徴とする実行制御方法。
【0166】
(付記10)複数の情報処理装置と、
システムの構築の際に前記複数の情報処理装置のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドが選択された場合、前記実行対象となるコマンドの引数の特性と前記システムの構成情報とに基づいて、前記実行対象となるコマンドの実行可否を判断し、前記実行対象となるコマンドが実行できないと判断した場合、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択する実行制御装置と、
を含むことを特徴とするネットワークシステム。
【0167】
(付記11)コンピュータに、
システムの構築の際に複数の情報処理装置のいずれかの情報処理装置に対して実行するコマンド群から実行対象となるコマンドが選択された場合、前記実行対象となるコマンドの引数の特性と前記システムの構成情報とに基づいて、前記実行対象となるコマンドの実行可否を判断し、
前記実行対象となるコマンドが実行できないと判断した場合、前記いずれかの情報処理装置とは異なる情報処理装置に対して実行するコマンド群から前記実行対象となるコマンドを選択する、
処理を実行させる実行制御プログラムを記録したことを特徴とする前記コンピュータに読み取り可能な記録媒体。
【符号の説明】
【0168】
101 実行制御装置
102,103,201 情報処理装置
220 コマンド特性DB
230 マッピングDB
701 取得部
702 選択部
703 判定部
704 判断部
705 制御部
706 更新部
707 出力部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18