以下、実施の形態について図面を参照して説明する。
(第1実施形態)
まず、図1を参照して、第1実施形態に係る管理システムの構成を説明する。この管理システム1は、セットアップ対象の第1情報処理装置と、第1情報処理装置のセットアップを管理する第2情報処理装置とで構成される。
第1情報処理装置は、例えば、サーバコンピュータ20(以下、サーバとも称する)として実現され得る。第2情報処理装置は、例えば、パーソナルコンピュータである設定用端末10として実現され得る。設定用端末10とサーバ20とはネットワーク30を介して相互に接続されている。なお、設定用端末10とサーバ20とはケーブルを介して接続されていてもよい。
サーバ20は、設定用端末10で作成または編集される構成定義101を用いてセットアップされる。構成定義101には、システム設定のために、サーバ20で処理されるべき複数のタスクT1,T2が記述される。各タスクT1,T2は、例えば、コマンドとそのパラメータとで規定される。
設定用端末10は構成管理ツールを備える。構成管理ツールは、構成定義101に記述されたタスクT1,T2を先頭から順に、別の情報処理装置(ここでは、サーバ20)に処理させる機能を有するプログラムである。構成管理ツールとしては、様々なプログラムが提供されており、例えば、Ansible(登録商標)、Salt、Puppet(登録商標)、Chef等が利用され得る。
設定用端末10が、構成定義101を用いて構成管理ツールを実行することにより、サーバ20は、構成定義101に記述されたタスクT1,T2を先頭から順に処理(適用)する。これにより、サーバ20のシステム設定を自動的にセットアップすることができる。
図1に示すように、サーバ20のセットアップは、コマンド入力301のような手作業で行われることがある。コマンド入力301では、管理者が、セットアップのためのコマンドとそのパラメータとを、キーボード等を用いて順に入力する必要がある。
図2に示すように、セットアップ対象のサーバ20は、多数のクライアント40と多数のサーバ20とから構成されるシステム2内に設けられ得る。このようなシステム2を管理する管理者が多数のサーバ20をセットアップする場合、管理者による作業は非常に煩雑になり、長い時間を要することになる。
そのため、上述したように、設定用端末10による構成管理ツールと構成定義とを用いたセットアップが利用されている。管理者は、サーバ20内のハードウェア、オペレーティングシステム(OS)、ミドルウェア、およびアプリケーションの各レイヤを管理し得る。本実施形態の管理システム1による構成管理の対象は、サーバ20内のOS、ミドルウェア、およびアプリケーションのレイヤに属するソフトウェアである。なお、セットアップは、管理者に限らず、システム2を開発する開発者によって行われてもよい。
上述したように、構成定義には、システム設定のためにサーバ20で処理されるべき複数のタスクが記述される。構成定義は、複数のタスクとその処理順序とを示す。各タスクは、構成定義において、例えば、コマンドと、コマンドを適用する対象のオブジェクトと、当該オブジェクトが設定されるべき状態とを定義するための要素である。
コマンドは、サーバ20によって実行可能なコマンドである。例えば、コマンドは、サーバ20によって実行されるOS、ミドルウェア、またはアプリケーションプログラムに設けられるコマンドである。
オブジェクトは、サーバ20によって用いられるデータであり、例えば、ファイル、メモリまたはデータベース内のレコード、各種のパラメータ等である。パラメータは、例えば、サーバ20を使用するユーザに関するパラメータや、サーバ20で使用されるソフトウェアやハードウェア(デバイス)に関するパラメータ、サーバ20が接続されるネットワークに関するパラメータ、等を含む。
図3に示すように、構成定義において、各タスクは、例えば、ID、コマンド、および1つ以上のパラメータを用いて定義(記述)される。あるタスクにおいて、「ID」は、そのタスクを識別するための情報(名称)を示す。「コマンド」は、対応するタスクが処理されるときに、構成管理ツールを用いてサーバ20で実行されるべきコマンドを示す。「パラメータ」は、コマンドの実行のために指定される値であり、例えば、コマンドを適用する対象のオブジェクト、当該オブジェクトが設定されるべき状態等を示す。
「コマンド」および「パラメータ」に設定される値は、構成管理ツールの仕様に基づくものであり、使用される構成管理ツールに応じて変わり得る。
図4を参照して、タスクを定義するコマンドおよびパラメータの例を説明する。ここでは、構成管理ツールとしてAnsibleが用いられることを想定する。
パラメータ“state: absent, path: “/a””を指定するコマンド“file”は、“path”で指定されるファイル“a”を、“state”で指定される“absent”の状態にすること、すなわち、ファイル“a”が存在すれば削除することを示す。
パラメータ“state: symlink, path: “/linkb”, src: “/b””を指定するコマンド“file”は、“path”で指定される“/linkb”を、“src”で指定される“/b”と、“state”で指定される“symlink”の状態にすること、すなわち、“/linkb”を“/b”のシンボリックリンクに設定することを示す。
パラメータ“state: present, name: “userc””を指定するコマンド“user”は、“name”で指定されるユーザ名“userc”を、“state”で指定される“present”の状態にすること、すなわち、ユーザ“userc”がなければ作成することを示す。
また、パラメータ“state: present, name: “pack_d-1.0.0””を指定するコマンド“yum”は、“name”で指定されるソフトウェア“pack_d-1.0.0”を、“state”で指定される“present”の状態にすること、すなわち、ソフトウェア“pack_d-1.0.0”がインストールされていなければインストールすることを示す。
このようなコマンドおよびパラメータの記述を用いることにより、構成定義において種々のタスクを定義することができる。
ところで、構成定義は、管理者による理解や編集が容易になるようにリファクタリングされることがある。リファクタリングでは、例えば、関連性が高いものをまとめるようにタスクの順序が変更される。以下では、構成定義のリファクタリングが、構成定義内のタスクの順序を変更することを表すものとする。
図5は、構成定義がリファクタリングされる例を示す。リファクタリング前の構成定義101には、先頭から順に、ユーザの作成・設定のためのタスクT1とソフトウェアSambaのインストールのためのタスクT2とが記述されている。
管理者が、例えば、これらタスクT1,T2の順序を変更する操作を行うことにより、リファクタリング後の構成定義104が作成される。
このようなリファクタリングは、リファクタリング前の構成定義101を用いた場合と、リファクタリング後の構成定義104を用いた場合とで、サーバ20のセットアップ結果に違いがないように行われることが要求される。しかし、構成定義101,104が、多数のタスクが記述されたファイル(例えば、1000行以上の記述を含むファイル)であるような場合、あるタスクの順序の変更がサーバ20のセットアップ結果に影響を与えるものであるかどうかを、管理者が判断することは困難である。
構成管理ツールの一つであるAnsibleでは、ある構成定義を用いてセットアップが実行されたと仮定した場合に、セットアップ対象のコンピュータ(例えば、サーバ20)内のファイル等に変更が加えられるかどうかを事前に調べる機能がある。この機能を用いることにより、リファクタリング前の構成定義101を用いてセットアップしたコンピュータに対して、リファクタリング後の構成定義104を用いたセットアップをさらに行うと仮定した場合に、ファイル等に何らかの変更が加えられるかどうかに基づき、リファクタリング前後の構成定義101,104が等価であるかどうかを判断できることがある。つまり、リファクタリング後の構成定義104を用いたセットアップをさらに行うと仮定した場合に、ファイル等に変更が加えられないならばリファクタリング前後の構成定義101,104が等価であり、一方、ファイル等に変更が加えられるならばリファクタリング前後の構成定義101,104が等価でないと判断できることがある。
より具体的には、まず、Ansibleは、リファクタリング前の構成定義101を用いてコンピュータをセットアップする。Ansibleは、管理者による編集作業等により、この構成定義に変更を加えた(例えば、タスクの順序を入れ替えた)リファクタリング後の構成定義104を、事前チェックモードで実行する。そして、Ansibleは、リファクタリング前の構成定義101を用いてセットアップしたコンピュータに対して、事前チェックモードで実行されたリファクタリング後の構成定義104によってファイル等の変更が加えられるかどうかを通知する。この事前チェックモードでの実行では、コンピュータに対する実際の変更は行われない。
変更が加えられると通知された場合、この通知がコンピュータのセットアップ結果が変わることを意味し、リファクタリング前後の構成定義101,104が等価でないと解釈され得る。一方、変更が加えられないと通知された場合、この通知はコンピュータのセットアップ結果が変わらないことを意味し、リファクタリング前後の構成定義101,104が等価であると解釈され得る。
しかし、この方法によるリファクタリング前後の構成定義101,104が等価であるか否かの判定は、以下のように、妥当でない場合がある。
例えば、リファクタリング前の構成定義101を用いてセットアップされたコンピュータに対して、リファクタリング後の構成定義104を事前チェックモードで実行した場合に、実際には変更の影響により必要なファイルが作成されていないにも関わらず、リファクタリング前の構成定義101を用いたセットアップ時やそれ以前にそのファイルが既に作成されていたならば、リファクタリング前後の構成定義101,104を用いたセットアップ結果に違いがなく、等価であると判断される。
さらに、Ansibleのような一般的な構成管理ツールでは、特定の種類のコマンドが用いられるタスクが処理される場合に、そのタスクの処理に応じてコンピュータに変更が加えられたかどうかを検出することができない。この特定の種類のコマンドは、例えば、その実行により、OSに組み込まれたプログラムモジュールが動作するコマンドである。つまり、一般的な構成管理ツールでは、直接的に監視できる第1のプログラムモジュールの動作によって、コンピュータに変更が加えられたかどうかを検出することはできる。しかしながら、例えば、その第1のプログラムモジュール内でOSのコマンドがさらに呼び出される場合に、このコマンドに関連付けられた第2のプログラムモジュールの動作によって、コンピュータに変更が加えられたかどうかを検出することはできない。
本実施形態では、リファクタリング前の構成定義101を用いてタスクの処理順序の制約を決定し、リファクタリング後の構成定義104がこの制約に違反していないかどうかを検査する。
より具体的には、図6に示すように、サーバ20に、リファクタリング前の構成定義101に記述された複数のタスクを第1の順序で処理させる間に、各タスクの処理に応じて読み出されたデータと書き込まれたデータとを示す情報を含むアクセスデータ表102が取得される。取得されたアクセスデータ表102を用いて、例えば、複数のタスクの内の第1タスクの処理に応じて書き込まれ、且つ第1タスクの処理よりも後の第2タスクの処理に応じて読み出された第1データが検出される。この第1データが検出されたことに基づき、第1タスクの後に第2タスクが処理されなければならないことを示す制約が決定される。アクセスデータ表102を用いて、このような依存関係(制約)を有する全てのデータが検出されることにより、依存関係表103が生成される。
そして、リファクタリング後の構成定義104に記述された、第2の順序で処理される複数のタスクが、依存関係表103に示される制約(依存関係)を満たしているか否かが判定される。制約に違反している場合、この制約に違反していることを示す検査結果105が管理者に通知される。
この通知に従って、管理者は、リファクタリング後の構成定義104をさらに変更できるので、サーバ20のセットアップ結果に影響を与えないように構成定義101をリファクタリングすることができる。したがって、管理者が構成定義101をリファクタリングしたことによって、誤ってセットアップ結果を変えてしまうこと、あるいはセットアップ時にエラーが発生することを未然に防ぐことができる。
図7を参照して、本実施形態の管理システム1に設けられる設定用端末10とサーバ20の機能構成について説明する。
設定用端末10は、構成定義エディタ111、構成管理ツール112、アクセス記録生成部113、依存関係解析部114、および違反検査部115を備える。また、サーバ20は、データ格納部201、タスク実行部211、およびデータアクセス監視部212を備える。
設定用端末10の構成定義エディタ111は、構成定義を作成および編集するためのテキストエディタである。構成定義エディタ111は、例えば、ある構成定義の内容を画面に表示する。そして、構成定義エディタ111は、キーボードやポインティングデバイスを用いた管理者による操作に応じて、表示されている構成定義に対して、タスクの追加、タスクの内容(例えば、コマンド、パラメータ、等)の変更、タスクの順序の変更、等を反映し、変更された構成定義を生成する。
以下では、管理者が、構成定義エディタ111を用いて、サーバ20をセットアップするための構成定義101を作成することを想定する。
構成管理ツール112は、作成された構成定義101を用いて、サーバ20にタスクを処理させる。構成管理ツール112は、構成定義101に記述された複数のタスクの内の1つのタスクを、先頭から順に選択し、選択されたタスクの処理をサーバ20に要求する。
サーバ20のタスク実行部211は、この要求に応じてタスクを処理する。すなわち、タスク実行部211は、そのタスクを処理するためのプロセスを実行する。このタスク実行部211は、OS、ミドルウェア、およびアプリケーションプログラムの少なくともいずれかに組み込まれたものであってもよい。また、タスク実行部211は、構成管理ツール112と連携した処理を行うための機能を有していてもよい。
タスク実行部211は、タスクの処理(すなわち、タスクを処理するためのプロセスの実行)に応じて、データ格納部201に格納されたいずれかのデータD1,D2,……,Dnを読み出し、またデータ格納部201にデータを書き込むことができる。なお、データ格納部201にデータを書き込むことは、データ格納部201内のデータD1,D2,……,Dnを書き換えることを含む。
データ格納部201は、サーバ20によってアクセス可能なデータを格納する記憶媒体である。データ格納部201は、例えば、サーバ20内に設けられるか、あるいはネットワーク30やケーブルを介して接続される、ストレージ(例えば、HDD、SSD等)やメモリ(例えば、DRAM、SRAM等)である。
データアクセス監視部212は、タスクの処理に応じたデータ格納部201へのアクセスを監視し、タスクの処理に応じてデータ格納部201から読み出されたデータと、タスクの処理に応じてデータ格納部201に書き込まれたデータとを検出する。データアクセス監視部212は、例えば、タスク毎に、読み出されたデータと書き込まれたデータとを示す情報(例えば、ファイル名)を設定用端末10に送信する。
設定用端末10のアクセス記録生成部113は、サーバ20のデータアクセス監視部212によって送信された、タスク毎の読み出されたデータと書き込まれたデータとを示す情報を用いて、アクセスデータ表102を生成する。アクセス記録生成部113は、構成管理ツール112から、サーバ20によって処理されるタスクの識別情報や処理順序をさらに取得して、アクセスデータ表102を生成してもよい。
図8は、アクセスデータ表102の例を示す。アクセスデータ表102は、サーバ20によって処理された構成定義101に記述された複数のタスクに対応する複数のエントリを含む。各エントリは、例えば、順序、タスク、読み出されたデータ、および書き込まれたデータを含む。
あるタスクに対応するエントリにおいて、「順序」は、そのタスクが処理された順序を示す。「順序」に示される値は、例えば、構成定義101においてそのタスクが記述された順序に対応する。
「タスク」は、対応するタスクを識別するための情報を示す。「タスク」は、例えば、構成定義101において記述されたそのタスクのID(あるいは名称)を示す。
「読み出されたデータ」は、対応するタスクが処理されたことに応じて読み出されたデータを特定可能な情報を示す。読み出されたデータは、例えば、ファイル、XMLのような構造化されたファイルの少なくとも一部、メモリまたはデータベース内のレコードやその一部、等である。そのため、読み出されたデータを特定可能な情報には、例えば、ファイル名(ファイルパス)、構造化されたファイル内の読み出された要素を特定する情報、メモリまたはデータベース内のレコードを特定する情報、等が含まれ得る。
なお、タスクの処理に応じて読み出されたデータがなければ、「読み出されたデータ」には値が設定されない。また、タスクの処理に応じて複数のデータが読み出されたならば、「読み出されたデータ」には、それら複数のデータをそれぞれ特定可能な複数の情報が設定される。
「書き込まれたデータ」は、対応するタスクが処理されたことに応じて書き込まれたデータを特定可能な情報を示す。書き込まれたデータは、例えば、ファイル、XMLのような構造化されたファイルの少なくとも一部、メモリまたはデータベース内のレコード、等である。そのため、書き込まれたデータを特定可能な情報には、例えば、ファイル名(ファイルパス)、構造化されたファイル内の書き込まれた(あるいは、書き換えられた)要素を特定する情報、メモリまたはデータベース内のレコードを特定する情報、等が含まれ得る。
なお、タスクの処理に応じて書き込まれたデータがなければ、「書き込まれたデータ」には値が設定されない。また、タスクの処理に応じて複数のデータが書き込まれたならば、「書き込まれたデータ」には、それら複数のデータをそれぞれ特定可能な複数の情報が設定される。
図8に示す例では、アクセスデータ表102に4つのエントリが含まれ、以下の内容を示している。
(1)1番目のタスクT1の処理に応じて、データD1およびデータD2が読み出され、データD3およびデータD4が書き込まれた。
(2)2番目のタスクT2の処理に応じて、データD3が読み出され、データD3が書き込まれた。
(3)3番目のタスクT3の処理に応じて、データD5が書き込まれた。
(4)4番目のタスクT4の処理に応じて、データD3、データD4、およびデータD5が読み出され、データD6、データD7、およびデータD8が書き込まれた。
依存関係解析部114は、アクセスデータ表102を用いてタスク間の依存関係を検出する。依存関係解析部114は、アクセスデータ表102を用いて、第1タスクの処理に応じて書き込まれ、且つ第1タスクの処理よりも後の第2タスクの処理に応じて読み出されたデータを検出する。このようなデータが検出された場合、第2タスクは、第1タスクによって書き込まれたデータを読み出しているので、第2タスクは第1タスクに依存していると云える。
図8に示したアクセスデータ表102が用いられる場合、依存関係解析部114は以下の検出結果(1)-(5)を取得する。
検出結果(1) タスクT1によって書き込まれた後に、タスクT2によって読み出されたデータD3
検出結果(2) タスクT1によって書き込まれた後に、タスクT4によって読み出されたデータD3
検出結果(3) タスクT1によって書き込まれた後に、タスクT4によって読み出されたデータD4
検出結果(4) タスクT2によって書き込まれた後に、タスクT4によって読み出されたデータD3
検出結果(5) タスクT3によって書き込まれた後に、タスクT4によって読み出されたデータD5
依存関係解析部114は、決定された検出結果(1)-(5)に基づいて依存関係表103を作成する。
図9は、依存関係表103の例を示す。サーバ20によって処理された構成定義101に記述された複数のタスクに対応する複数のエントリを含む。各エントリは、例えば、タスクと依存するタスクリストとを含む。あるタスクに対応するエントリにおいて、「タスク」は、そのタスクを識別するための情報を示す。
また、「依存するタスクリスト」は、そのタスクが依存するタスク、すなわち、そのタスクよりも前に処理されなければならないタスクのリストを示す。あるタスクが別のタスクに依存している場合、そのタスクよりも前に、依存する別のタスクが処理されなければならない。したがって、あるタスクよりも前に、対応する「依存するタスクリスト」に示される全てのタスクが処理されなければならない。つまり、「依存するタスクリスト」は、タスクの処理順序に関する制約を示していると云える。
図9に示すように、上述した検出結果(1)-(5)に基づいて作成された依存関係表103では、タスクT1,T3には依存するタスクがなく、タスクT2がタスクT1に依存し、タスクT4がタスクT1,T2,T3に依存することが示されている。
なお、データアクセス監視部212、アクセス記録生成部113、および依存関係解析部114は、依存関係分析モジュール1Aを構成する。この依存関係分析モジュール1Aでは、サーバ20と設定用端末10とが連携して、構成定義101に基づくタスクの依存関係を解析する。
違反検査部115は、違反検出部115Aと違反通知部115Bとを備える。違反検出部115Aは、依存関係表103を用いて、以下の制約(1)-(4)を決定することができる。
制約(1) タスクT2がタスクT1に依存するので、タスクT1の後にタスクT2が処理されなければならない。
制約(2) タスクT4がタスクT1に依存するので、タスクT1の後にタスクT4が処理されなければならない。
制約(3) タスクT4がタスクT2に依存するので、タスクT2の後にタスクT4が処理されなければならない。
制約(4) タスクT4がタスクT3に依存するので、タスクT3の後にタスクT4が処理されなければならない。
違反検出部115Aは、決定された制約に基づき、リファクタリング後の構成定義104を検査する。リファクタリング後の構成定義104は、例えば、管理者が構成定義エディタ111を用いて、リファクタリング前の構成定義101に記述されたタスクの順序を変更したものである。違反検出部115Aは、リファクタリング後の構成定義104におけるタスクの処理順序を検出する。そして、違反検出部115Aは、検出されたタスクの処理順序が、制約に示されるタスクの処理順序を満たしているか、それとも制約に示されるタスクの処理順序に違反しているかを決定する。
違反通知部115Bは、リファクタリング後の構成定義104に記述されたタスクが、いずれの制約にも違反していない場合、制約に違反していないことを示す検査結果105を通知する。また、違反通知部115Bは、リファクタリング後の構成定義104に記述されたタスクが、ある制約に違反している場合、当該制約に違反していること示す検査結果105を通知する。この通知において、違反通知部115Bは、例えば、どのタスク間で、どのデータに関して、違反が発生しているかを示す情報を、画面等に出力する。
図10は、違反通知部115Bによって通知される検査結果105の例を示す。違反通知部115Bは、検査結果105を、例えば、設定用端末10の画面に表示する。
図10(A)は、制約に違反するタスクがなかった場合に通知される検査結果105-1を示す。この検査結果105-1では、例えば、「タスクの順序に問題は見つかりませんでした」というメッセージが画面に表示される。管理者は、この検査結果105-1により、リファクタリング後の構成定義104(すなわち、タスクの順序が変更された構成定義)が、サーバ20のセットアップ結果に影響を与えないことを認識できる。
これに対して、図10(B)は、制約に違反するタスクがあった場合に通知される検査結果105-2を示す。この検査結果105-2では、例えば、「タスクの順序に問題が見つかりました」というメッセージが画面に表示され、さらに、いずれのタスク間の順序に問題があったかを説明するメッセージが表示される。例えば、「タスクT2はタスクT1にデータD3について依存しますが、T1はT2よりも前に処理されません」といったメッセージのように、制約に違反した順序関係を有する二つのタスクと、その違反によりセットアップ結果に影響を与えるデータとが特定可能な情報が示される。
これにより、管理者は、順序関係に問題のある二つのタスクを認識できると共に、いずれのデータについてその問題が発生しているのかを認識することができる。したがって、管理者は、リファクタリング後の構成定義104を、タスクの順序関係に問題が発生しないように(すなわち、制約に違反しないように)適切に変更することができる。
以上の構成により、サーバ20のセットアップ結果に影響を与えることなく構成定義をリファクタリングすることができる。リファクタリング前の構成定義101を用いたセットアップにおいて、各タスクの処理に応じて読み出されたデータと書き込まれたデータとを示す情報が取得され、この情報に基づいてタスク間の処理順序の制約が決定される。
本実施形態では、リファクタリング前の構成定義101を用いたセットアップ結果とリファクタリング後の構成定義104を用いたセットアップ結果とを比較するのではなく、タスク間の処理順序の制約を用いて、リファクタリング後の構成定義104に、処理順序の制約に違反しているタスクがあるかどうかが判定される。これにより、リファクタリング後の構成定義104を用いたセットアップが実行される前のサーバ20の状態(例えば、ファイルの有無)に関わらず、セットアップ結果に影響を与える違反を見つけることができる。また、各タスクの処理に応じて読み出されたデータと書き込まれたデータとを示す情報を利用するので、タスク内で用いられるコマンドの種類に依らず、例えば、OSに組み込まれたプログラムモジュールを動作させるコマンドが用いられる場合にも、セットアップ結果に影響を与える違反を漏れなく見つけることができる。
したがって、管理者が構成定義をリファクタリングしたことによって、誤ってセットアップ結果を変えてしまうこと、あるいはセットアップ時にエラーが発生することを未然に防ぐことができる。
次いで、図11から図13を参照して、リファクタリングされた構成定義を用いてサーバ20をセットアップするための処理の手順について説明する。
まず、図11のフローチャートは、設定用端末10によって実行される解析処理の手順の例を示す。ここでは、この解析処理において、構成定義101を用いたサーバ20のセットアップが解析される場合について例示する。
まず、設定用端末10は、第1の順序に従って、構成定義101に記述された複数のタスクの内の1つのタスクをサーバ20に処理させる(ステップS11)。第1の順序は、例えば、構成定義101において複数のタスクが記述された順序に対応する。設定用端末10は、例えば、構成管理ツール112を用いて、そのタスクを処理することをサーバ20に要求する。サーバ20は、設定用端末10による要求に応じてタスクを処理する。
設定用端末10は、タスクの処理に応じてアクセスされたデータを記録する(ステップS12)。サーバ20では、タスクの処理中に、そのタスクの処理に応じて読み出されたデータと書き込まれたデータとが検出される。設定用端末10は、検出された、読み出されたデータと書き込まれたデータとを示す情報がタスク毎に記録されたアクセスデータ表102を生成する。
そして、設定用端末10は、構成定義101に記述されたすべてのタスクが処理されたか否かを判定する(ステップS13)。すべてのタスクが処理されていない場合(ステップS13のNO)、ステップS11に戻り、第1の順序に従って、後続するタスクが処理される。
すべてのタスクが処理された場合(ステップS13のYES)、設定用端末10は、それらタスクから、処理された順序(すなわち、第1の順序)に従って、1つのタスクTを選択する(ステップS14)。なお、処理された順序が1番目であるタスクが他のタスクに依存していないことは自明であるため、1番目のタスクはスキップして、2番目のタスクから選択されるようにしてもよい。そして、設定用端末10は、タスクTよりも前に処理された1つのタスクSを選択する(ステップS15)。
設定用端末10は、アクセスデータ表102を用いて、選択されたタスクTを処理するためのプロセスが、このタスクTのプロセスよりも前に実行された、タスクSを処理するためのプロセスが書き込んだデータを読み出したか否かを判定する(ステップS16)。つまり、設定用端末10は、タスクSの処理に応じて書き込まれ、且つタスクSよりも後のタスクTの処理に応じて読み出されたデータがあるか否かを判定する。
選択されたタスクTを処理するためのプロセスが、このタスクTのプロセスよりも前に実行された、タスクSを処理するためのプロセスが書き込んだデータを読み出していた場合(ステップS16のYES)、設定用端末10は、依存関係表103において、タスクTが依存するタスクリストにタスクSを追加する(ステップS17)。タスクTが依存するタスクリストには、複数のタスクが追加されてもよい。
一方、選択されたタスクTを処理するためのプロセスが、このタスクTのプロセスよりも前に実行された、タスクSを処理するためのプロセスが書き込んだデータを読み出していない場合には(ステップS16のNO)、ステップS17がスキップされる。
次いで、設定用端末10は、タスクTよりも前に処理された別のタスクSがあるか否かを判定する(ステップS18)。別のタスクSがある場合(ステップS18のYES)、ステップS15に戻り、別のタスクSとタスクTとの依存関係を解析するための処理が実行される。
別のタスクSがない場合(ステップS18のNO)、すなわち、タスクTよりも前に処理されたすべてのタスクSについて、タスクTとの依存関係が解析済みである場合、設定用端末10は、構成定義101に基づいて処理された複数のタスクに、依存関係を解析すべき別のタスクTがあるか否かを判定する(ステップS19)。別のタスクTがある場合(ステップS19のYES)、ステップS14に戻り、別のタスクTの依存関係を解析するための処理が実行される。
別のタスクTがない場合(ステップS19のNO)、処理を終了する。
以上により、構成定義101に基づくタスクの処理に応じて読み出されたデータと書き込まれたデータとが検出され、タスクの依存関係が解析されることにより、依存関係表103を取得することができる。
図12のフローチャートは、設定用端末10によって実行されるセットアップ制御処理の手順の例を示す。ここでは、設定用端末10が、構成定義101をリファクタリングした構成定義104を用いて、サーバ20をセットアップしようとする場合について例示する。なお、このセットアップ制御処理が開始される前に、構成定義101を用いた、上述した解析処理が実行済みであるものとする。
まず、設定用端末10は、構成定義エディタ111を用いて、構成定義101が変更されたか否かを判定する(ステップS21)。構成定義101が変更されていない場合(ステップS21のNO)、ステップS21に戻り、構成定義101が変更されたか否かが再度判定される。
構成定義101が変更された場合(ステップS21のYES)、設定用端末10は、リファクタリング後の構成定義104が、リファクタリング前の構成定義101に基づく制約に違反していないかどうかを検査するための検査処理を実行する(ステップS22)。検査処理では、構成定義104が制約に違反しているかどうかを示す通知が出力(例えば、画面に表示)される。検査処理については、図13のフローチャートを参照して後述する。
設定用端末10は、検査処理の結果に基づいて、リファクタリング後の構成定義104が制約に違反しているか否かを判定する(ステップS23)。リファクタリング後の構成定義104が制約に違反していない場合(ステップS23のNO)、設定用端末10は、リファクタリング後の構成定義104をサーバ20に適用するか否かを判定する(ステップS24)。設定用端末10は、例えば、管理者による入力(操作)に応じて、リファクタリング後の構成定義104をサーバ20に適用するか否かを判定する。管理者は、例えば、リファクタリング後の構成定義104の編集を終了して、サーバ20に適用する場合に、適用を指示するための操作を行ってもよい。また、管理者は、例えば、リファクタリング後の構成定義104の編集を続行する場合に、リファクタリング後の構成定義104をサーバ20に適用せず、構成定義エディタ111を用いた編集作業の再開を指示するための操作を行ってもよい。
リファクタリング後の構成定義104をサーバ20に適用する場合(ステップS24のYES)、設定用端末10は、リファクタリング後の構成定義104に記述された複数のタスクを第2の順序でサーバ20に処理させる(ステップS25)。第2の順序は、例えば、リファクタリング後の構成定義104において複数のタスクが記述された順序に対応する。設定用端末10は、例えば、構成管理ツール112を用いて、タスクの処理をサーバ20に要求する。サーバ20は、設定用端末10による要求に応じてタスクを処理する。これにより、サーバ20がセットアップされる。
一方、リファクタリング後の構成定義104をサーバ20に適用しない場合(ステップS24のNO)、ステップS21に戻り、サーバ20のセットアップ結果に影響を与えることなく構成定義をリファクタリングするための処理が続行される。
また、リファクタリング後の構成定義104が制約に違反している場合(ステップS23のYES)、設定用端末10は、違反している構成定義を修正するか否かを判定する(ステップS26)。設定用端末10は、例えば、管理者による入力に応じて、違反している構成定義を修正するか否かを判定する。管理者は、例えば、検査処理によって検出された違反が、サーバ20のセットアップ結果に影響を与えるものであると認識した場合に、違反したタスクの記述を修正することを示す操作を行ってもよい。また、管理者は、例えば、検査処理によって検出された違反が誤りであると認識した場合に、違反したタスクの記述を修正しないことを示す操作を行ってもよい。
違反している構成定義を修正する場合(ステップS26のYES)、ステップS21に戻り、構成定義エディタ111を用いた編集作業が再開される。
一方、違反している構成定義を修正しない場合(ステップS26のNO)、設定用端末10は、リファクタリング後の構成定義104について解析処理を実行し(ステップS27)、ステップS21に戻る。解析処理については、図11のフローチャートを参照して上述した通りである。この解析処理により、リファクタリング後の構成定義104に記述された複数のタスクがサーバ20によって処理され、アクセスデータ表102と依存関係表103とが更新される。そして、更新された依存関係表103を用いた検査処理が実行されることになる。なお、ステップS27の解析処理が実行された後、構成定義104の編集を続行するためのステップS21ではなく、検査処理を実行するためのステップS22に進んでもよい。
図13のフローチャートを参照して、設定用端末10によって実行される検査処理の手順の例を説明する。検査処理では、リファクタリング後の構成定義104が、リファクタリング前の構成定義101に基づくタスクの依存関係の制約に違反するものでないかが検査される。
まず、設定用端末10は、違反フラグを初期化(クリア)する(ステップS301)。違反フラグは、リファクタリング後の構成定義104がタスクの依存関係の制約に違反しているか否かを示す。違反フラグがクリアされた状態は、違反が見つかっていないことを表す。一方、違反フラグが立っている状態は、違反が見つかったことを表す。
次に、設定用端末10は、リファクタリング後の構成定義104に記述された複数のタスクの処理順序を検出する(ステップS302)。検出されるタスクの処理順序は、例えば、構成定義104において、複数のタスクが記述された順序に対応する。
設定用端末10は、リファクタリング後の構成定義104に含まれる複数のタスクから、1つのタスクTを選択する(ステップS303)。設定用端末10は、リファクタリング前の構成定義101についての解析処理で得られた依存関係表103を用いて、タスクTが依存するタスクリストから1つのタスクSを選択する(ステップS304)。そして、設定用端末10は、ステップS302で検出されたタスクの処理順序において、タスクSがタスクTよりも前に存在するか否かを判定する(ステップS305)。
タスクSがタスクTよりも前に存在しない場合(ステップS305のNO)、すなわち、タスクSがタスクTよりも後に存在する場合、設定用端末10は、違反フラグを立て(ステップS306)、タスクSとタスクTとの依存関係の制約に対する違反があることを出力する(ステップS307)。設定用端末10は、例えば、タスクSとタスクTとの依存関係の制約に対する違反があることを示す通知を画面に表示する。
一方、タスクSがタスクTよりも前に存在する場合(ステップS305のYES)、ステップS306およびステップS307がスキップされる。
次いで、タスクTが依存するタスクリストに別のタスクSがあるか否かを判定する(ステップS308)。別のタスクSがある場合(ステップS308のYES)、ステップS304に戻り、タスクTと別のタスクSとの依存関係が検査される。つまり、ステップS304からステップS308の手順では、タスクTが依存する全てのタスクSについて、各タスクSがタスクTよりも前に処理されるかどうかが検査される。
別のタスクSがない場合(ステップS308のNO)、すなわち、タスクTと、タスクTが依存するタスクリストに含まれるすべてのタスクSとの間の依存関係が検査された場合、設定用端末10は、リファクタリング後の構成定義104に別のタスクTがあるか否かを判定する(ステップS309)。別のタスクTがある場合(ステップS309のYES)、ステップS303に戻り、別のタスクTに関する依存関係が検査される。
別のタスクTがない場合(ステップS309のNO)、すなわち、リファクタリング後の構成定義104に含まれるすべてのタスクTに関する依存関係が検査された場合、設定用端末10は、違反フラグが立っているか否かを判定する(ステップS310)。違反フラグが立っている場合(ステップS310のYES)、処理を終了する。
一方、違反フラグがクリアされた状態である場合(ステップS310のNO)、設定用端末10は、リファクタリング後の構成定義104に含まれるタスクの処理順序に問題がなかったことを出力し(ステップS311)、処理を終了する。設定用端末10は、例えば、タスクの処理順序に問題がなかったことを示す通知を画面に表示する。
以上により、リファクタリング後の構成定義104が、リファクタリング前の構成定義101と等価であるかどうかが検証され、これら構成定義101,104が等価である場合に、リファクタリング後の構成定義104を用いてサーバ20をセットアップすることができる。
図14は、設定用端末10によって表示されるコマンド入力画面51の例を示す。コマンド入力画面51では、設定用端末10に実行させる任意のコマンドを、キーボード等を用いて入力することができる。
図14に示す例では、管理者は、リファクタリング後の構成定義104のファイル“xxx.yml”が、タスクの依存関係に関する制約に違反していないかどうかを検査するためのコマンド“check xxx.yml”511を入力している。
入力されたコマンド511に応じて、構成定義104のファイル“xxx.yml”が検査された結果、タスクT2とタスクT1とが制約に違反していることを示す通知512が画面51に表示される。さらに、この違反を解消するために推奨される変更を示す通知513も画面51に表示されている。管理者は、このような通知512,513に基づき、構成定義104のファイル“xxx.yml”を適切に修正することができる。
なお、コマンド入力画面ではなく、構成定義を編集するための構成定義エディタ111の画面上で、構成定義の検査結果が出力されるようにしてもよい。
図15は、設定用端末10において、構成定義エディタ111を用いた構成定義の編集中に検査結果が表示されるエディタ画面55の例を示す。
図15(A)に示すように、エディタ画面55は、編集領域551と通知領域552とを含む。編集領域551には、編集中の構成定義の内容が表示される。管理者は、キーボードやポインティングデバイス等を用いた操作により、タスクの追加やタスクの順序の変更等を行い、表示されている構成定義の内容を変更することができる。
通知領域552には、編集中の構成定義の検査結果が表示される。図15(A)に示す例では、タスクT1とタスクT2とが依存関係の制約に違反していることが通知されている。例えば、タスクT1,T2が処理される順序を変更することを示す、管理者による操作(入力)を受け付けたとき、変更された順序で処理されるタスクT1,T2が、ある依存関係の制約に違反しているならば、当該制約に違反していることが通知領域552に表示される。
通知領域552には、例えば、編集領域551に表示されている構成定義の内容を変更する操作を受け付けたとき、その変更された内容に対する検査結果が表示される。また、管理者によって検査結果を要求する操作が行われたことに応じて、あるいは一定時間毎に、編集領域551に表示されている構成定義の内容に対する検査結果が、通知領域552に表示されるようにしてもよい。
また、編集領域551では、検査結果に応じて、違反に該当するタスクが他のタスクとは識別できるように表示されてもよい。例えば、タスクT1とタスクT2とが依存関係の制約に違反している場合、それらタスクT1,T2の記載箇所553,554に対して、線を引く、色を変更する、太字にする等のような、識別可能な装飾が施される。
さらに、制約に違反しているタスクT1の記載箇所553に関連付けて、例えば、タスクT1の記載箇所553の近傍に、ボタン555が表示されてもよい。
図15(B)に示すように、このボタン555を押し下げる操作が行われたことに応じて、違反を解消するために推奨される構成定義の変更を示す通知556が表示される。この通知556には、例えば、タスクT2をタスクT1の後に移動することを示す項目557と、解析処理を再実行することを示す項目558とが含まれている。
これら項目557,558のいずれかを選択する操作に応じて、選択された項目に対応する処理が実行されてもよい。例えば、項目557が選択された場合、編集領域551において、タスクT2に対応する記述がタスクT1に対応する記述の後に移動される。また、項目558が選択された場合、例えば、編集領域551に表示されている構成定義についての解析処理が実行される。この項目558は、例えば、管理者が、制約に違反しているという通知が適切でないと判断した場合に選択される。
このようなグラフィカルユーザインタフェースが用いられることにより、構成定義をリファクタリングするための管理者による作業をより効率化することができる。
(第2実施形態)
第2実施形態では、第1実施形態の構成のより具体的な実装例を示す。第2実施形態に係る管理システム1の構成は第1実施形態の管理システム1と同様であり、第2実施形態と第1実施形態とでは、構成管理ツール112、アクセス記録生成部113、および依存関係解析部114によって実行される処理の手順のみが異なる。以下、第1実施形態と異なる点を主に説明する。
また、ここでは、構成管理ツール112としてAnsibleが用いられ、データアクセス監視部212を実装するためにfanotify APIが用いられ、またタスクの処理中に監視されるデータがファイルであることを想定する。fanotifyは、Linux(登録商標)のカーネルに設けられているファイルシステムの状態変化を通知する機構である。
図16は、管理システム1に設けられる設定用端末10とサーバ20との機能構成を示す。構成定義エディタ111は、管理者による操作に応じて構成定義101(リファクタリング前の構成定義)を生成する。
図17は構成定義101の例を示す。この構成定義101には、4つのタスクT1,T2,T3,T4が記述されている。図3を参照して上述したように、記述された各タスクには、ID、コマンド、およびパラメータが含まれている。
Ansibleである構成管理ツール112は、構成定義101に記述されたタスクを、先頭から順にサーバ20に処理させると共に、タスクの処理履歴102Bを生成する。
図18は、構成管理ツール112によって生成されるタスクの処理履歴102Bを示す。タスクの処理履歴102Bは、構成管理ツール112を用いてサーバ20に処理させたタスクT1~T4と、これらタスクT1~T4を処理するためにサーバ20上で実行されたプロセスP1~P4との対応を示す複数のエントリを含む。これらエントリは、タスクT1~T4の処理順に並べられている。
図19に示すように、構成管理ツール112は、あるタスクを処理するためのプロセスの実行過程106Aにおいて、サーバ20に投入されたコマンド106Bを取得し、このコマンド106Bに関連付けられたプロセスを記録する機能を有している。この機能を用いることにより、タスクの処理履歴102Bを作成することができる。なお、タスクの処理履歴102Bには、取得されたコマンド106Bがさらに記録されていてもよい。
このタスクの処理履歴102Bにより、タスクT1,T2,T3,T4がプロセスP1,P2,P3,P4とそれぞれ対応し、タスクT1,T2,T3,T4の順に処理されたこと(すなわち、プロセスP1,P2,P3,P4の順に実行されたこと)が分かる。
サーバ20のタスク実行部211は、構成管理ツール112による要求に応じて、タスクを処理するためのプロセスを実行する。タスク実行部211は、タスクに対応するプロセスの実行に応じて、データ格納部201に格納されたいずれかのファイルF1,F2,……,Fnを読み出し、またデータ格納部201にファイルを書き込むことができる。なお、データ格納部201にファイルを書き込むことは、データ格納部201内のファイルF1,F2,……,Fnを書き換えることを含む。
データアクセス監視部212は、プロセスの実行に応じたデータ格納部201へのアクセスを監視し、プロセスの実行に応じてデータ格納部201から読み出されたファイルと、プロセスの実行に応じてデータ格納部201に書き込まれたファイルとを検出する。このような検出は、Linuxカーネルによって提供されるfanotify機能を用いて実現できる。データアクセス監視部212は、fanotify機能を用いることにより、ファイルアクセス時に任意のフック処理を追加することができ、例えば、あるプロセスがあるファイルに対する読み出しや書き込みを行ったといったイベントの発生を検出することができる。データアクセス監視部212は、検出されたイベントに基づき、例えば、プロセス毎に、プロセスを識別するための情報と、読み出されたファイルおよび書き込まれたファイルを示す情報(例えば、ファイル名)とを設定用端末10に送信する。
なお、プロセスを識別するための情報には、ファイルに実際にアクセスしたプロセスだけでなく、そのプロセスを呼び出した親のプロセスの情報も含まれ得る。あるいは、プロセスを識別するための情報に、ファイルに実際にアクセスしたプロセスではなく、そのプロセスを呼び出した親のプロセスの情報が含まれてもよい。また、プロセスを識別するための情報には、このプロセスを発生させるトリガとなったコマンドを示す情報が含まれていてもよい。
設定用端末10のアクセス記録生成部113は、サーバ20のデータアクセス監視部212によって送信された、プロセス毎の読み出されたファイルと書き込まれたファイルとを示す情報を用いて、アクセスファイル表102Aを生成する。
図20は、構成定義101に記述されたタスクT1~T4がそれぞれ、プロセスP1~P4のいずれかとして実行される場合に、各プロセスの実行に応じて読み出されたファイルと書き込まれたファイルとを示すアクセスファイル表102Aを示す。
図8を参照して上述したアクセスデータ表102では、タスク毎に、そのタスクが処理されたことに応じて読み出されたデータと書き込まれたファイルとが示されている。これに対して、このアクセスファイル表102Aでは、プロセス毎に、そのプロセスが実行されたことに応じて読み出されたファイルと書き込まれたファイルとが示されている。このアクセスファイル表102Aのみでは、プロセスP1~P4のそれぞれが、タスクT1~T4のいずれに対応するのかは不明である。
依存関係解析部114は、アクセスファイル表102Aとタスクの処理履歴102Bとを用いて、タスク間の依存関係を検出する。依存関係解析部114は、タスクの処理履歴102Bにより、処理順に並べられたタスクT1~T4それぞれとプロセスP1~P4それぞれとの対応が示されるので、プロセスP1~P4の実行順を取得できる。依存関係解析部114は、このプロセスP1~P4の実行順に基づき、アクセスファイル表102Aを用いて、タスクT1~T4にそれぞれ対応するプロセスP1~P4間の依存関係を検出する。したがって、アクセスファイル表102Aとタスクの処理履歴102Bとを用いることにより、図8を参照して上述したアクセスデータ表102と同等の情報が得られる。
図20に示す例では、プロセスP1の実行(すなわち、タスクT1の処理)に応じて書き込まれたファイル“smb.conf”は、プロセスP1の実行よりも後のプロセスP2の実行(すなわち、タスクT2の処理)に応じて読み出されている。したがって、プロセスP2に対応するタスクT2は、プロセスP1に対応するタスクT1に依存する。
プロセスP1の実行(すなわち、タスクT1の処理)に応じて書き込まれたファイル“smb.conf”は、プロセスP1の実行よりも後のプロセスP4の実行(すなわち、タスクT4の処理)に応じて読み出されている。したがって、プロセスP4に対応するタスクT4は、プロセスP1に対応するタスクT1に依存する。
プロセスP2の実行(すなわち、タスクT2の処理)に応じて書き込まれたファイル“smb.conf”は、プロセスP2の実行よりも後のプロセスP4の実行(すなわち、タスクT4の処理)に応じて読み出されている。したがって、プロセスP4に対応するタスクT4は、プロセスP2に対応するタスクT2に依存する。
プロセスP1の実行(すなわち、タスクT1の処理)に応じて書き込まれたファイル“smbd”は、プロセスP1の実行よりも後のプロセスP4の実行(すなわち、タスクT4の処理)に応じて読み出されている。したがって、プロセスP4に対応するタスクT4は、プロセスP1に対応するタスクT1に依存する。
また、プロセスP3の実行(すなわち、タスクT3の処理)に応じて書き込まれたファイル“/srv/data/”は、プロセスP3の実行よりも後のプロセスP4の実行(すなわち、タスクT4の処理)に応じて読み出されている。したがって、プロセスP4に対応するタスクT4は、プロセスP3に対応するタスクT3に依存する。
依存関係解析部114は、検出されたタスク間の依存関係に基づき、図21に示す依存関係表103を作成する。この依存関係表103では、タスクT1,T3には依存するタスクがなく、タスクT2がタスクT1に依存し、タスクT4がタスクT1,T2,T3に依存することが示されている。
第1実施形態と同様に、データアクセス監視部212、アクセス記録生成部113、および依存関係解析部114は、依存関係分析モジュール1Aを構成する。この依存関係分析モジュール1Aでは、サーバ20と設定用端末10とが連携して、構成定義101に基づくタスクの依存関係を解析する。
次いで、図22は、リファクタリング前の構成定義101に対して、タスクT3とタスクT4の順序が入れ替えられた、リファクタリング後の構成定義104を示す。このリファクタリング後の構成定義104に基づくタスクの処理順序は、タスクT1、タスクT2、タスクT4、タスクT3の順である。
違反検査部115は、違反検出部115Aと違反通知部115Bとを備える。違反検出部115Aは、依存関係表103を用いて、タスク間の依存関係に基づく制約を決定する。違反検出部115Aは、例えば、タスクT1の後にタスクT2が処理されなければならないことを示す制約と、タスクT1,T2,T3の後にタスクT4が処理されなければならないことを示す制約とを決定する。そして、違反検出部115Aは、決定された制約に基づき、リファクタリング後の構成定義104を検査する。
図21に示す依存関係表103を用いて、図22に示すリファクタリング後の構成定義104が検査される場合、違反検出部115Aは、リファクタリング後の構成定義104において、タスクT3に依存するタスクT4がタスクT3よりも前に処理されるので、制約に違反していることを検出する。
違反通知部115Bは、制約に違反していることを示す検査結果105を通知する。違反通知部115Bは、アクセスファイル表102Aおよびタスクの処理履歴102Bを用いて、どのファイルについて、制約に違反しているかを取得してもよい。例えば、図18のアクセスファイル表102Aおよび図20のタスクの処理履歴102Bが用いられる場合、タスクT4はタスクT3にファイル“/srv/data/”について依存していることが分かる。
この場合、違反通知部115Bは、図23に示すように、タスクT4がタスクT3にファイル“/srv/data/”について依存するにも関わらず、タスクT3がタスクT4よりも前に実行されないことを示す検査結果105-3を通知することができる。
以上の構成により、リファクタリング後の構成定義104がセットアップ結果に影響を与えるか否かが管理者に通知されるので、リファクタリングによって、誤ってセットアップ結果を変えてしまうこと、あるいはセットアップ時にエラーが発生することを未然に防ぐことができる。したがって、サーバ20のセットアップ結果に影響を与えることなく構成定義をリファクタリングすることができる。
(第3実施形態)
第1実施形態では、サーバ20内のデータアクセス監視部212と、設定用端末10内のアクセス記録生成部113および依存関係解析部114とが連携して依存関係分析モジュール1Aを構成している。これに対して、第3実施形態では、図24に示すように、データアクセス監視部212が設定用端末10に設けられ、設定用端末10が依存関係分析モジュール1Aを備えている。
第3実施形態に係る管理システム1の構成は第1実施形態の管理システム1と同様であり、第3実施形態と第1実施形態とでは、データアクセス監視部212が設定用端末10内に設けられることのみが異なる。以下、第1実施形態と異なる点のみを説明する。
図24に示すように、データアクセス監視部212は、ネットワーク30またはケーブルを介して、タスクの処理に応じたデータ格納部201へのアクセスを監視し、タスクの処理に応じてデータ格納部201から読み出されたデータと、タスクの処理に応じてデータ格納部201に書き込まれたデータとを検出する。データアクセス監視部212は、例えば、タスク毎に、読み出されたデータと書き込まれたデータとを示す情報(例えば、ファイル名)をアクセス記録生成部113に送出する。
他の構成については第1実施形態と同様であり、データアクセス監視部212が設定用端末10に設けられる場合にも、第1実施形態と同様の効果を得ることができる。
(第4実施形態)
第1実施形態では、サーバ20内のデータアクセス監視部212と、設定用端末10内のアクセス記録生成部113および依存関係解析部114とが連携して依存関係分析モジュール1Aを構成している。また、第3実施形態では、データアクセス監視部212が設定用端末10に設けられ、設定用端末10が依存関係分析モジュール1Aを備えている。
これらに対して、第4実施形態では、図25に示すように、データアクセス監視部212およびアクセス記録生成部113がサーバ20に設けられ、依存関係解析部114が設定用端末10に設けられる。
第4実施形態に係る管理システム1の構成は第1実施形態の管理システム1と同様であり、第4実施形態と第1実施形態とでは、アクセス記録生成部113がサーバ20内に設けられることのみが異なる。以下、第1実施形態と異なる点のみを説明する。
図25に示すように、データアクセス監視部212は、タスクの処理に応じたデータ格納部201へのアクセスを監視し、タスクの処理に応じてデータ格納部201から読み出されたデータと、タスクの処理に応じてデータ格納部201に書き込まれたデータとを検出する。データアクセス監視部212は、例えば、タスク毎に、読み出されたデータと書き込まれたデータとを示す情報(例えば、ファイル名)をアクセス記録生成部113に送出する。
アクセス記録生成部113は、データアクセス監視部212によって送出された、タスク毎の読み出されたデータと書き込まれたデータとを示す情報を用いて、アクセスデータ表102を生成し、設定用端末10(依存関係解析部114)に送信する。
他の構成については第1実施形態と同様であり、アクセス記録生成部113がサーバ20に設けられる場合にも、第1実施形態と同様の効果を得ることができる。
また、図26は、設定用端末10のシステム構成の例を示す。
設定用端末10は、CPU801、システムコントローラ802、主メモリ803、グラフィクスコントローラ804、BIOS-ROM805、不揮発性メモリ806、通信デバイス807、エンベデッドコントローラ/キーボードコントローラ(EC/KBC)808、LCD809、キーボード810、ポインティングデバイス811等を備える。
CPU801は、設定用端末10内の様々なコンポーネントの動作を制御するプロセッサである。CPU801は、ストレージデバイスである不揮発性メモリ806から主メモリ803にロードされる様々なプログラムを実行する。これらプログラムには、OS803A、および様々なアプリケーションプログラムが含まれている。アプリケーションプログラムには、構成管理プログラム803Bが含まれている。この構成管理プログラム803Bは、上述した構成定義エディタ111、構成管理ツール112、アクセス記録生成部113、依存関係解析部114、違反検査部115等の各機能を実現するための命令群を含む。
また、CPU801は、BIOS-ROM805に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
システムコントローラ802は、CPU801のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ802には、主メモリ803をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ802は、PCI EXPRESS規格のシリアルバスなどを介してグラフィクスコントローラ804との通信を実行する機能も有している。
グラフィクスコントローラ804は、設定用端末10のディスプレイモニタとして使用されるLCD809を制御する表示プロセッサである。このグラフィクスコントローラ804によって生成される表示信号はLCD809に送られる。LCD809は、表示信号に基づいて画面イメージを表示する。なお、LCD809は、設定用端末10の外部に設けられ、ケーブル等を介して設定用端末10に接続されてもよい。
通信デバイス807は、有線通信または無線通信を実行するように構成されたデバイスである。通信デバイス807は、信号を送信する送信部と、信号を受信する受信部とを含む。
EC/KBC808は、電力管理のためのエンベデッドコントローラと、キーボード810およびポインティングデバイス811を制御するキーボードコントローラとを内蔵したワンチップマイクロコンピュータである。EC/KBC808は、ユーザによる電源スイッチの操作に応じて設定用端末10を電源オンまたは電源オフする機能を有している。ポインティングデバイス811は、例えば、タッチパッドである。なお、ポインティングデバイス811は、USBコネクタ(図示せず)を介して接続されるマウスや、LCD809の上面に配置されるタッチパネルであってもよい。
また、図27は、サーバ20のシステム構成の例を示す。
サーバ20は、CPU91、システムコントローラ92、主メモリ93、BIOS-ROM94、不揮発性メモリ95、通信デバイス96、エンベデッドコントローラ(EC)97等を備える。
CPU91は、サーバ20内の様々なコンポーネントの動作を制御するプロセッサである。CPU91は、ストレージデバイスである不揮発性メモリ95から主メモリ93にロードされる様々なプログラムを実行する。これらプログラムには、OS93A、ミドルウェア93B、および様々なアプリケーションプログラム93Cが含まれている。OS93A、ミドルウェア93B、およびアプリケーションプログラム93Cは、上述したタスク実行部211、データアクセス監視部212等の各機能を実現するための命令群を含む。
また、CPU91は、BIOS-ROM94に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
システムコントローラ92は、CPU91のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ92には、主メモリ93をアクセス制御するメモリコントローラも内蔵されている。
通信デバイス96は、有線通信または無線通信を実行するように構成されたデバイスである。通信デバイス96は、信号を送信する送信部と、信号を受信する受信部とを含む。
EC97は、電力管理のためのエンベデッドコントローラを内蔵したワンチップマイクロコンピュータである。EC97は、ユーザによる電源スイッチの操作に応じてサーバ20を電源オンまたは電源オフする機能を有している。
以上説明したように、第1乃至第4実施形態によれば、セットアップ結果に影響を与えることなく構成定義をリファクタリングできる。サーバ20は、設定用端末10による要求に応じて、複数のタスクを第1の順序で処理する。設定用端末10は、サーバ20に複数のタスクを第1の順序で処理させる間に、複数のタスクの各々の処理に応じて読み出されたデータと書き込まれたデータとを示す情報を取得する。そして、設定用端末10は、この情報を用いて、複数のタスクの内の第1タスクの処理に応じて書き込まれ、且つ第1タスクの処理よりも後の第2タスクの処理に応じて読み出された第1データを検出する。
したがって、この第1データの検出に基づいて、例えば、第1タスクに依存する第2タスクがあって、これらの順序を誤って入れ替えた場合に、第2タスクが処理されるときに、第1タスクの処理により提供(生成)される第1データが存在しないことでセットアップに問題が生じることを、管理者に通知することができる。
また、第1乃至第4実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。これら実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
また、第1乃至第4実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、これら実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。