(57)【要約】  システムを構成する構成要素が、配備時に構築先環境により設定値が決定されるような設定項目を有する場合でも、システム構築を効率的に行う。  配備装置（１００）の設定情報記憶部１２０は、システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、複数のオブジェクトの設定項目の内の実行環境への配備により値が決定される依存項目を示す、設定情報を記憶する。配備順序決定部（１４０）は、設定情報をもとに、複数のオブジェクトの実行環境への配備順序を決定する。配備実行部（１５０）は、配備順序に従って、複数のオブジェクトの各々を実行環境へ配備する。
2015194139.tif 000002
【特許請求の範囲】
【請求項１】
システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報を記憶する、設定情報記憶手段と、
前記設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定する、配備順序決定手段と、
前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する、配備実行手段と、
を備えた情報処理装置。
【請求項２】
前記配備順序決定手段は、前記複数のオブジェクトの内の一のオブジェクトの設定項目が他のオブジェクトの依存項目を参照する場合、当該一のオブジェクトが当該他のオブジェクトがより後に前記実行環境へ配備されるように、前記配備順序を決定する、
請求項１に記載の情報処理装置。
【請求項３】
前記配備実行手段は、前記複数のオブジェクトの内の一のオブジェクトの設定項目が他のオブジェクトの依存項目を参照する場合、当該他のオブジェクトの依存項目の、前記実行環境により決定された値を用いて、当該一のオブジェクトを前記実行環境へ配備する、
請求項２に記載の情報処理装置。
【請求項４】
前記設定情報は、前記複数のオブジェクトの各々の設定項目に係る情報として、当該設定項目の値、当該設定項目が参照する他のオブジェクトの設定項目、及び、当該設定項目が前記依存項目であることの内のいずれかを示し、
前記配備実行手段は、前記複数のオブジェクトの内の一のオブジェクトを配備する場合に、前記設定情報における当該一のオブジェクトの設定項目の値、または、当該一のオブジェクトの設定項目が参照する他のオブジェクトの設定項目の値を用いて、当該一のオブジェクトを前記実行環境へ配備する、
請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
さらに、
前記複数のオブジェクトの各々の設定項目を示す環境情報を記憶する環境情報記憶手段と、
前記環境情報をもとに、入力された１以上の設定項目に係る情報の各々を、前記複数のオブジェクトのいずれかと関連付けることにより、前記設定情報を生成する、設定情報生成手段と、
を備える、請求項４に記載の情報処理装置。
【請求項６】
前記配備実行手段は、前記配備順序に従って、前記複数のオブジェクトの各々を、当該オブジェクトの配備先である、複数の前記実行環境のいずれかへ配備する、
請求項１乃至５のいずれかに記載の情報処理装置。
【請求項７】
システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定し、
前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する、
配備方法。
【請求項８】
前記配備順序の決定において、前記複数のオブジェクトの内の一のオブジェクトの設定項目が他のオブジェクトの依存項目を参照する場合、当該一のオブジェクトが当該他のオブジェクトがより後に前記実行環境へ配備されるように、前記配備順序を決定する、
請求項７に記載の配備方法。
【請求項９】
コンピュータに、
システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定し、
前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する、
処理を実行させるプログラムを格納する、コンピュータが読み取り可能な記録媒体。
【請求項１０】
前記配備順序の決定において、前記複数のオブジェクトの内の一のオブジェクトの設定項目が他のオブジェクトの依存項目を参照する場合、当該一のオブジェクトが当該他のオブジェクトがより後に前記実行環境へ配備されるように、前記配備順序を決定する、
処理を実行させる、請求項９に記載のプログラムを格納する、コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、配備方法、及び、記録媒体に関する。
【背景技術】
【０００２】
クラウド基盤等のＩＴ（Information Technology）サービスのユーザは、サービス上で稼働させる情報システムを構成する仮想マシン（ＶＭ（Virtual Machine））等の構成要素をサービス環境へ配備（デプロイ）することで、システムを構築する。ユーザは、システムに係る様々な設定を、サービス環境の仕様に合わせたパラメータ群へ変換し、適用する。【０００３】
しかし、上記パラメータ群には、例えば、ＶＭの内部管理ＩＤ（Identifier）、グローバルＩＰ（Internet Protocol）アドレス、セキュリティー鍵等、各ＶＭの配備時にサービス環境により逐次決定され、ユーザが予め決定できない情報も含まれる。このようなサービス環境により決定される（払い出される）情報は、通常、サービス環境からユーザへ提供され、ユーザがシステムの設定へ反映する必要がある。ユーザは、これらの情報を、ＶＭを配備するときに手動により設定に挿入する、あるいは、ＶＭの配備後に手動により設定を変更することにより、システムに反映する。このため、ＶＭ間での設定の整合性のずれや、個別の設定作業に伴う運用負荷の増大が発生する。【０００４】
システム構築において、このような設定の整合性を確保し、運用負荷を低減するための技術が、例えば、特許文献１に開示されている。【０００５】
特許文献１に記載の設定制御装置は、複数の仮想サーバにより構成されるシステムを配備する場合に、仮想サーバ上のソフトウェア間の設定の依存性をもとに、仮想サーバを配備する順序を決定する。【０００６】
また、関連技術として、特許文献２には、業務プログラムを配備する場合に、ホスト名やＩＰアドレス等の設定値を、業務プログラムの配備先として選定された仮想マシンに応じて設定する、プログラム配布方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−０８０２７５号公報
【特許文献２】特開２０１１−０９５８７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載された設定制御装置は、システムを構成する各仮想サーバの設定値が確定した状態で、仮想サーバ間の依存関係に従って、仮想サーバを配備する順序を決定する。このため、特許文献１に記載された技術は、上述のように、各ＶＭの設定が配備先環境に依存し、配備時に決定されるようなシステムには適用できない。【０００９】
本発明の目的は、上述の課題を解決し、システムを構成する構成要素が、配備時に構築先環境により設定値が決定されるような設定項目を有する場合でも、システム構築を効率的に行える情報処理装置、配備方法、及び、記録媒体を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一態様における情報処理装置は、システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報を記憶する、設定情報記憶手段と、前記設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定する、配備順序決定手段と、前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する、配備実行手段と、を備える。【００１１】
本発明の一態様における配備方法は、システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定し、前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する。【００１２】
本発明の一態様におけるコンピュータが読み取り可能な記録媒体は、コンピュータに、システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定し、前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する、処理を実行させるプログラムを格納する。
【発明の効果】
【００１３】
本発明の効果は、システムを構成する構成要素が、配備時に構築先環境により設定値が決定されるような設定項目を有する場合でも、システム構築を効率的に行うことができることである。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の第１の実施の形態における、配備システムの構成を示すブロック図である。
【図３】本発明の第１の実施の形態における、コンピュータにより実現された配備装置１００の構成を示すブロック図である。
【図４】本発明の第１の実施の形態における、配備システムの全体的な処理を示すフローチャートである。
【図５】本発明の第１の実施の形態における、制御情報生成処理（ステップＳ２）の詳細を示すフローチャートである。
【図６】本発明の第１の実施の形態における、配備オブジェクト決定処理（ステップＳ３）の詳細を示すフローチャートである。
【図７】本発明の第１の実施の形態における、配備可能判定処理（ステップＳ３３）の詳細を示すフローチャートである。
【図８】本発明の第１の実施の形態における、制御情報更新処理（ステップＳ６）の詳細を示すフローチャートである。
【図９】本発明の第１の実施の形態における、配備情報１１１、設定情報１２１、及び、実行環境３００の状態の例を示す図である。
【図１０】本発明の第２の実施の形態における、配備システムの構成を示すブロック図である。
【図１１】本発明の第２の実施の形態における、制御情報生成処理（ステップＳ２）の詳細を示すフローチャートである。
【図１２】本発明の第２の実施の形態における、環境情報１７１、入力情報１８１、及び、設定情報１２１の例を示す図である。
【図１３】本発明の第３の実施の形態における、配備システムの構成を示すブロック図である。
【図１４】本発明の第３の実施の形態における、環境情報１７１、入力情報１８１、及び、設定情報１２１の例を示す図である。
【図１５】本発明の第３の実施の形態における、配備情報１１１、設定情報１２１、及び、実行環境３００の状態の例を示す図である。
【発明を実施するための形態】
【００１５】
（第１の実施の形態）
本発明の第１の実施の形態について説明する。
【００１６】
はじめに、本発明の第１の実施の形態において構築されるコンピュータシステム（以下、単にシステムと呼ぶ）と設定情報１２１について説明する。
【００１７】
本発明の第１の実施の形態において、システムは複数の機能オブジェクト（以下、単にオブジェクトと呼ぶ）により構成される。オブジェクトは、例えば、仮想マシン（ＶＭ（Virtual Machine））上のサーバ（仮想サーバ）や、仮想ルータ、仮想ストレージ等である。オブジェクトは、実行環境３００のコンピュータ３２０や、ネットワーク装置、ストレージ装置等のリソースを用いて、実行環境３００上に配備（デプロイ）される。
【００１８】
各オブジェクトの配備では、当該オブジェクトが実現する機能に係る１以上の設定項目に対する設定値が適用される。例えば、仮想サーバの配備では、設定項目として、ＶＭのＣＰＵ（Central Processing Unit）数やメモリサイズが適用される。
【００１９】
本発明の第１の実施の形態においては、このような、システムを構成する各オブジェクトの配備に必要な設定項目と設定値（設定項目に係る情報）の１以上の組をグループ化した、設定情報１２１が定義される。
【００２０】
図９は、本発明の第１の実施の形態における、配備情報１１１、設定情報１２１、及び、実行環境３００の状態の例を示す図である。
【００２１】
図９の例では、設定情報１２１は、オブジェクトの識別子ごとに、当該オブジェクトが有する設定項目の識別子と当該設定項目の設定値の組を含む。例えば、図９の設定情報１２１（状態（２ａ））では、設定項目と設定値の組として、オブジェクト「Ｐ」が、「ａ：Ｖａ」、「ｂ：ｒｅｆ（ｘ）」、「ｃ：Ｖｃ」を有することが示されている。また、オブジェクト「Ｑ」が、「ｘ：ｄｅｐ（Ｅ１）」、「ｙ：Ｖｙ」、「ｚ：Ｖｚ」を有することが示されている。
【００２２】
このように、設定情報１２１における各設定項目の設定値（各設定項目に係る情報）には、数値や文字列等、配備時に適用される具体的な値の他に、設定項目の性質を表す値である、「ｄｅｐ（）」、及び、「ｒｅｆ（）」が用いられる。
【００２３】
ここで、設定値「ｄｅｐ（）」は、設定項目が（）内で示された実行環境３００に対する依存項目であることを示す。依存項目とは、オブジェクトが実行環境３００に配備されたときに、実行環境３００により設定値が決定される設定項目である。例えば、パブリッククラウド環境上に仮想サーバを配備する場合、当該パブリッククラウド環境により、インターネット等のパブリックネットワークから到達可能なグローバルＩＰアドレスが割り当てられることがある。この場合、グローバルＩＰアドレスは、依存項目である。
【００２４】
例えば、図９の設定情報１２１（状態（２ａ））において、オブジェクト「Ｑ」の設定項目「ｘ」は依存項目である。設定項目「ｘ」の設定値は、オブジェクト「Ｑ」の配備時に、実行環境３００「Ｅ１」により決定される。
【００２５】
また、設定値「ｒｅｆ（）」は、設定項目が（）内で示された他の設定項目を参照先として用いる参照項目であることを示す。参照項目とは、設定値として、参照先の設定項目の設定値と同じ値を用いる設定項目である。例えば、データベースサーバへアクセスするアプリケーションサーバがある場合、アプリケーションサーバにおける接続先データベースのＩＰアドレスやポート番号は、データベースサーバのＩＰアドレスや待ち受けポート番号と一致している必要がある。この場合、アプリケーションサーバにおける接続先データベースのＩＰアドレスやポート番号は、データベースサーバのＩＰアドレスや待ち受けポート番号を参照先として用いる、設定項目である。
【００２６】
例えば、図９の設定情報１２１（状態（２ａ））において、オブジェクト「Ｐ」の設定項目「ｂ」は参照項目である。設定項目「ｂ」の設定値には、オブジェクト「Ｑ」の設定項目「ｘ」の設定値が用いられる。
【００２７】
本発明の第１の実施の形態では、このような設定項目の性質（依存項目、参照項目）を用いて、各オブジェクトを、システム構築先の実行環境３００上に配備する順序が決定される。ここで、実行環境３００にオブジェクトの配備を要求する場合は、依存項目以外の各設定項目の設定値を指定する必要があると仮定する。この場合、例えば、あるオブジェクトＡの設定項目ａが他のオブジェクトＢの設定項目ｂを参照先として用いる参照項目であり、設定項目ｂが依存項目である場合、設定項目ａの設定値は、オブジェクトＢが配備されるまで確定しない。したがって、オブジェクトＡが、オブジェクトＢより後に配備されるように、順序が決定される。
【００２８】
次に、本発明の第１の実施の形態の構成について説明する。図２は、本発明の第１の実施の形態における、配備システムの構成を示すブロック図である。
【００２９】
図２を参照すると、本発明の第１の実施の形態における配備システムは、配備装置１００、入力装置２００、及び、実行環境３００を含む。配備装置１００は、本発明の情報処理装置の一実施形態である。
【００３０】
配備装置１００は、ＬＡＮ（Local Area Network）等を介して、入力装置２００と接続される。また、配備装置１００は、インターネット、ＬＡＮ、ＷＡＮ（Wide Area Network）等のネットワークを介して、実行環境３００に接続される。ここで、実行環境３００は、例えば、パブリッククラウドやプライベートクラウド等、システムが構築されるクラウドを提供するクラウド環境である。入力装置２００は、ユーザからシステム構築要求を受け付け、配備装置１００へ送信する。配備装置１００は、システムを構成するオブジェクトの配備を実行環境３００に要求する。
【００３１】
配備装置１００は、配備情報記憶部１１０、設定情報記憶部１２０、制御情報生成部（または、設定情報生成部）１３０、配備順序決定部１４０、配備実行部１５０、及び、制御情報更新部１６０を含む。
【００３２】
配備情報記憶部１１０は、配備情報１１１を記憶する。配備情報１１１は、各オブジェクトの配備状況を示す。
【００３３】
図９の例では、配備情報１１１は、オブジェクトの識別子ごとに、当該オブジェクトの配備状況を含む。配備状況としては、「ｗａｉｔ（配備待ち）」、「ｒｅａｄｙ（配備可能）」、「ｄｅｐｌｏｙｅｄ（配備済み）」が用いられる。
【００３４】
設定情報記憶部１２０は、上述の設定情報１２１を記憶する。
【００３５】
なお、本発明の第１の実施の形態においては、配備情報１１１と設定情報１２１とをまとめて、制御情報と呼ぶ。
【００３６】
制御情報生成部１３０は、制御情報（配備情報１１１と設定情報１２１）を生成する。
【００３７】
配備順序決定部１４０は、制御情報をもとに、実行環境３００へのオブジェクトの配備順序を決定する。ここで、配備順序決定部１４０は、制御情報を用いて、配備可能なオブジェクトを抽出する。
【００３８】
配備実行部１５０は、決定した配備順序に従って、実行環境３００へオブジェクトの配備を要求する。ここで、配備実行部１５０は、配備順序決定部１４０により抽出された配備可能なオブジェクトの配備を要求する。
【００３９】
制御情報更新部１６０は、配備の結果に応じて、制御情報を更新する。
【００４０】
実行環境３００は、管理装置３１０、及び、リソースとして、１以上のコンピュータ３２０を含む。また、実行環境３００は、リソースとして、ネットワーク装置やストレージ装置を含んでいてもよい。
【００４１】
なお、配備装置１００は、ＣＰＵとプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。
【００４２】
図３は、本発明の第１の実施の形態における、コンピュータにより実現された配備装置１００の構成を示すブロック図である。配備装置１００は、ＣＰＵ１０１、ハードディスクやメモリ等の記憶手段（記憶媒体）１０２、他の装置等とデータ通信を行う通信手段１０３、キーボード等の入力手段１０４、及び、ディスプレイ等の出力手段１０５を含む。
【００４３】
ＣＰＵ１０１は、制御情報生成部１３０、配備順序決定部１４０、配備実行部１５０、及び、制御情報更新部１６０の機能を実現するためのコンピュータプログラムを実行する。記憶手段１０２は、配備情報記憶部１１０、及び、設定情報記憶部１２０のデータを記憶する。また、配備情報記憶部１１０、及び、設定情報記憶部１２０は、それぞれ個別の記憶媒体でも、１つの記憶媒体によって構成されてもよい。通信手段１０３は、入力装置２００からシステム構築要求を受信し、実行環境３００へ配備要求を送信する。また、入力手段１０４が、ユーザからシステム構築要求を受け付ける、あるいは、出力手段１０５が、システムの構築結果や各オブジェクトの配備結果を出力してもよい。
【００４４】
また、図２に示した配備装置１００の各構成要素は、独立した論理回路でもよい。
【００４５】
次に、本発明の第１の実施の形態における配備システムの動作について説明する。
【００４６】
図４は、本発明の第１の実施の形態における、配備システムの全体的な処理を示すフローチャートである。
【００４７】
入力装置２００は、ユーザからシステム構築要求を受け付け、配備装置１００へ送信する（ステップＳ１）。ここで、システム構築要求は、設定情報１２１とシステム構築先の実行環境３００の識別子を含む。
【００４８】
例えば、入力装置２００は、図９の設定情報１２１（状態（２ａ））と実行環境３００の識別子「Ｅ１」とを含むシステム構築要求を、配備装置１００へ送信する。
【００４９】
配備装置１００の制御情報生成部１３０は、制御情報生成処理を実行する（ステップＳ２）。
【００５０】
図５は、本発明の第１の実施の形態における、制御情報生成処理（ステップＳ２）の詳細を示すフローチャートである。
【００５１】
制御情報生成部１３０は、入力装置２００から受信した設定情報１２１を設定情報記憶部１２０に保存する（ステップＳ２２）。
【００５２】
例えば、制御情報生成部１３０は、図９の設定情報１２１（状態（２ａ））を保存する。
【００５３】
制御情報生成部１３０は、設定情報１２１をもとに配備情報１１１を生成し、配備情報記憶部１１０に保存する（ステップＳ２３）。ここで、制御情報生成部１３０は、設定情報１２１に含まれる各オブジェクトの配備状況に「ｗａｉｔ」を設定した配備情報１１１を生成する。
【００５４】
例えば、制御情報生成部１３０は、図９の配備情報１１１（状態（１ａ））を生成し、保存する。
【００５５】
次に、配備順序決定部１４０は、配備オブジェクト決定処理を実行する（ステップＳ３）。
【００５６】
図６は、本発明の第１の実施の形態における、配備オブジェクト決定処理（ステップＳ３）の詳細を示すフローチャートである。
【００５７】
配備順序決定部１４０は、配備情報１１１から、配備状況が「ｗａｉｔ」のオブジェクトを抽出する（ステップＳ３１）。
【００５８】
配備順序決定部１４０は、抽出されたオブジェクトの内の１つ（対象オブジェクト）を選択する（ステップＳ３２）。
【００５９】
配備順序決定部１４０は、対象オブジェクトに対して、配備可能判定処理を実行する（ステップＳ３３）。
【００６０】
図７は、本発明の第１の実施の形態における、配備可能判定処理（ステップＳ３３）の詳細を示すフローチャートである。
【００６１】
配備順序決定部１４０は、対象オブジェクトの設定項目の内の１つ（対象設定項目）を選択する（ステップＳ３３１）。
【００６２】
配備順序決定部１４０は、対象設定項目が参照項目であるかどうかを判定する（ステップＳ３３２）。
【００６３】
ステップＳ３３２で参照項目の場合（ステップＳ３３２／Ｙ）、配備順序決定部１４０は、設定情報１２１から、対象設定項目の参照先の設定項目（参照先設定項目）を取得する（ステップＳ３３３）。
【００６４】
配備順序決定部１４０は、参照先設定項目が循環参照に相当する設定項目であるかどうかを判定する（ステップＳ３３４）。ここで、参照先設定項目が対象設定項目、あるいは、既に辿った設定項目である場合、参照先設定項目は循環参照に相当すると判定される。
【００６５】
ステップＳ３３４で循環参照に相当する設定項目の場合（ステップＳ３３４／Ｙ）、配備順序決定部１４０は、エラーとして処理全体を終了する。
【００６６】
ステップＳ３３４で循環参照に相当する設定項目でない場合（ステップＳ３３４／Ｎ）、配備順序決定部１４０は、参照先設定項目が「依存項目、かつ、設定値が未決定」であるか（設定値に「ｄｅｐ（）」が設定されているか）を判定する（ステップＳ３３５）。
【００６７】
ステップＳ３３５で「依存項目、かつ、設定値が未決定」の場合（設定値に「ｄｅｐ（）」が設定されている場合）（ステップＳ３３５／Ｙ）、対象設定項目の設定値を確定できない。したがって、配備順序決定部１４０は、配備情報１１１における対象オブジェクトの配備状況を更新せず（ｗａｉｔのまま）、配備可能判定処理（ステップＳ３３）を終了する。
【００６８】
ステップＳ３３５で「依存項目、かつ、設定値が未決定」でない場合（設定値に「ｄｅｐ（）」以外が設定されている場合）（ステップＳ３３５／Ｎ）、配備順序決定部１４０は、参照先設定項目が、さらに参照項目であるかどうかを判定する（ステップＳ３３６）。
【００６９】
ステップＳ３３６で参照項目の場合（ステップＳ３３６／Ｙ）、配備順序決定部１４０は、設定情報１２１から、参照先設定項目の参照先の設定項目（参照先設定項目）を取得する（ステップＳ３３７）。そして、配備順序決定部１４０は、取得した参照先設定項目に対して、ステップＳ３３４からの処理を繰り返す。
【００７０】
ステップＳ３３２、または、Ｓ３３６で参照項目でない場合（ステップＳ３３２／Ｎ、または、Ｓ３３６／Ｎ）、配備順序決定部１４０は、対象オブジェクトの全設定項目について処理済みかどうかを判定する（ステップＳ３３８）。
【００７１】
処理されていない設定項目がある場合（ステップＳ３３８／Ｎ）、配備順序決定部１４０は、ステップＳ３３１からの処理を繰り返す。
【００７２】
全設定項目について処理済みの場合（ステップＳ３３８／Ｙ）、対象オブジェクトが有する依存項目以外の全設定項目の設定値を確定できる。したがって、この場合、配備順序決定部１４０は、配備情報１１１における対象オブジェクトの配備状況を「ｒｅａｄｙ」へ更新（ステップＳ３３９）し、配備可能判定処理（ステップＳ３３）を終了する。
【００７３】
配備順序決定部１４０は、ステップＳ３１で抽出された全オブジェクトに対して、ステップＳ３３を繰り返す（ステップＳ３４）。
【００７４】
例えば、配備順序決定部１４０は、図９の配備情報１１１（状態（１ａ））から、オブジェクト「Ｐ」、「Ｑ」を抽出する。
【００７５】
図９の設定情報１２１（状態（２ａ））において、オブジェクト「Ｐ」の設定項目「ｂ」は参照項目であり、参照先設定項目「ｘ」が「依存項目、かつ、設定値が未決定」である。したがって、配備順序決定部１４０は、図９の配備情報１１１（状態（１ｂ））のように、オブジェクト「Ｐ」の配備状況を「ｗａｉｔ」のままとする。また、オブジェクト「Ｑ」の設定項目には参照項目が無い。したがって、配備順序決定部１４０は、図９の配備情報１１１（状態（１ｂ））のように、オブジェクト「Ｑ」の配備状況を「ｒｅａｄｙ」へ更新する。
【００７６】
次に、配備実行部１５０は、配備情報１１１における配備状況が「ｒｅａｄｙ」であるオブジェクト（配備オブジェクト）に対する配備要求を、実行環境３００へ送信する（ステップＳ４）。ここで、配備要求は、配備オブジェクトの識別子と当該配備オブジェクトの依存項目以外の各設定項目の設定値とを含む。設定項目が参照項目の場合、当該設定項目の設定値として、参照先設定項目の設定値が指定される。
【００７７】
例えば、配備実行部１５０は、オブジェクトの識別子「Ｑ」と、図９の設定情報１２１（状態（２ａ））における、各設定項目の設定値「ｙ：Ｖｙ」、「ｚ：Ｖｚ」を含む配備要求を、実行環境３００「Ｅ１」へ送信する。
【００７８】
実行環境３００の管理装置３１０は、コンピュータ３２０上に、配備オブジェクトを配備する（ステップＳ５）。ここで、管理装置３１０は、配備オブジェクトの依存項目以外の各設定項目に、配備要求で指定された設定値を適用する。また、管理装置３１０は、配備オブジェクトの依存項目である設定項目の設定値を決定して、適用する。そして、管理装置３１０は、配備の結果を示す情報（配備結果情報）を生成する。ここで、配備結果情報は、各配備オブジェクトの配備結果（正常／失敗）、依存項目である設定項目に対して決定した設定値を含む。
【００７９】
例えば、実行環境３００「Ｅ１」の管理装置３１０は、図９の実行環境３００（状態（３ａ））のように、コンピュータ３２０上に、オブジェクト「Ｑ」を配備する。ここで、管理装置３１０は、オブジェクト「Ｑ」の設定項目「ｙ」、「ｚ」に、配備要求で指定された設定値を適用する。また、管理装置３１０は、オブジェクト「Ｑ」の設定項目「ｘ」の設定値を「Ｖｘ＿Ｅ１」に決定し、適用する。管理装置３１０は、設定項目「ｘ」の設定値「Ｖｘ＿Ｅ１」を含む配備結果情報を生成する。
【００８０】
次に、制御情報更新部１６０は、制御情報更新処理を実行する（ステップＳ６）。
【００８１】
図８は、本発明の第１の実施の形態における、制御情報更新処理（ステップＳ６）の詳細を示すフローチャートである。
【００８２】
制御情報更新部１６０は、実行環境３００から配備結果情報を取得する（ステップＳ６１）。
【００８３】
制御情報更新部１６０は、配備結果情報をもとに、全配備オブジェクトの配備が正常に完了したかどうかを判定する（ステップＳ６２）。
【００８４】
ステップＳ６２で正常に完了していない配備オブジェクトがある場合（ステップＳ６２／Ｎ）、制御情報更新部１６０は、エラーとして処理全体を終了する。
【００８５】
ステップＳ６２で全配備オブジェクトの配備が正常に完了した場合（ステップＳ６２／Ｙ）、制御情報更新部１６０は、配備情報１１１における、各配備オブジェクトの配備状況を「ｄｅｐｌｏｙｅｄ」へ更新する（ステップＳ６３）。
【００８６】
制御情報更新部１６０は、設定情報１２１を参照し、各配備オブジェクトが有する設定項目に、依存項目である設定項目があるかどうかを判定する（ステップＳ６４）。
【００８７】
ステップＳ６４で依存項目である設定項目がある場合（ステップＳ６４／Ｙ）、制御情報更新部１６０は、配備結果情報から、配備時に決定された当該設定項目の設定値を取得し、設定情報１２１に反映する（ステップＳ６５）。制御情報更新部１６０は、制御情報更新処理（ステップＳ６）を終了する。
【００８８】
ステップＳ６４で依存項目である設定項目がない場合（ステップＳ６４／Ｎ）、制御情報更新部１６０は、制御情報更新処理（ステップＳ６）を終了する。
【００８９】
例えば、制御情報更新部１６０は、図９の配備情報１１１（状態（１ｃ））のように、オブジェクト「Ｑ」の配備状況を「ｄｅｐｌｏｙｅｄ」へ更新する。制御情報更新部１６０は、図９の設定情報１２１（状態（２ｂ））のように、オブジェクト「Ｑ」が有する依存項目である設定項目「ｘ」の設定値に「Ｖｘ＿Ｅ１」を設定する。
【００９０】
次に、配備順序決定部１４０は、配備情報１１１において、配備状況が「ｗａｉｔ」のオブジェクトが存在するかどうかを判定する（ステップＳ７）。
【００９１】
ステップＳ７で配備状況が「ｗａｉｔ」のオブジェクトが存在する場合（ステップＳ７／Ｙ）、ステップＳ３からの処理が実行される。
【００９２】
例えば、配備順序決定部１４０は、図９の配備情報１１１（状態（１ｃ））から、オブジェクト「Ｐ」を抽出する。
【００９３】
図９の設定情報１２１（状態（２ｂ））において、オブジェクト「Ｐ」の設定項目「ｂ」は参照項目であり、参照先設定項目「ｘ」の設定値は「Ｖｘ＿Ｅ１」に決定している。したがって、配備順序決定部１４０は、図９の配備情報１１１（状態（１ｄ））のように、オブジェクト「Ｐ」の配備状況を「ｒｅａｄｙ」へ更新する。
【００９４】
配備実行部１５０は、オブジェクトの識別子「Ｐ」と、図９の設定情報１２１（状態（２ｂ））における、各設定項目の設定値「ａ：Ｖａ」、「ｂ：Ｖｘ＿Ｅ１」、「ｃ：Ｖｃ」と、を含む配備要求を、実行環境３００「Ｅ１」へ送信する。
【００９５】
実行環境３００「Ｅ１」の管理装置３１０は、図９の実行環境３００（状態（３ｂ））のように、コンピュータ３２０上に、オブジェクト「Ｐ」を配備する。ここで、管理装置３１０は、オブジェクト「Ｐ」の設定項目「ａ」、「ｂ」、「ｃ」に、配備要求で指定された設定値を適用する。
【００９６】
制御情報更新部１６０は、図９の配備情報１１１（状態（１ｅ））のように、オブジェクト「Ｐ」の配備状況を「ｄｅｐｌｏｙｅｄ」へ更新する。
【００９７】
ステップＳ７で配備状況が「ｗａｉｔ」のオブジェクトが存在しない場合（ステップＳ７／Ｎ）、設定情報１２１の全オブジェクトが配備されたため、処理全体が終了する。
【００９８】
以上により、本発明の第１の実施の形態における配備システムの動作が完了する。
【００９９】
次に、本発明の第１の実施の形態の特徴的な構成を説明する。図１は、本明の第１の実施の形態の特徴的な構成を示すブロック図である。
【０１００】
図１を参照すると、配備装置１００（情報処理装置）は、設定情報記憶部１２０、配備順序決定部１４０、及び、配備実行部１５０を含む。
【０１０１】
設定情報記憶部１２０は、システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、複数のオブジェクトの設定項目の内の実行環境３００への配備により値が決定される依存項目を示す、設定情報１２１を記憶する。配備順序決定部１４０は、設定情報１２１をもとに、複数のオブジェクトの実行環境３００への配備順序を決定する。配備実行部１５０は、配備順序に従って、複数のオブジェクトの各々を実行環境３００へ配備する。
【０１０２】
本発明の第１の実施の形態によれば、システムを構成する構成要素（オブジェクト）が、配備時に構築先環境により設定値が決定されるような設定項目を有する場合でも、システム構築を効率的に行うことができる。その理由は、配備順序決定部１４０が、システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、実行環境３００への依存項目を示す設定情報１２１をもとに、複数のオブジェクトの実行環境３００への配備順序を決定するためである。
【０１０３】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。
【０１０４】
本発明の第２の実施の形態においては、ユーザから入力される、オブジェクトに対応づけられていない（グループ化されていない）設定項目の設定値を用いて、システムを構築する点において、本発明の第１の実施の形態と異なる。
【０１０５】
はじめに、本発明の第２の実施の形態の構成について説明する。図１０は、本発明の第２の実施の形態における、配備システムの構成を示すブロック図である。
【０１０６】
本発明の第２の実施の形態の配備装置１００は、本発明の第１の実施の形態の配備装置１００の構成に加えて、環境情報記憶部１７０を含む。
【０１０７】
環境情報記憶部１７０は、環境情報１７１を記憶する。環境情報１７１は、実行環境３００に配備可能なオブジェクトと当該オブジェクトが有する設定項目を示す。
【０１０８】
図１２は、本発明の第２の実施の形態における、環境情報１７１、入力情報１８１、及び、設定情報１２１の例を示す図である。
【０１０９】
図１２の例では、環境情報１７１は、実行環境３００の識別子ごとに、当該実行環境３００に配備可能なオブジェクトの識別子、及び、当該オブジェクトが有する設定項目の識別子を含む。図１２の環境情報１７１では、実行環境３００「Ｅ１」にオブジェクト「Ｐ」と「Ｑ」が配備可能であり、オブジェクト「Ｐ」が設定項目「ａ」、「ｂ」、「ｃ」、オブジェクト「Ｑ」が設定項目「ｘ」、「ｙ」、「ｚ」を有することが示されている。
【０１１０】
環境情報１７１は、予め、ユーザ等により設定される。
【０１１１】
また、本発明の第２の実施の形態においては、ユーザから、システム構築要求として、入力情報１８１が入力される。入力情報１８１は、システムの構築先の実行環境３００と、オブジェクトに対応づけられていない（グループ化されていない）設定項目の設定値を示す。
【０１１２】
図１２の例では、入力情報１８１は、システムの構築先の実行環境３００の識別子と、各設定項目の設定値を含む。図１２の入力情報１８１では、システムの構築先である実行環境３００「Ｅ１」について、設定項目「ａ」、「ｂ」、「ｃ」、「ｘ」、「ｙ」、及び、「ｚ」の設定値が指定されている。
【０１１３】
制御情報生成部１３０は、環境情報１７１と入力情報１８１とをもとに、システムの構築先の実行環境３００に応じた設定情報１２１を生成する。
【０１１４】
次に、本発明の第２の実施の形態における配備システムの動作について説明する。
【０１１５】
図１１は、本発明の第２の実施の形態における、制御情報生成処理（ステップＳ２）の詳細を示すフローチャートである。
【０１１６】
制御情報生成部１３０は、環境情報１７１と入力情報１８１とをもとに、設定情報１２１を生成する（ステップＳ２１）。ここで、制御情報生成部１３０は、入力情報１８１から、システムの構築先の実行環境３００を取得する。そして、制御情報生成部１３０は、環境情報１７１から、取得した実行環境３００に配備可能なオブジェクトと各オブジェクトが有する設定項目を取得する。制御情報生成部１３０は、入力情報１８１で示された各設定項目の設定値を、当該設定項目を有するオブジェクトに関連付ける（グループ化する）ことにより、設定情報１２１を生成する。
【０１１７】
例えば、制御情報生成部１３０は、図１２のように、環境情報１７１と入力情報１８１とをもとに、設定情報１２１を生成する。
【０１１８】
以下、制御情報生成部１３０は、本発明の第１の実施の形態と同様に、設定情報１２１を設定情報記憶部１２０に保存し（ステップＳ２２）、配備情報１１１を生成して、配備情報記憶部１１０に保存する（ステップＳ２３）。
【０１１９】
以上により、本発明の第２の実施の形態における配備システムの動作が完了する。
【０１２０】
本発明の第２の実施の形態によれば、ユーザが設定項目に対応するオブジェクトを指定することなく（設定値をグループ化することなく）、第１の実施の形態と同様に、システム構築を効率的に行うことができる。その理由は、制御情報生成部１３０が、環境情報１７１をもとに、入力された設定値をオブジェクトに関連付けて（グループ化して）、設定情報１２１を生成するためである。これにより、ある設定項目を設定するオブジェクトが、実行環境３００により異なる場合であっても、容易にシステムを構築できる。
【０１２１】
（第３の実施の形態）
次に、本発明の第３の実施の形態について説明する。
【０１２２】
本発明の第３の実施の形態においては、システムを複数の実行環境３００を用いて構築する点において、本発明の第２の実施の形態と異なる。
【０１２３】
はじめに、本発明の第３の実施の形態の構成について説明する。図１３は、本発明の第３の実施の形態における、配備システムの構成を示すブロック図である。
【０１２４】
図１３を参照すると、本発明の第３の実施の形態における配備システムは、配備装置１００、及び、入力装置２００に加えて、複数の実行環境３００「Ｅ１」、「Ｅ２」、…を含む。
【０１２５】
ここで、複数の実行環境３００を用いて構築されるシステムとは、例えば、パブリッククラウド上に配備されたＷｅｂサーバと、プライベートクラウド上に配備されたバッチサーバにより構成されるシステムである。
【０１２６】
図１４は、本発明の第３の実施の形態における、環境情報１７１、入力情報１８１、及び、設定情報１２１の例を示す図である。図１４の環境情報１７１では、実行環境３００「Ｅ１」、「Ｅ２」の各々について、配備可能なオブジェクトと当該オブジェクトが有する設定項目が示されている。また、図１４の入力情報１８１では、システムの構築に用いる実行環境３００「Ｅ１」、「Ｅ２」の各々について、設定項目の設定値が指定されている。図１４の設定情報１２１では、システムの構築に用いる実行環境３００「Ｅ１」、「Ｅ２」の各々について、当該実行環境３００へ配備するオブジェクトの設定項目と設定値が示されている。
【０１２７】
次に、本発明の第３の実施の形態における配備システムの動作について説明する。
【０１２８】
ここでは、図１４のような環境情報１７１が環境情報記憶部１７０に記憶されており、図１４のような入力情報１８１が入力装置２００から入力されたと仮定する。
【０１２９】
制御情報生成部１３０は、図１４のように、環境情報１７１と入力情報１８１とをもとに、設定情報１２１を生成する。
【０１３０】
図１５は、本発明の第３の実施の形態における、配備情報１１１、設定情報１２１、及び、実行環境３００の状態の例を示す図である。
【０１３１】
図１５の設定情報１２１（状態（２ａ））において、オブジェクト「Ｑ」の設定項目「ｙ」は参照項目であり、参照先設定項目「ｉ」が「依存項目、かつ、設定値が未決定」である。したがって、配備順序決定部１４０は、図１５の配備情報１１１（状態（１ｂ））のように、オブジェクト「Ｑ」の配備状況を「ｗａｉｔ」のままとし、オブジェクト「Ｐ」、「Ｒ」の配備状況を「ｒｅａｄｙ」へ更新する。
【０１３２】
配備実行部１５０は、オブジェクトの識別子「Ｐ」と、図１５の設定情報１２１（状態（２ａ））における、オブジェクト「Ｐ」の各設定項目の設定値を含む配備要求とを含む配備要求を、オブジェクト「Ｐ」の配備先である、実行環境３００「Ｅ１」へ送信する。また、配備実行部１５０は、オブジェクトの識別子「Ｒ」と、オブジェクト「Ｒ」の各設定項目の設定値とを含む配備要求を、オブジェクト「Ｒ」の配備先である、実行環境３００「Ｅ２」へ送信する。
【０１３３】
実行環境３００「Ｅ１」、「Ｅ２」の管理装置３１０は、それぞれ、図１５の実行環境３００（状態（３ａ））のように、オブジェクト「Ｐ」、「Ｒ」を配備する。ここで、実行環境３００「Ｅ２」の管理装置３１０は、設定項目「ｉ」の設定値「Ｖｉ＿Ｅ２」を決定する。
【０１３４】
制御情報更新部１６０は、図１５の配備情報１１１（状態（１ｃ））のように、オブジェクト「Ｐ」、「Ｒ」の配備状況を「ｄｅｐｌｏｙｅｄ」へ更新する。制御情報更新部１６０は、図１５の設定情報１２１（状態（２ｂ））のように、オブジェクト「Ｒ」が有する依存項目である設定項目「ｉ」の設定値に「Ｖｉ＿Ｅ２」を設定する。
【０１３５】
図１５の設定情報１２１（状態（２ｂ））において、オブジェクト「Ｑ」の設定項目「ｙ」は参照項目であり、参照先設定項目「ｉ」の設定値は「Ｖｉ＿Ｅ２」に決定している。したがって、配備順序決定部１４０は、図１５の配備情報１１１（状態（１ｄ））のように、オブジェクト「Ｑ」の配備状況を「ｒｅａｄｙ」へ更新する。
【０１３６】
配備実行部１５０は、オブジェクトの識別子「Ｑ」と、図１５の設定情報１２１（状態（２ｂ））における、オブジェクト「Ｑ」の各設定項目の設定値とを含む配備要求を、オブジェクト「Ｑ」の配備先である、実行環境３００「Ｅ１」へ送信する。
【０１３７】
実行環境３００「Ｅ１」の管理装置３１０は、図１５の実行環境３００（状態（３ｂ））のように、オブジェクト「Ｑ」を配備する。
【０１３８】
制御情報更新部１６０は、図１５の配備情報１１１（状態（１ｅ））のように、オブジェクト「Ｑ」の配備状況を「ｄｅｐｌｏｙｅｄ」へ更新する。
【０１３９】
以上により、本発明の第３の実施の形態における配備システムの動作が完了する。
【０１４０】
本発明の第３の実施の形態によれば、システムを複数の実行環境３００を用いて構築する場合でも、本発明の第１、第２の実施の形態と同様に、システム構築を効率的に行うことができる。その理由は、配備実行部１５０が、決定した配備順序に従ってオブジェクトの配備を要求する場合に、複数の実行環境３００の内の、当該オブジェクトの配備先の実行環境３００へ配備を要求するためである。
【０１４１】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１４２】
この出願は、２０１４年６月１７日に出願された日本出願特願２０１４−１２４４４４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１４３】
１００    配備装置
１０１    ＣＰＵ
１０２    記憶手段
１０３    通信手段
１０４    入力手段
１０５    出力手段
１１０    配備情報記憶部
１１１    配備情報
１２０    設定情報記憶部
１２１    設定情報
１３０    制御情報生成部
１４０    配備順序決定部
１５０    配備実行部
１６０    制御情報更新部
１７０    環境情報記憶部
１７１    環境情報
１８１    入力情報
２００    入力装置
３００    実行環境
３１０    管理装置
３２０    コンピュータ
【図１】
2015194139.tif 000003
【図２】
2015194139.tif 000004
【図３】
2015194139.tif 000005
【図４】
2015194139.tif 000006
【図５】
2015194139.tif 000007
【図６】
2015194139.tif 000008
【図７】
2015194139.tif 000009
【図８】
2015194139.tif 000010
【図９】
2015194139.tif 000011
【図１０】
2015194139.tif 000012
【図１１】
2015194139.tif 000013
【図１２】
2015194139.tif 000014
【図１３】
2015194139.tif 000015
【図１４】
2015194139.tif 000016
【図１５】
2015194139.tif 000017
【手続補正書】
【提出日】平成28年11月22日(2016.11.22)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報を記憶する、設定情報記憶手段と、
前記設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定する、配備順序決定手段と、
前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する、配備実行手段と、
を備えた情報処理装置。
【請求項２】
前記配備順序決定手段は、前記複数のオブジェクトの内の一のオブジェクトの設定項目が他のオブジェクトの依存項目を参照する場合、当該一のオブジェクトが当該他のオブジェクトより後に前記実行環境へ配備されるように、前記配備順序を決定する、
請求項１に記載の情報処理装置。
【請求項３】
前記配備実行手段は、前記複数のオブジェクトの内の一のオブジェクトの設定項目が他のオブジェクトの依存項目を参照する場合、当該他のオブジェクトの依存項目の、前記実行環境により決定された値を用いて、当該一のオブジェクトを前記実行環境へ配備する、
請求項２に記載の情報処理装置。
【請求項４】
前記設定情報は、前記複数のオブジェクトの各々の設定項目に係る情報として、当該設定項目の値、当該設定項目が参照する他のオブジェクトの設定項目、及び、当該設定項目が前記依存項目であることの内のいずれかを示し、
前記配備実行手段は、前記複数のオブジェクトの内の一のオブジェクトを配備する場合に、前記設定情報における当該一のオブジェクトの設定項目の値、または、当該一のオブジェクトの設定項目が参照する他のオブジェクトの設定項目の値を用いて、当該一のオブジェクトを前記実行環境へ配備する、
請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
さらに、
前記複数のオブジェクトの各々の設定項目を示す環境情報を記憶する環境情報記憶手段と、
前記環境情報をもとに、入力された１以上の設定項目に係る情報の各々を、前記複数のオブジェクトのいずれかと関連付けることにより、前記設定情報を生成する、設定情報生成手段と、
を備える、請求項４に記載の情報処理装置。
【請求項６】
前記配備実行手段は、前記配備順序に従って、前記複数のオブジェクトの各々を、当該オブジェクトの配備先である、複数の前記実行環境のいずれかへ配備する、
請求項１乃至５のいずれかに記載の情報処理装置。
【請求項７】
システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定し、
前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する、
配備方法。
【請求項８】
前記配備順序の決定において、前記複数のオブジェクトの内の一のオブジェクトの設定項目が他のオブジェクトの依存項目を参照する場合、当該一のオブジェクトが当該他のオブジェクトより後に前記実行環境へ配備されるように、前記配備順序を決定する、
請求項７に記載の配備方法。
【請求項９】
コンピュータに、
システムを構成する複数のオブジェクトの設定項目間の参照関係、及び、前記複数のオブジェクトの内の実行環境への配備により値が決定される依存項目を示す、設定情報をもとに、前記複数のオブジェクトの前記実行環境への配備順序を決定し、
前記配備順序に従って、前記複数のオブジェクトの各々を前記実行環境へ配備する、
処理を実行させるプログラム。
【請求項１０】
前記配備順序の決定において、前記複数のオブジェクトの内の一のオブジェクトの設定項目が他のオブジェクトの依存項目を参照する場合、当該一のオブジェクトが当該他のオブジェクトより後に前記実行環境へ配備されるように、前記配備順序を決定する、
処理を実行させる、請求項９に記載のプログラム。
【国際調査報告】
2015194139.tif 000018
2015194139.tif 000019
2015194139.tif 000020
2015194139.tif 000021