(57)【要約】      （修正有）【課題】分散型自動配備システムにおいて、構成部品リポジトリへのアクセス集中に伴う輻輳を防ぐ。【解決手段】配備装置１００の構成情報記憶部１１０は、複数の処理装置２００の各々に配備する１以上のコンポーネントを示す構成情報を記憶する。スクリプト生成部１３０は、構成情報をもとに、複数の処理装置２００の各々について、当該処理装置２００に配備される１以上のコンポーネントの各々の構成部品リポジトリ３００からの取得を含む配備処理と、他の処理装置２００との間で、１以上のコンポーネントの内の所定のコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述された、当該処理装置２００上で実行されるスクリプトを生成する。【選択図】図２
2015082225.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理装置の各々に配備する１以上のソフトウェアコンポーネントを示す構成情報を記憶する構成情報記憶手段と、
前記構成情報をもとに、前記複数の処理装置の各々について、当該処理装置に配備される前記１以上のソフトウェアコンポーネントの各々の構成部品記憶手段からの取得を含む配備処理と、他の処理装置との間で、前記１以上のソフトウェアコンポーネントの内の所定のソフトウェアコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述された、当該処理装置上で実行されるスクリプトを生成するスクリプト生成手段と、
を備える情報処理装置。
【請求項２】
前記同期モジュールとして、配備処理において他の処理装置の開始同期モジュールにメッセージを送信する完了同期モジュールと、配備処理において他の処理装置の前記完了同期モジュールからの前記メッセージを待ち受ける前記開始同期モジュールと、が用いられ、
前記スクリプト生成手段は、第１の処理装置の前記１以上のソフトウェアコンポーネントの配備処理列における前記所定のソフトウェアコンポーネントの配備処理の前に、第２の処理装置の前記完了同期モジュールからの前記メッセージを待ち受ける前記開始同期モジュールの配備処理を挿入し、前記第２の処理装置の前記１以上のソフトウェアコンポーネントの配備処理列における前記所定のソフトウェアコンポーネントの配備処理の後に、前記第１の処理装置の前記開始同期モジュールへ前記メッセージを送信する前記完了同期モジュールの配備処理を挿入することにより、前記スクリプトを生成する、
請求項１に記載の情報処理装置。
【請求項３】
前記スクリプト生成手段は、前記所定のソフトウェアコンポーネントの配備処理を同時に実行する処理装置の数が、所定数以下となるように、前記同期モジュールの配備処理が記述された前記スクリプトを生成する、
請求項１または２に記載の情報処理装置。
【請求項４】
前記所定のソフトウェアコンポーネントは、前記１以上のソフトウェアコンポーネントの内のサイズが所定値以上のコンポーネントである、
請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
さらに、前記複数の処理装置の各々に、当該処理装置に対して生成されたスクリプトを配布するスクリプト配布手段を備える、
請求項１から４のいずれかに記載の情報処理装置。
【請求項６】
複数の処理装置の各々に配備する１以上のソフトウェアコンポーネントを示す構成情報を記憶し、
前記構成情報をもとに、前記複数の処理装置の各々について、当該処理装置に配備される前記１以上のソフトウェアコンポーネントの各々の構成部品記憶手段からの取得を含む配備処理と、他の処理装置との間で、前記１以上のソフトウェアコンポーネントの内の所定のソフトウェアコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述された、当該処理装置上で実行されるスクリプトを生成する、
配備方法。
【請求項７】
前記同期モジュールとして、配備処理において他の処理装置の開始同期モジュールにメッセージを送信する完了同期モジュールと、配備処理において他の処理装置の前記完了同期モジュールからの前記メッセージを待ち受ける前記開始同期モジュールと、が用いられ、
前記スクリプトを生成する場合、第１の処理装置の前記１以上のソフトウェアコンポーネントの配備処理列における前記所定のソフトウェアコンポーネントの配備処理の前に、第２の処理装置の前記完了同期モジュールからの前記メッセージを待ち受ける前記開始同期モジュールの配備処理を挿入し、前記第２の処理装置の前記１以上のソフトウェアコンポーネントの配備処理列における前記所定のソフトウェアコンポーネントの配備処理の後に、前記第１の処理装置の前記開始同期モジュールへ前記メッセージを送信する前記完了同期モジュールの配備処理を挿入することにより、前記スクリプトを生成する、
請求項６に記載の配備方法。
【請求項８】
コンピュータに、
複数の処理装置の各々に配備する１以上のソフトウェアコンポーネントを示す構成情報を記憶し、
前記構成情報をもとに、前記複数の処理装置の各々について、当該処理装置に配備される前記１以上のソフトウェアコンポーネントの各々の構成部品記憶手段からの取得を含む配備処理と、他の処理装置との間で、前記１以上のソフトウェアコンポーネントの内の所定のソフトウェアコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述された、当該処理装置上で実行されるスクリプトを生成する、
処理を実行させるプログラム。
【請求項９】
前記同期モジュールとして、配備処理において他の処理装置の開始同期モジュールにメッセージを送信する完了同期モジュールと、配備処理において他の処理装置の前記完了同期モジュールからの前記メッセージを待ち受ける前記開始同期モジュールと、が用いられ、
前記スクリプトを生成する場合、第１の処理装置の前記１以上のソフトウェアコンポーネントの配備処理列における前記所定のソフトウェアコンポーネントの配備処理の前に、第２の処理装置の前記完了同期モジュールからの前記メッセージを待ち受ける前記開始同期モジュールの配備処理を挿入し、前記第２の処理装置の前記１以上のソフトウェアコンポーネントの配備処理列における前記所定のソフトウェアコンポーネントの配備処理の後に、前記第１の処理装置の前記開始同期モジュールへ前記メッセージを送信する前記完了同期モジュールの配備処理を挿入することにより、前記スクリプトを生成する、
処理を実行させる請求項８に記載のプログラム。
【請求項１０】
コンピュータに、
当該コンピュータに配備される１以上のソフトウェアコンポーネントの各々の構成部品記憶手段からの取得を含む配備処理と、
他のコンピュータとの間で、前記１以上のソフトウェアコンポーネントの内の所定のソフトウェアコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムを構成するソフトウェアコンポーネントを配備する情報処理装置、配備方法、及び、プログラムに関する。
【背景技術】
【０００２】
現在のＩＴ（Information Technology）システムは、データベースやアプリケーションサーバなどのミドルウェアや、関連するプログラムライブラリ、アプリケーションプログラムなど、複数のソフトウェアコンポーネントから構成されている。多くの場合、システムを構成するソフトウェアコンポーネントは、負荷分散や可用性向上のために、複数の処理装置に分散して配備される。こうしたシステムの構築において、リードタイムの短縮やミスの防止を目的とした、自動配備システムが実現されている。
【０００３】
例えば、非特許文献１には、オーケストレーションサーバが全ての配備先処理装置に対する配備スクリプトを順次実行する集中型の自動配備システムが開示されている。集中型の自動配備システムでは、複雑な配備スクリプトを実行する場合、オーケストレーションサーバに負荷が集中するため、効率性に問題が発生する場合がある。
【０００４】
また、非特許文献２には、複数の配備先処理装置で配備処理を分散して行う、分散型自動配備システムの一例が開示されている。図１３は、非特許文献２の分散型自動配備システムの構成を示す図である。非特許文献１の分散型自動配備システムは、配備装置７００、システムを構成するサーバが配備される処理装置８００、及び、ソフトウェアコンポーネントを記憶する構成部品リポジトリ９００を含む。
【０００５】
配備装置７００は、スクリプトリポジトリ７１０、及び、スクリプト配布部７２０を含む。スクリプトリポジトリ７１０は、サーバに係る配備手順を記述した配備スクリプトを記憶する。スクリプト配布部７２０は、配備スクリプトをスクリプトリポジトリ７１０から取得し、処理装置８００に送信する。
【０００６】
処理装置８００は、エージェント８１０を含む。エージェント８１０は、配備スクリプトの記述をもとに、サーバを構成するソフトウェアコンポーネントの配備処理（構成部品リポジトリ９００からのソフトウェアコンポーネントの取得、処理装置８００上でのインストール、設定等）を行う。
【０００７】
このように、分散型自動配備システムでは、配備処理を各処理装置８００で分散することにより、システムを効率的に構築できる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】"Puppet Labs: IT Automation Software for System Administrators"、Puppet Labs、［online］、［平成25年10月10日検索］、インターネット〈URL：http://puppetlabs.com/〉
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、非特許文献１に記載の分散型自動配備システムでは、サイズの大きなソフトウェアコンポーネントを含む同一構成のサーバを、複数の処理装置８００に配備する場合、配備処理の大幅な遅延や失敗が発生することがある。その理由は、各処理装置８００のエージェント８１０がサイズの大きなソフトウェアコンポーネントの取得を同時に実行することにより、構成部品リポジトリ９００へのアクセスが集中し、構成部品リポジトリ９００のディスクやネットワークＩ／Ｏに輻輳が発生するためである。
【００１０】
図１４は、非特許文献１の分散型自動配備システムにける、構成部品リポジトリ９００へのアクセス集中の例を示す図である。配備装置７００は、複数の処理装置８００に、サーバの構成部品Ａ、Ｂを配備するための配備スクリプトを配布する。ここで、処理装置８００は独立に配備処理を実行するため、構成部品リポジトリ９００に構成部品取得要求が集中する。特に、サイズが大きい構成部品Ａを取得する場合、アクセス集中に伴う輻輳状態が発生しやすい。
【００１１】
この場合、処理装置８００のスクリプト実行エンジンが構成部品リポジトリ９００と連携して、アクセスが集中している構成部品リポジトリ９００からの構成部品の取得を一時的に見合わせるような実装も考えられる。しかしながら、スクリプト実行エンジンは、さまざまな処理装置８００で動作するため、極力簡易な実装であることが望ましい。また、構成部品を取得するたびに取得可否を構成部品リポジトリ９００に問い合わせる場合、アクセス集中が発生しないようなシステムにおいても複雑な通信を行わなければならず、実行効率が低下する。
【００１２】
また、スクリプト実行エンジンを改変せずにアクセス集中を軽減する方法として、構成部品リポジトリ９００を多重化する、あるいは、コンテンツデリバリサービスのようなキャッシュ機構を使う方法も考えられるが、これらの方法は、コストの増加を伴う。
【００１３】
本発明の目的は、上述の課題を解決し、分散型自動配備システムにおいて、構成部品リポジトリへのアクセス集中に伴う輻輳を防ぐことができる、情報処理装置、配備方法、及び、プログラムを提供することである。
【課題を解決するための手段】
【００１４】
本発明の情報処理装置は、複数の処理装置の各々に配備する１以上のソフトウェアコンポーネントを示す構成情報を記憶する構成情報記憶手段と、前記構成情報をもとに、前記複数の処理装置の各々について、当該処理装置に配備される前記１以上のソフトウェアコンポーネントの各々の構成部品記憶手段からの取得を含む配備処理と、他の処理装置との間で、前記１以上のソフトウェアコンポーネントの内の所定のソフトウェアコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述された、当該処理装置上で実行されるスクリプトを生成するスクリプト生成手段と、を備える。
【００１５】
本発明の配備方法は、複数の処理装置の各々に配備する１以上のソフトウェアコンポーネントを示す構成情報を記憶し、前記構成情報をもとに、前記複数の処理装置の各々について、当該処理装置に配備される前記１以上のソフトウェアコンポーネントの各々の構成部品記憶手段からの取得を含む配備処理と、他の処理装置との間で、前記１以上のソフトウェアコンポーネントの内の所定のソフトウェアコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述された、当該処理装置上で実行されるスクリプトを生成する。
【００１６】
本発明の第１のプログラムは、コンピュータに、複数の処理装置の各々に配備する１以上のソフトウェアコンポーネントを示す構成情報を記憶し、前記構成情報をもとに、前記複数の処理装置の各々について、当該処理装置に配備される前記１以上のソフトウェアコンポーネントの各々の構成部品記憶手段からの取得を含む配備処理と、他の処理装置との間で、前記１以上のソフトウェアコンポーネントの内の所定のソフトウェアコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述された、当該処理装置上で実行されるスクリプトを生成する、処理を実行させる。
【００１７】
本発明の第２のプログラムは、コンピュータに、当該コンピュータに配備される１以上のソフトウェアコンポーネントの各々の構成部品記憶手段からの取得を含む配備処理と、
他のコンピュータとの間で、前記１以上のソフトウェアコンポーネントの内の所定のソフトウェアコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、を実行させる。
【発明の効果】
【００１８】
本発明の効果は、分散型自動配備システムにおいて、構成部品リポジトリへのアクセス集中に伴う輻輳を防げることである。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の第１の実施の形態における、配備システムの構成を示すブロック図である。
【図３】本発明の第１の実施の形態における、コンピュータにより実現された配備装置１００の構成を示すブロック図である。
【図４】本発明の第１の実施の形態における、構成情報１１１の例を示す図である。
【図５】本発明の第１の実施の形態における、スクリプト１３１の例を示す図である。
【図６】本発明の第１の実施の形態における、同期モジュールの構成を示す図である。
【図７】本発明の第１の実施の形態における、スクリプト１３２の例を示す図である。
【図８】本発明の第１の実施の形態における、スクリプト１３１の生成処理を示すフローチャートである。
【図９】本発明の第１の実施の形態における、同期モジュールのスクリプト部品挿入処理を示すフローチャートである。
【図１０】本発明の第１の実施の形態における、詳細挿入処理を示すフローチャートである。
【図１１】本発明の第２の実施の形態における、詳細挿入処理を示すフローチャートである。
【図１２】本発明の第２の実施の形態における、スクリプト１３２の例を示す図である。
【図１３】非特許文献２の分散型自動配備システムの構成を示す図である。
【図１４】非特許文献２の分散型自動配備システムにける、構成部品リポジトリ９００へのアクセス集中の例を示す図である。
【発明を実施するための形態】
【００２０】
（第１の実施の形態）
本発明の第１の実施の形態について説明する。
【００２１】
はじめに、本発明の第１の実施の形態の構成について説明する。
【００２２】
図２は、本発明の第１の実施の形態における、配備システムの構成を示すブロック図である。
【００２３】
図２を参照すると、配備システムは、配備装置１００、複数の処理装置２００、及び、構成部品リポジトリ（または、構成部品記憶部）３００を含む。配備装置１００は、本発明の情報処理装置の一実施形態である。
【００２４】
配備装置１００と各処理装置２００は、ネットワーク等により接続される。また、各処理装置２００と構成部品リポジトリ３００も、ネットワーク等により接続される。
【００２５】
配備装置１００は、ＩＴシステムを構成する複数のサーバを、それぞれ複数の処理装置２００に配備することにより、システムを構築する。サーバの配備は、サーバを構成する各ソフトウェアコンポーネント（以下、単に、コンポーネントとする）を、処理装置２００に配備することにより行われる。ここで、コンポーネントは、オペレーティングシステム（ＯＳ）、ミドルウェア（ＭＷ）、アプリケーション（ＡＰ）等のプログラムモジュールである。
【００２６】
処理装置２００は、サーバを構成する各コンポーネントの処理を実行するコンピュータである。処理装置２００は、エージェント２１０を含む。エージェント２１０は、配備装置１００から受信したスクリプト１３２に従って、サーバを構成する各コンポーネントの配備処理（コンポーネントの媒体イメージを構成部品リポジトリ３００からの取得、インストール、設定、及び、初期化処理の起動）を実行する。処理装置２００は、コンピュータ上に構築される仮想マシン（Virtual Machine：ＶＭ）であってもよい。
【００２７】
本発明の第１の実施の形態においては、処理装置２００は、各々に識別子ＶＭｎ（ｎ＝１，２，…）が付与された仮想マシンであるとする。なお、以下の説明において、「」内の符号は、識別子を示す。例えば、仮想マシン「ＶＭｎ」は、識別子ＶＭｎの処理装置２００を示す。
【００２８】
構成部品リポジトリ３００は、サーバを構成するコンポーネントの媒体イメージを記憶する。
【００２９】
配備装置１００は、構成情報記憶部１１０、スクリプトリポジトリ１２０、スクリプト生成部１３０、及び、スクリプト配布部１４０を含む。
【００３０】
構成情報記憶部１１０は、構成情報１１１を記憶する。構成情報１１１は、システム構成として、システムを構成するサーバ、及び、各サーバを構成するコンポーネントを示す。構成情報１１１は、利用者等により予め設定される。また、図示しない物理構成取得部が、配備装置１００の外部から入力された構成情報１１１を、構成情報記憶部１１０に保存してもよい。
【００３１】
図４は、本発明の第１の実施の形態における、構成情報１１１の例を示す図である。図４の例では、構成情報１１１はＸＭＬ（Extensible Markup Language）形式で記述されている。図４における構成情報１１１は、右側に示したシステム構成に対応する。
【００３２】
図４のシステム構成では、システムが１００個のサーバ「ＳＶ１」、１つのサーバ「ＳＶ２」、及び、１つのサーバ「ＳＶ３」により構成される。これらのサーバは、それぞれ、複数の仮想マシンに配備される。
【００３３】
サーバ「ＳＶ１」は、コンポーネント「Ａ」、「Ｂ」により構成される。サーバ「ＳＶ２」は、コンポーネント「Ｃ」により構成される。サーバ「ＳＶ３」は、コンポーネント「Ｄ」により構成される。
【００３４】
なお、本発明の実施の形態では、同一構成のサーバの集合をサブシステムと呼ぶ。
【００３５】
スクリプト生成部１３０は、サーバを構成する各コンポーネントの配備処理が記述されたプログラムである、スクリプト１３２を生成する。
【００３６】
ここで、スクリプト生成部１３０は、構成情報１１１を参照し、処理装置２００ごとに、当該処理装置２００に配備されるサーバに含まれる各コンポーネントの配備処理を示すスクリプト部品１３４（１３４ａ、ｂ、…）が実行順序に従って前から配置された、スクリプト１３１を生成する。
【００３７】
図５は、本発明の第１の実施の形態における、スクリプト１３１の例を示す図である。図５のスクリプト１３１は、サーバ「ＳＶ１」が配備される仮想マシンのスクリプト１３１の例である。図５の例では、スクリプト１３１はＸＭＬ形式で記述されている。
【００３８】
図５のスクリプト１３１は、サーバ「ＳＶ１」を配備するためのスクリプトであり、コンポーネント「Ａ」、「Ｂ」を配備するためのスクリプト部品１３４ａ、１３４ｂが配置されている。また、スクリプト１３１には、さらに、処理装置２００のネットワークアドレス等を示す装置設定１３３が配置されていてもよい。
【００３９】
スクリプト生成部１３０は、さらに、スクリプト１３１に同期モジュールのスクリプト部品１３５（１３５ｓ、ｆ）を挿入することにより、スクリプト１３２を生成する。
【００４０】
同期モジュールは、他の処理装置２００に配備される同期モジュールとの間でスクリプト１３２の処理の同期をとるためのプログラムモジュールである。同期モジュールは、他の処理装置２００との間で、対象コンポーネント（所定のコンポーネント）の配備処理が同時に実行されないように挿入される。ここで、対象コンポーネントとしては、スクリプト生成部１３０により、例えば、サーバの数が所定数以上のサブシステムにおける、媒体イメージのサイズが所定サイズ以上のコンポーネントが選択される。所定数、及び、所定サイズは、利用者等により予め設定される。
【００４１】
ここで、本発明の第１の実施の形態における、同期モジュールの構成について説明する。
【００４２】
図６は、本発明の第１の実施の形態における、同期モジュールの構成を示す図である。
【００４３】
本発明の第１の実施の形態では、同期モジュールとして、完了同期モジュール５０１と開始同期モジュール５１１とが用いられる。
【００４４】
開始同期モジュール５１１は、同期先コンポーネント情報５１２、及び、メッセージ受信部５１３を含む。同期先コンポーネント情報５１２は、開始同期モジュール５１１がメッセージを待ち受けるべき完了同期モジュール５０１の識別子を示す。同期先コンポーネント情報５１２には、開始同期モジュール５１１のスクリプト部品１３５ｓで指定されたメッセージ送信元の内容が設定される。メッセージ受信部５１３は、完了同期モジュール５０１からメッセージを受信する。
【００４５】
開始同期モジュール５１１は、処理装置２００上で、スクリプト部品１３５ｓに従ってインストール、初期化された後に実行される。開始同期モジュール５１１は、メッセージ受信部５１３によって同期先コンポーネント情報５１２に記述された完了同期モジュール５０１からのメッセージが受信されるまで、スクリプト１３２における当該開始同期モジュール５１１の次のスクリプト部品１３４以降の配備処理をブロックする。
【００４６】
完了同期モジュール５０１は、同期先コンポーネント情報５０２、及び、メッセージ送信部５０３を含む。同期先コンポーネント情報５０２は、完了同期モジュール５０１がメッセージを送信すべき開始同期モジュール５１１の識別子を示す。同期先コンポーネント情報５０２には、完了同期モジュール５０１のスクリプト部品１３５ｆで指定されたメッセージ送信先の内容が設定される。メッセージ送信部５０３は、同期先コンポーネント情報５０２で示される開始同期モジュール５１１へメッセージを送信する。
【００４７】
完了同期モジュール５０１は、処理装置２００上で、スクリプト部品１３５ｆに従ってインストール、初期化された後に実行される。完了同期モジュール５０１は、メッセージ送信部５０３による同期先コンポーネント情報５０２に記述された開始同期モジュール５１１へのメッセージの送信を、当該開始同期モジュール５１１が正常受信を返すまで繰り返す。完了同期モジュール５０１は、当該完了同期モジュール５０１の次のスクリプト部品１３４以降の配備処理をブロックしない。
【００４８】
なお、完了同期モジュール５０１、及び、開始同期モジュール５１１は、初期化処理の完了とともにアンインストールされてもよい。
【００４９】
図７は、本発明の第１の実施の形態における、スクリプト１３２の例を示す図である。図７のスクリプト１３２は、サーバ「ＳＶ１」が配備される仮想マシンのスクリプト１３１の例である。図７の例では、スクリプト１３２はＸＭＬ形式で記述されている。
【００５０】
ここでは、コンポーネント「Ａ」が対象コンポーネントに選択されたと仮定する。この場合、コンポーネント「Ａ」のスクリプト部品１３４ａの前後に同期モジュール（開始同期モジュール５１１、完了同期モジュール５０１）を配備するためのスクリプト部品１３５（１３５ｓ、１３５ｆ）が挿入される。
【００５１】
例えば、図７の仮想マシン「ＶＭｎ」のスクリプト１３１において、スクリプト部品１３４ａの前に開始同期モジュール５１１「Ｓｎ」のスクリプト部品１３５ｓが、スクリプト部品１３４ａの後に完了同期モジュール５０１「Ｆｎ」のスクリプト部品１３５ｆが挿入されている。
【００５２】
開始同期モジュール５１１「Ｓｎ」のスクリプト部品１３５ｓでは、$check=("Fn-1")という記述により、メッセージ送信元が指定される。この場合、開始同期モジュール５１１「Ｓｎ」が、仮想マシン「ＶＭｎ−１」に配備される完了同期モジュール５０１「Ｆｎ−１」からのメッセージを受信するまで、スクリプト部品１３４ａ以降の配備処理はブロックされる。
【００５３】
コンポーネント「Ａ」のスクリプト部品１３４ａでは、require => Snという記述により、依存性が指定されている。この場合、スクリプト部品１３５ｓによる開始同期モジュール５１１「Ｓｎ」の配備処理が完了するまで、スクリプト部品１３４ａによるモジュール「Ａ」の配備処理は開始されない。
【００５４】
完了同期モジュール５０１「Ｆｎ」のスクリプト部品１３５ｆでは、require => Aという記述により、依存性が指定されている。この場合、スクリプト部品１３４ａによるモジュール「Ａ」の配備処理が完了するまで、スクリプト部品１３５ｆによる完了同期モジュール５０１「Ｆｎ」の配備処理は開始されない。また、完了同期モジュール５０１「Ｆｎ」のスクリプト部品１３５ｆでは、$tup=("Sn+1")という記述により、メッセージ送信先が指定される。この場合、完了同期モジュール５０１「Ｆｎ」の配備処理において、仮想マシン「ＶＭｎ＋１」に配備される開始同期モジュール５１１「Ｓｎ＋１」へのメッセージが送信される。
【００５５】
スクリプト配布部１４０は、スクリプト生成部１３０により生成されたスクリプト１３１を、各処理装置２００に配布する。
【００５６】
スクリプトリポジトリ１２０は、各コンポーネントの配備処理を示すスクリプト部品１３４を記憶する。
【００５７】
なお、配備装置１００はＣＰＵ（Central Processing Unit）とプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。また、構成記憶部１１０とスクリプトリポジトリ１２０とは、それぞれ個別の記憶媒体でも、１つの記憶媒体によって構成されてもよい。
【００５８】
また、構成情報１１１、スクリプト１３１、１３２は、ＸＭＬ以外の他の形式で記述されてもよい。
【００５９】
図３は、本発明の第１の実施の形態における、コンピュータにより実現された配備装置１００の構成を示すブロック図である。
【００６０】
図３を参照すると、配備装置１００は、ＣＰＵ１８１、記憶媒体１８２、通信部１８３、入力部１８４、及び、出力部１８５を含む。ＣＰＵ１８１は、スクリプト生成部１３０、及び、スクリプト配布部１４０の機能を実現するためのコンピュータプログラムを実行する。記憶媒体１８２は、構成情報記憶部１１０、及び、スクリプトリポジトリ１２０のデータを記憶する。通信部１８３は、処理装置２００へスクリプト１３２を送信する。入力部１８４は、例えば、キーボード等の入力デバイスであり、利用者等から構成情報１１１の入力を受け付ける。出力部１８５は、例えば、ディスプレイ等の表示デバイスであり、スクリプト１３２による各サーバの配備の結果を利用者等へ表示する。
【００６１】
次に、本発明の第１の実施の形態の動作について説明する。
【００６２】
はじめに、本発明の第１の実施の形態における、スクリプト１３１の生成処理を説明する。
【００６３】
図８は、本発明の第１の実施の形態における、スクリプト１３１の生成処理を示すフローチャートである。
【００６４】
ここでは、構成情報記憶部１１０に、図４の構成情報１１１が記憶されていると仮定する。
【００６５】
スクリプト生成部１３０は、構成情報１１１を参照し、システムを構成する各サーバが配備される処理装置２００を決定する（ステップＳ１０１）。
【００６６】
例えば、スクリプト生成部１３０は、図４の構成情報１１１を参照し、１００個のサーバ「ＳＶ１」を仮想マシン「ＶＭ１」〜「ＶＭ１００」、サーバ「ＳＶ２」を仮想マシン「ＶＭ１０１」、サーバ「ＳＶ３」を仮想マシン「ＶＭ１０２」に配備すると決定する。
【００６７】
スクリプト生成部１３０は、ステップＳ１０１で決定された処理装置２００の１つ（対象処理装置）を選択する（ステップＳ１０２）。スクリプト生成部１３０は、対象処理装置に係る装置設定１３３を生成し、対象処理装置のスクリプト１３１に配置する（ステップＳ１０３）。スクリプト生成部１３０は、構成情報１１１を参照し、対象処理装置に配備されるサーバのコンポーネントのリストを抽出する（ステップＳ１０４）。スクリプト生成部１３０は、ステップＳ１０４で抽出したリストから、コンポーネントを１つ選択する（ステップＳ１０５）。スクリプト生成部１３０は、スクリプトリポジトリ１２０から、選択したコンポーネントを配備するためのスクリプト部品１３４を取得し、対象処理装置のスクリプト１３１に配置する（ステップＳ１０６）。スクリプト生成部１３０は、ステップＳ１０４で抽出したリストに含まれる全てのコンポーネントについて、ステップＳ１０５、Ｓ１０６の処理を繰り返す（ステップＳ１０７）。スクリプト生成部１３０は、システムを構成する全ての処理装置２００について、ステップＳ１０２〜Ｓ１０７の処理を繰り返す（ステップＳ１０８）。これにより、各処理装置２００について、スクリプト１３１が生成される。
【００６８】
例えば、スクリプト生成部１３０は、サーバ「ＳＶ１」が配備される仮想マシン「ＶＭ１」〜「ＶＭ１００」について、装置設定１３３、コンポーネント「Ａ」、「Ｂ」のスクリプト部品１３４ａ、１３４ｂを配置した、図５のようなスクリプト１３１を生成する。
【００６９】
次に、本発明の第１の実施の形態における、同期モジュールのスクリプト部品挿入処理を説明する。
【００７０】
図９は、本発明の第１の実施の形態における、同期モジュールのスクリプト部品挿入処理を示すフローチャートである。
【００７１】
スクリプト生成部１３０は、構成情報１１１を参照し、同期モジュールのスクリプト部品１３５を挿入すべきサブシステム（対象サブシステム）を抽出する（ステップＳ２０１）。ここで、スクリプト生成部１３０は、サーバを構成するコンポーネントとして媒体イメージのサイズが所定サイズ以上のコンポーネント（対象コンポーネント）を含み、かつ、サーバの数が所定数以上のサブシステムを対象サブシステムとして抽出する。
【００７２】
例えば、コンポーネント「Ａ」の媒体イメージのサイズが所定サイズ以上、サーバ「ＳＶ１」の数（１００個）が所定数以上の場合、スクリプト生成部１３０は、コンポーネント「Ａ」を対象コンポーネントとし、サーバ「ＳＶ１」に係るサブシステムを対象サブシステムとして抽出する。
【００７３】
スクリプト生成部１３０は、ステップＳ２０１で抽出された対象サブシステムの内の１つを選択する（ステップＳ２０２）。スクリプト生成部１３０は、後述の詳細挿入処理に従って、対象サブシステムのサーバが配備される各処理装置２００のスクリプト１３１において、対象コンポーネントに対する同期モジュールのスクリプト部品１３５を挿入する（ステップＳ２０３）。これにより、対象サブシステムのサーバが配備される各処理装置２００について、同期モジュールのスクリプト部品１３５が挿入された、スクリプト１３２が生成される。スクリプト生成部１３０は、ステップＳ２０１で抽出された全ての対象サブシステムについて、ステップＳ２０２、Ｓ２０３の処理を繰り返す（ステップＳ２０４）。
【００７４】
なお、サーバを構成するコンポーネントに、対象コンポーネントが複数存在する場合、スクリプト生成部１３０は、複数の対象コンポーネントの各々について、詳細挿入処理（ステップＳ２０３）を実行する。
【００７５】
図１０は、本発明の第１の実施の形態における、詳細挿入処理（ステップＳ２０３）を示すフローチャートである。
【００７６】
スクリプト生成部１３０は、対象サブシステムのサーバが配備される処理装置２００のスクリプト１３１に、例えば、各処理装置２００のＩＰアドレスをもとに、１からＮ（Ｎは、対象サブシステム内のサーバ数（スクリプト数））のインデクスを順番に付与する（ステップＳ２０３−１）。スクリプト生成部１３０は、カウンタｉを１に初期化する（ステップＳ２０３−２）。
【００７７】
次に、スクリプト生成部１３０は、インデクスｉのスクリプト１３１を取得する（ステップＳ２０３−３）。ここで、ｉ＝１の場合（ステップＳ２０３−４／Ｙ）、完了同期モジュール５０１「Ｆｉ−１」は存在しないため、スクリプト生成部１３０は、開始同期モジュール５１１「Ｓｉ」のスクリプト部品１３５ｓの挿入は行わず、ステップＳ２０３−８に進む。一方、ｉ≠１の場合（ステップＳ２０３−４／Ｎ）、スクリプト生成部１３０は、インデクスｉのスクリプト１３１における対象コンポーネントのスクリプト部品１３４の前に、開始同期モジュール５１１「Ｓｉ」のスクリプト部品１３５ｓを挿入する（ステップＳ２０３−５）。スクリプト生成部１３０は、開始同期モジュール５１１「Ｓｉ」のスクリプト部品１３５ｓのメッセージ送信元に、完了同期モジュール５０１「Ｆｉ−１」、及び、ポート番号を設定する（ステップＳ２０３−６）。ここで、ポート番号には、後述するステップＳ２０３−１１において、インデクスｉ−１のスクリプト１３１に対して設定されたポート番号が設定される。また、スクリプト生成部１３０は、対象コンポーネントのスクリプト部品１３４に、開始同期モジュール５１１「Ｓｉ」への依存性を設定する（ステップＳ２０３−７）。
【００７８】
次に、ｉ＝Ｎの場合（ステップＳ２０３−８／Ｙ）、開始同期モジュール５１１「Ｓｉ＋１」は存在しないため、スクリプト生成部１３０は、完了同期モジュール５０１「Ｆｉ」のスクリプト部品１３５ｆの挿入は行わず、処理を終了する。一方、ｉ≠Ｎの場合（ステップＳ２０３−８／Ｎ）、スクリプト生成部１３０は、インデクスｉのスクリプト１３１における対象コンポーネントのスクリプト部品１３４の後に、完了同期モジュール５０１「Ｆｉ」のスクリプト部品１３５ｆを挿入する（ステップＳ２０３−９）。スクリプト生成部１３０は、完了同期モジュール５０１「Ｆｉ」のスクリプト部品１３５ｆに、対象コンポーネントへの依存性を設定する（ステップＳ２０３−１０）。また、スクリプト生成部１３０は、完了同期モジュール５０１「Ｆｉ」のスクリプト部品１３５ｆのメッセージ送信先に、開始同期モジュール５１１「Ｓｉ＋１」、インデクスｉ＋１のスクリプト１３１が実行される処理装置２００のアドレス、及び、ポート番号を設定する（ステップＳ２０３−１１）。ここで、ポート番号としては、インデクスｉ＋１のスクリプト１３１が実行される処理装置２００において、開始同期モジュール５１１「Ｓｉ＋１」がメッセージを受信するためのポート番号が生成、設定される。そして、スクリプト生成部１３０は、カウンタｉに１を加算し（ステップＳ２０３−１２）、ステップＳ２０３−３からの処理を繰り返す。
【００７９】
例えば、スクリプト生成部１３０は、サーバ「ＳＶ１」が配備される仮想マシン「ＶＭ１」〜「ＶＭ１００」について、図７のようなスクリプト１３２を生成する。図７に示すように、仮想マシン「ＶＭ１」のスクリプト１３２では、コンポーネント「Ａ」のスクリプト部品１３４の後に完了同期モジュール５０１のスクリプト部品１３５ｆが挿入される。仮想マシン「ＶＭ２」〜「ＶＭ９９」のスクリプト１３２では、コンポーネント「Ａ」のスクリプト部品１３４の前に開始同期モジュール５１１のスクリプト部品１３５ｓが、コンポーネント「Ａ」のスクリプト部品１３４の後に完了同期モジュール５０１のスクリプト部品１３５ｆが挿入される。仮想マシン「ＶＭ１００」のスクリプト１３２では、コンポーネント「Ａ」のスクリプト部品１３４の前に開始同期モジュール５１１のスクリプト部品１３５ｓが挿入される。
【００８０】
次に、システムの配備の具体例を説明する。
【００８１】
スクリプト配布部１４０は、同期モジュールのスクリプト部品１３５が挿入されたスクリプト１３２を、各処理装置２００に配布する。
【００８２】
例えば、スクリプト配布部１４０は、図７のようなスクリプト１３２を、それぞれ、仮想マシン「ＶＭ１」〜「ＶＭ１００」に配布する。
【００８３】
各処理装置２００上のエージェント２１０は、配布されたスクリプト１３２を実行し、サーバを構成する各コンポーネント、及び、同期モジュール（開始同期モジュール５１１、完了同期モジュール５０１）を配備する。
【００８４】
例えば、図７において、仮想マシン「ＶＭ１」のエージェント２１０は、スクリプト１３２に従って、コンポーネント「Ａ」、完了同期モジュール５０１「Ｆ１」、コンポーネント「Ｂ」の配備処理（構成部品リポジトリ３００からの取得、インストール、設定、及び、初期化処理の起動）を順番に行う。完了同期モジュール５０１「Ｆ１」は、初期化処理において、開始同期モジュール５１１「Ｓ２」へメッセージを送信する。
【００８５】
仮想マシン「ＶＭ２」のエージェント２１０は、スクリプト１３２に従って、開始同期モジュール５１１「Ｓ２」、コンポーネント「Ａ」、完了同期モジュール５０１「Ｆ２」、コンポーネント「Ｂ」の配備処理を順番に行う。ここで、開始同期モジュール５１１「Ｓ２」は、初期化処理において、完了同期モジュール５０１「Ｆ１」からのメッセージを待ち受けるため、コンポーネント「Ａ」の配備は、完了同期モジュール５０１「Ｆ１」からのメッセージ受信後に実行される。
【００８６】
同様に、仮想マシン「ＶＭｎ」のエージェント２１０は、スクリプト１３２に従って、開始同期モジュール５１１「Ｓｎ」、コンポーネント「Ａ」、完了同期モジュール５０１「Ｆｎ」、コンポーネント「Ｂ」の配備処理を順番に行う。ここで、開始同期モジュール５１１「Ｓ２」は、初期化処理において、完了同期モジュール５０１「Ｆｎ−１」からのメッセージを待ち受けるため、コンポーネント「Ａ」の配備は、完了同期モジュール５０１「Ｆｎ−１」からのメッセージ受信後に実行される。
【００８７】
このように、コンポーネント「Ａ」の配備処理は、複数の仮想マシン「ＶＭ１」〜「ＶＭ１００」で順番に実行されるため、構成部品リポジトリ３００からのコンポーネント「Ａ」の取得は同時に実行されることはない。
【００８８】
以上により、本発明の第１の実施の形態の動作が完了する。
【００８９】
次に、本発明の第１の実施の形態の特徴的な構成を説明する。図１は、本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【００９０】
図１を参照すると、配備装置１００は、構成情報記憶部１１０、及び、スクリプト生成部１３０を含む。
【００９１】
構成情報記憶部１１０は、複数の処理装置２００の各々に配備する１以上のコンポーネントを示す構成情報１１１を記憶する。
【００９２】
スクリプト生成部１３０は、構成情報１１１をもとに、複数の処理装置２００の各々について、当該処理装置２００に配備される１以上のコンポーネントの各々の構成部品リポジトリ３００からの取得を含む配備処理と、他の処理装置２００との間で、１以上のコンポーネントの内の所定のコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述された、当該処理装置２００上で実行されるスクリプト１３２を生成する。
【００９３】
本発明の第１の実施の形態によれば、分散型自動配備システムにおいて、構成部品リポジトリへのアクセス集中に伴う輻輳を防ぐことができる。
【００９４】
その理由は、スクリプト生成部１３０が、複数の処理装置２００の各々について、当該処理装置２００に配備されるコンポーネントの各々の配備処理と、他の処理装置２００との間で、所定のコンポーネントの配備処理を同時に実行しないように同期をとる同期モジュールの配備処理と、が記述されたスクリプト１３２を生成するためである。これにより、構成部品リポジトリ３００における輻輳による、システム構築の失敗や遅延を防ぐことができる。
【００９５】
また、本発明の第１の実施の形態によれば、分散型自動配備システムにおいて、処理装置や構成部品リポジトリが特別な手段を備えることなく、構成部品リポジトリにおける輻輳を防ぐことができる。その理由は、処理装置２００において、スクリプト１３２に従って同期モジュールを配備することで、他の処理装置２００に配備される同期モジュールとの間でスクリプト１３２の処理の同期が行われるためである。
【００９６】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。
【００９７】
本発明の第１の実施の形態では、構成部品リポジトリ３００からの所定のコンポーネントの取得は、各処理装置２００が順番に実行する。これにより、構成部品リポジトリ３００へのアクセス集中を防ぐことができるが、コンポーネントの配備の効率が低下する。
【００９８】
本発明の第２の実施の形態では、所定の最大同時アクセス数以下の処理装置２００が構成部品リポジトリ３００に同時にアクセスできるようにすることで、コンポーネントの配備の効率を向上させる。
【００９９】
本発明の第２の実施の形態における配備システムの構成は、本発明の第１の実施の形態（図２）と同様である。
【０１００】
また、本発明の第２の実施の形態における、スクリプト１３１の生成処理は、本発明の第１の実施の形態（図８）と同様である。
【０１０１】
本発明の第２の実施の形態における、同期モジュールのスクリプト部品挿入処理は、詳細挿入処理（ステップＳ２０３）を除いて、本発明の第１の実施の形態（図９）と同様である。図１１は、本発明の第２の実施の形態における、詳細挿入処理（ステップＳ２０３）を示すフローチャートである。
【０１０２】
スクリプト生成部１３０は、対象サブシステムのサーバが配備される処理装置２００のスクリプト１３１に、例えば、各処理装置２００のＩＰアドレスをもとに、０からＮ−１（Ｎは、対象サブシステム内のスクリプト数）のインデクスを順番に付与する（ステップＳ２０３−１０１）。スクリプト生成部１３０は、カウンタｉを０に初期化する（ステップＳ２０３−１０２）。
【０１０３】
次に、スクリプト生成部１３０は、所定の最大同時アクセス数をもとに、開始同期モジュール５１１のスクリプト部品１３５ｓを挿入しないスクリプト１３１のインデクス（開始同期非挿入インデクス）の集合を計算する（ステップＳ２０３−１０３）。ここで、最大同時アクセス数として、その数の処理装置２００が構成部品リポジトリ３００に同時にアクセスしても輻輳が発生しない範囲の値が、予め、利用者等により設定される。開始同期非挿入インデクスの集合の計算方法については後述する。
【０１０４】
次に、スクリプト生成部１３０は、インデクスｉのスクリプト１３１を取得する（ステップＳ２０３−１０４）。ここで、ｉ＝開始同期非挿入インデクスの場合（ステップＳ２０３−１０５／Ｙ）、スクリプト生成部１３０は、開始同期モジュール５１１「Ｓｉ」のスクリプト部品１３５ｓの挿入は行わず、ステップＳ２０３−１０９に進む。一方、ｉ≠開始同期非挿入インデクスの場合（ステップＳ２０３−１０５／Ｎ）、スクリプト生成部１３０は、インデクスｉのスクリプト１３１における対象コンポーネントのスクリプト部品１３４の前に、開始同期モジュール５１１「Ｓｉ」のスクリプト部品１３５ｓを挿入する（ステップＳ２０３−１０６）。スクリプト生成部１３０は、開始同期モジュール５１１「Ｓｉ」のスクリプト部品１３５ｓのメッセージ送信元に、完了同期モジュール５０１「Ｆｉ−１」、及び、ポート番号を設定する（ステップＳ２０３−１０７）。また、スクリプト生成部１３０は、対象コンポーネントのスクリプト部品１３４に、開始同期モジュール５１１「Ｓｉ」への依存性を設定する（ステップＳ２０３−１０８）。
【０１０５】
次に、ｉ＝Ｎ−１の場合（ステップＳ２０３−１０９／Ｙ）、スクリプト生成部１３０は、処理を終了する。また、ｉ＋１＝開始同期非挿入インデクスの場合（ステップＳ２０３−１１０／Ｙ）、開始同期モジュール５１１「Ｓｉ＋１」は存在しないため、スクリプト生成部１３０は、完了同期モジュール５０１「Ｆｉ」のスクリプト部品１３５ｆの挿入は行わず、ステップＳ２０３−１１４へ進む。一方、ｉ＋１≠開始同期非挿入インデクスの場合（ステップＳ２０３−１１０／Ｎ）、スクリプト生成部１３０は、インデクスｉのスクリプト１３１における対象コンポーネントのスクリプト部品１３４の後に、完了同期モジュール５０１「Ｆｉ」のスクリプト部品１３５ｆを挿入する（ステップＳ２０３−１１１）。スクリプト生成部１３０は、完了同期モジュール５０１「Ｆｉ」のスクリプト部品１３５ｆに、対象コンポーネントへの依存性を設定する（ステップＳ２０３−１１２）。また、スクリプト生成部１３０は、完了同期モジュール５０１「Ｆｉ」のスクリプト部品１３５ｆのメッセージ送信先に、開始同期モジュール５１１「Ｓｉ＋１」、インデクスｉ＋１のスクリプト１３１が実行される処理装置２００のアドレス、及び、ポート番号を設定する（ステップＳ２０３−１１３）。そして、スクリプト生成部１３０は、カウンタｉに１を加算し（ステップＳ２０３−１１４）、ステップＳ２０３−１０４からの処理を繰り返す。
【０１０６】
ここで、開始同期非挿入インデクスの集合の計算方法の一例を説明する。
【０１０７】
スクリプト生成部１３０は、対象スクリプトの数Ｎ、最大同時アクセス数ｋに対して、ｍ÷ｋの商ａ、余りｒを計算する。そして、スクリプト生成部１３０は、ｘを０からｒまでの整数値で変化させたときのｆ１（ｘ）＝ｘ（ａ＋１）の値と、ｋ−ｒ−１＞０の場合にｙを１からｋ−ｒ−１まで整数値で変化させたときのｆ２（ｙ）＝ｒ（ａ＋１）＋ｙａの値の集合を、開始同期非挿入インデックスの集合とする。
【０１０８】
例えば、Ｎ＝１５、ｋ＝６の場合、ａ＝２、ｒ＝３であるため、ｆ１（ｘ）から集合｛０，３，６，９｝、ｆ２（ｙ）から集合｛１１，１３｝が得られる。したがって、開始同期非挿入インデクスの集合は、｛０，３，６，９，１１，１３｝となる。
【０１０９】
なお、対象コンポーネントの配備処理の同時実行数が最大同時アクセス数以下に制御できれば、開始同期非挿入インデクスの集合は、他の方法により算出してもよい。
【０１１０】
図１２は、本発明の第２の実施の形態における、スクリプト１３２の例を示す図である。図１２のスクリプト１３２は、１５個のサーバ「ＳＶ１」が仮想マシン「ＶＭ０」〜「ＶＭ１４」に配備される場合のスクリプト１３１の例である。図７に示すように、仮想マシン「ＶＭ０」、「ＶＭ３」、「ＶＭ６」、「ＶＭ９」、「ＶＭ１１」、「ＶＭ１３」のスクリプト１３２では、コンポーネント「Ａ」のスクリプト部品１３４の後に完了同期モジュール５０１のスクリプト部品１３５ｆが挿入される。仮想マシン「ＶＭ１」、「ＶＭ４」、「ＶＭ７」のスクリプト１３２では、コンポーネント「Ａ」のスクリプト部品１３４の前に開始同期モジュール５１１のスクリプト部品１３５ｓが、コンポーネント「Ａ」のスクリプト部品１３４の後に完了同期モジュール５０１のスクリプト部品１３５ｆが挿入される。仮想マシン「ＶＭ２」、「ＶＭ５」、「ＶＭ８」、「ＶＭ１０」、「ＶＭ１２」、「ＶＭ１４」のスクリプト１３２では、コンポーネント「Ａ」のスクリプト部品１３４の前に開始同期モジュール５１１のスクリプト部品１３５ｓが挿入される。
【０１１１】
スクリプト配布部１４０は、図１２のスクリプト１３２を、仮想マシン「ＶＭ０」〜「ＶＭ１４」に配布する。
【０１１２】
仮想マシン「ＶＭ０」〜「ＶＭ２」のグループは、スクリプト１３２に従って、コンポーネント「Ａ」の配備処理を順番に実行する。同様に、仮想マシン「ＶＭ３」〜「ＶＭ５」、「ＶＭ６」〜「ＶＭ８」、「ＶＭ９」〜「ＶＭ１０」、「ＶＭ１１」〜「ＶＭ１２」、「ＶＭ１３」〜「ＶＭ１４」のグループも、それぞれ、コンポーネント「Ａ」の配備処理を順番に実行する。また、これらの仮想マシンのグループ間では、コンポーネント「Ａ」の配備処理は、並列に実行される。
【０１１３】
このように、コンポーネント「Ａ」の配備処理は、最大同時アクセス数の仮想マシンのグループ間で並列に実行される。したがって、構成部品リポジトリ３００からのコンポーネント「Ａ」の取得を同時に実行する仮想マシンの数は、最大同時アクセス数以下となる。
【０１１４】
以上により、本発明の第２の実施の形態の動作が完了する。
【０１１５】
本発明の第２の実施の形態によれば、本発明の第１の実施の形態に比べて、より効率的にコンポーネントを配備できる。その理由は、スクリプト生成部１３０が、所定のコンポーネントの配備処理を同時に実行する処理装置２００の数が最大同時アクセス数以下となるように、同期モジュールの配備処理が記述されたスクリプト１３２を生成するためである。
【０１１６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１１７】
１００    配備装置
１１０    構成情報記憶部
１１１    構成情報
１２０    スクリプトリポジトリ
１３０    スクリプト生成部
１３１    スクリプト
１３２    スクリプト
１３３    装置設定
１３４    スクリプト部品
１３５    スクリプト部品
１４０    スクリプト配布部
１８１    ＣＰＵ
１８２    記憶媒体
１８３    通信部
１８４    入力部
１８５    出力部
２００    処理装置
２１０    エージェント
３００    構成部品リポジトリ
５０１    完了同期モジュール
５０２    同期先コンポーネント情報
５０３    メッセージ送信部
５１１    開始同期モジュール
５１２    同期先コンポーネント情報
５１３    メッセージ受信部
７００    配備装置
７１０    スクリプトリポジトリ
７２０    スクリプト配布部
８００    処理装置
９００    構成部品リポジトリ
【図１】
2015082225.tif 000003
【図２】
2015082225.tif 000004
【図３】
2015082225.tif 000005
【図４】
2015082225.tif 000006
【図５】
2015082225.tif 000007
【図６】
2015082225.tif 000008
【図７】
2015082225.tif 000009
【図８】
2015082225.tif 000010
【図９】
2015082225.tif 000011
【図１０】
2015082225.tif 000012
【図１１】
2015082225.tif 000013
【図１２】
2015082225.tif 000014
【図１３】
2015082225.tif 000015
【図１４】
2015082225.tif 000016