(57)【特許請求の範囲】
【請求項１】
方法であって、
クライアントコンピューティングデバイスからインスタンス上の実行のためのコマンドを使用し、分散型コンピューティング環境で起動する複数のインスタンスに関するインスタンス識別情報を読み出すことと、
読み出された前記インスタンス識別情報を使用して、前記コマンドを前記複数のインスタンスに通信することと、
前記複数のインスタンスが前記コマンドを受信し、特定の前記クライアントコンピューティングデバイスによって使用されるカスタムコマンド仕様書と、すべての前記クライアントコンピューティングデバイスによって使用されるグローバルコマンド仕様書とを含むコマンド仕様書を読み出すこと、
前記カスタムコマンド仕様書又は前記グローバルコマンド仕様書に基づいて、前記複数のインスタンスの少なくとも第１のインスタンス上で前記コマンドを実行することから得られた少なくとも第１のコマンド実行結果を受信することと、
を含む、前記方法。
【請求項２】
命令を含むコンピュータ可読記憶媒体であって、実行時に、コンピュータシステムに、
クライアントコンピューティングデバイスからインスタンス上の実行のためのコマンドを使用し、分散型コンピューティング環境で起動する複数の前記インスタンスに関するインスタンス識別情報を読み出すこと、
前記読み出されたインスタンス識別情報を使用して、前記コマンドを前記複数のインスタンスに通信すること、
前記複数のインスタンスが前記コマンドを受信し、特定の前記クライアントコンピューティングデバイスによって使用されるカスタムコマンド仕様書と、すべての前記クライアントコンピューティングデバイスによって使用されるグローバルコマンド仕様書とを含むコマンド仕様書を読み出すこと、
前記カスタムコマンド仕様書又は前記グローバルコマンド仕様書に基づいて、前記複数のインスタンスの少なくとも第１のインスタンス上で前記コマンドを実行することから得られた少なくとも第１のコマンド実行結果を受信すること、
を行わせる、前記コンピュータ可読記憶媒体。
【請求項３】
前記命令は、実行時に、さらに、前記コンピュータシステムに、
アプリケーションプログラミングインターフェース（ＡＰＩ）を介して、前記クライアントコンピューティングデバイスから前記コマンドを受信させる、
請求項２に記載のコンピュータ可読記憶媒体。
【請求項４】
前記受信されたコマンドは、タグを含み、前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記タグを使用して、前記インスタンス識別情報を読み出させる、
請求項３に記載のコンピュータ可読記憶媒体。
【請求項５】
前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記受信されたコマンドの少なくとも一部に基づいて、コマンド仕様書を読み出させ、前記コマンド仕様書は、前記クライアントコンピューティングデバイスから受信されたカスタム仕様書である、
請求項３に記載のコンピュータ可読記憶媒体。
【請求項６】
前記複数のインスタンスの少なくとも１つは、物理ハードウェア上で起動する、請求項２〜５のいずれかに記載のコンピュータ可読記憶媒体。
【請求項７】
前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記コマンド仕様書の少なくとも一部を含むように、前記通信することより前に前記受信されたコマンドを更新させる、
請求項５に記載のコンピュータ可読記憶媒体。
【請求項８】
前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記クライアントコンピューティングデバイスへの受信後に、前記少なくとも第１のコマンド実行結果を通信させる、
請求項２〜７のいずれかに記載のコンピュータ可読記憶媒体。
【請求項９】
前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記複数のインスタンスの少なくとも第２のインスタンス上で前記コマンドを実行することから得られた少なくとも第２のコマンド実行結果を受信させる、
請求項２〜８のいずれかに記載のコンピュータ可読記憶媒体。
【請求項１０】
前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記第１及び第２のコマンド実行結果を集約し、集約結果を生成させる、
請求項９に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記集約結果を前記クライアントコンピューティングデバイスに通信させる、
請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１２】
システムであって、
分散型コンピューティング環境を形成するネットワークを経由して共に連結される複数のサーバーコンピュータであって、複数の仮想マシンインスタンスを実行するための前記複数のサーバーコンピュータと、
前記複数のサーバーコンピュータ及びクライアントコンピューティングデバイスに連結されるコマンド実行サービスと、を備え、前記コマンド実行サービスは、
前記クライアントコンピューティングデバイスから、前記分散型コンピューティング環境内の少なくとも１つの前記仮想マシンインスタンス上でコマンドを実行するため、インスタンス識別情報または１つ以上のタグを含むコマンド実行要求を受信すること、
前記インスタンス識別情報または前記１つ以上のタグに基づいて、前記複数の仮想マシンインスタンスのうちの１つ以上のものを選択すること、
前記選択された１つ以上の仮想マシンインスタンス毎に、前記コマンドの少なくとも１つの定義を伴うコマンド仕様書を含むコマンド実行メッセージを生成すること、
前記コマンドと関連付けられるプラグインを使用して、実行のために、前記生成されたコマンド実行メッセージを、前記選択された１つ以上の仮想マシンインスタンスのそれぞれに通信すること、を行うように動作可能であり、
前記コマンド仕様書は、特定の前記クライアントコンピューティングデバイスによって使用されるカスタムコマンド仕様書と、すべての前記クライアントコンピューティングデバイスによって使用されるグローバルコマンド仕様書とを含む、前記システム。
【請求項１３】
前記システムは、前記コマンド実行サービス及び前記複数の仮想マシンインスタンスに連結されたインスタンスメッセージサービスをさらに備え、前記コマンド実行サービスは、さらに、
前記インスタンスメッセージサービスを使用して、前記生成されたコマンド実行メッセージを、前記１つ以上の仮想マシンインスタンスのそれぞれに通信するように、動作可能である、
請求項１２に記載のシステム。
【請求項１４】
前記コマンド実行サービスは、さらに、
前記１つ以上の仮想マシンインスタンスから、前記コマンドを実行することから得られたコマンド実行結果を受信し、
前記コマンド実行結果を前記クライアントコンピューティングデバイスに通信するように、
動作可能である、請求項１２または１３に記載のシステム。
【請求項１５】
前記コマンド実行サービスは、さらに、
ＡＰＩを介して、前記クライアントコンピューティングデバイスから、前記コマンド仕様書または前記コマンドと関連付けられるプラグインを受信するように、
動作可能である、請求項１２〜１４のいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
クラウドコンピューティングとは、遠隔地で利用可能であり及びインターネット等のネットワークを通してアクセス可能であるコンピューティングリソース（ハードウェア及びソフトウェア）を使用することである。仮想サーバー等の多くのコンピューティングデバイスが用いられるコンピューティング環境、または多くのサーバーコンピュータが用いられるクラウドコンピューティング環境において、コンピューティングリソースの使用は、コスト利点を含む多くの利点及び／または変化するコンピューティングリソースの必要性に迅速に対応できる能力を提供することができる。
【０００２】
データセンタリソースの利用の増加を容易にするために、仮想化技術は、単一の物理的コンピューティングマシンが、接続されたユーザへの独立インスタンスとして現れ及び動作する１つ以上の仮想マシンインスタンスをホストすることを可能にし得る。仮想化によって、単一の物理的コンピューティングデバイスは、動的な様式で、仮想マシンインスタンスを作成、維持、または削除することができる。同様に、ユーザは、「必要に応じて」または少なくとも「要求に応じて」、コンピュータリソースをデータセンタから要求することができ、ユーザには、様々な仮想マシンリソースが提供されることができる。様々な構成、トラブルシューティング、及びリソース再割り当てに関する問題は、アプリケーションを起動する複数（例えば、一団）のインスタンスを管理する、または、他の作業負荷を管理するクラウドコンピューティング環境の顧客に対して生じ得る。クラウドコンピューティングリーソスの使用が増加するにつれて、仮想マシンの運用、管理、及びトラブルシューティングは、時間がかかり及び非効率であり得るインスタンス毎ベースで行われる場合がある。
【０００３】
本開示に従った様々な実施形態を、図面を参照して説明する。
【図面の簡単な説明】
【０００４】
【図１】本開示の実施形態に従った、コマンド実行サービスをサポートする例示的ネットワーク環境の図である。
【図２】本開示の実施形態に従った、インスタンス上でコマンドを実行するための例示的通信シーケンスのブロック図である。
【図３】本開示の実施形態に従った、コマンド実行サービスを使用するサービスプロバイダ環境のコマンド拡張性を例示するブロック図である。
【図４】本開示の実施形態に従った、コマンド実行サービスを使用するマルチテナント環境で起動する複数の仮想マシンを示す例示的システム図である。
【図５】一実施形態による、コマンド実行サービスを提供するために使用され得る、制御プレーンと関連付けられる複数の管理コンポーネントを含む、さらに詳細な例示的システムを示す。
【図６】一実施形態に従って構成され得るコマンド実行と関連する機能性を有するホストコンピュータを用いて、仮想マシンインスタンスを起動するために使用されるハードウェア資産である、複数のホストコンピュータ、ルータ、及びスイッチの例を示す。
【図７】本開示の実施形態に従った、サービスプロバイダ環境の仮想マシンインスタンス上でコマンドを実行する例示的方法のフローチャートである。
【図８】本開示の実施形態に従った、サービスプロバイダ環境の仮想マシンインスタンス上でコマンドを実行する例示的方法のフローチャートである。
【図９】説明される技術革新が実施され得る好適なコンピューティング環境の一般例を示す。
【発明を実施するための形態】
【０００５】
以下の説明は、分散型コンピューティング環境における仮想マシンインスタンス上のコマンドの実行をサポートする技術及び解決策を対象とするものである。より具体的には、分散型コンピューティング環境のユーザは、クライアントコンピューティングデバイスを使用して、コマンド実行要求を分散型コンピューティングに送信する。コマンド実行サービス（ＣＥＳ）は、要求を受信してもよく、その要求に基づいて（例えば、要求において識別されたインスタンスＩＤまたはタグに基づいて）、１つ以上のインスタンスＩＤを読み出してもよい。要求は、所望のコマンドと、そのコマンドの１つ以上のパラメータとをさらに識別してもよい。ＣＥＳは、コマンドを定義するコマンド仕様書／コマンド定義書を読み出すことができる。コマンド実行メッセージは、識別されたインスタンス毎に生成されてもよく、各実行メッセージは、コマンド仕様書と、読み出された要求によって識別されたパラメータとを含んでもよい。ＣＥＳは、インスタンスメッセージサービス（または、他の種類の通信サービス）を使用して、各コマンド実行メッセージを対応する仮想マシンインスタンスに送信してもよい。インスタンスにおける構成エージェントは、コマンド仕様書に基づいて、プラグインを読み出してもよく、そのプラグインは、インスタンス上でコマンドを実行するために使用されることができる。コマンド実行の結果は、ＣＥＳに戻されることができ、その後、クライアントコンピューティングデバイスに戻されることができる。コマンド仕様書は、ＣＥＳを介して、維持／管理されることができ、グローバルコマンド仕様書（分散型コンピューティングの全てのクライアントによって使用されるためのグローバルコマンド）の使用と、カスタムコマンドの使用とを可能にすることができる。例えば、コマンド仕様書及び対応するコマンドプラグインは、クライアントによって生成され、ＣＥＳ及び／またはクライアントインスタンスを起動させるサーバーコンピュータにアップロードされる（例えば、仕様は、ＣＥＳにアップロードされることができ、プラグインは、インスタンス構成エージェントによって使用されるためのクライアントのインスタンスを起動させるサーバーコンピュータにアップロード／記憶されることができる）。これに関連して、ＣＥＳは、分散型コンピューティング環境に統合され、安全な様式で、コマンド拡張性（例えば、増加している利用可能なコマンド）及びインスタンス上の実行のためのコマンドのバルク通信を可能にする。
【０００６】
仮想マシンイメージは、仮想環境で仮想マシンを開始するために必要なオペレーティングシステム（例えば、Ｌｉｎｕｘ）及び他のデータを含有する。仮想マシンイメージは、物理コンピュータのディスクボリュームに類似し、マシンを起動させるために必要なファイルシステム、オペレーティングシステム、及び他のコンポーネントを含んでもよい。仮想マシンを開始するために、ハードウェアを選択する必要がある。ハードウェアの選択は、種々の異なるサイズのメモリ、ＣＰＵ容量、Ｉ／Ｏ性能の多様性を可能にし得る、インスタンスタイプにより達成されてもよい。仮想マシンイメージ及びインスタンスタイプの組み合わせは、マルチテナント環境におけるホストサーバーコンピュータ等のコンピューティングリソース上で開始され得る「インスタンス」または仮想マシンを作成するために使用されることができる。本明細書で使用される場合、用語「仮想マシン」及び「仮想マシンインスタンス」は、代替可能である。
【０００７】
本明細書で使用される場合、用語「計算サービスプロバイダ」は、１つ以上のエンド受信側へのサービスとしてコンピューティング及び記憶容量を提供することが可能である「クラウドプロバイダ」を指すことができる。計算サービスプロバイダは、ある組織によって、または、その組織の代わりによって、別の組織（例えば、テナント）のために設けられることができる（すなわち、計算サービスプロバイダは、「プライベートクラウド環境」を提供してもよい）。他の場合、計算サービスプロバイダは、複数の顧客（例えば、テナント）が独立して運用するマルチテナント環境（すなわち、パブリッククラウド環境）をサポートできる。これに関連して、複数の顧客（例えば、複数の企業またはテナント）は、マルチテナント環境内において、サーバーコンピュータ等のリソースをレンタルすることができる。
【０００８】
本明細書で使用される場合、用語「サービスプロバイダ」（または、「サービスプロバイダ環境」）は、１つ以上のエンド受信側へのプライベートまたはパブリッククラウド環境と関連付けられる１つ以上の分散型コンピューティングサービスの役割を果たすプロバイダを指す場合がある。ある場合、サービスプロバイダは、クラウドサービスプロバイダと同一であってもよい。他の場合、サービスプロバイダは、計算サービスプロバイダによって提供されたサービスのサブセットだけを提供する。さらに他の場合、サービスプロバイダは、業務用コンピューティングサービスに関する業務用サービスプロバイダである。
【０００９】
本明細書で使用される場合、用語「タグ」は、共通性（例えば、サービスプロバイダ環境の顧客のアカウントと関連付けられる仮想マシンインスタンス）がある１つ以上のネットワークリソース（例えば、仮想マシンインスタンス）を識別する文字列（例えば、テキスト）を指す場合がある。例えば、所定の顧客の複数の仮想マシンインスタンスは、（例えば、サービスプロバイダ環境の顧客または管理者によって、）タグ付けまたはラベリングされることができる。これに関連して、単一のタグは、複数の顧客インスタンスを識別するために使用されてもよく、インスタンス（例えば、インスタンスＩＤ）に関する識別情報は、（例えば、ルックアップテーブル、データベース等から）タグによって読み出されることができる。
【００１０】
図１は、本開示の実施形態に従った、コマンド実行サービスをサポートする例示的ネットワーク環境の図である。図１を参照すると、ネットワーク環境１００は、ネットワーク環境１０８を介して、クライアントコンピューティングデバイス１０４と通信するサービスプロバイダ１０２を含んでもよい。サービスプロバイダ１０２は、マルチテナントネットワーク環境であってもよく、その環境では、１人以上のクライアント（例えば、クライアントコンピューティングデバイス１０４のユーザ）は、１つ以上のサーバーコンピュータ上で１つ以上の仮想マシンインスタンス（ＶＭＩ）を起動させてもよい（例えば、インスタンス１７０、・・・、１７２がホストサーバー１６９等の1つ以上のサーバーコンピュータ上で起動することができ、または、それらの複数のインスタンスが他の物理ハードウェア上で起動することができる）（図１に単一のサーバーコンピュータ１６９のみが例示されているが、複数のサーバーコンピュータは、サービスプロバイダ１０２によって使用されることができる）。サーバーコンピュータ（例えば、１６９）は、例えば、サービスクライアント１０２の１人以上のクライアント（または、その代わりに）によって運用されるクライアントサーバーであってもよい。サービスクライアント１０２は、インスタンス識別サービス１４０、インスタンスメッセージサービス１３０、及びコマンド実行サービス（ＣＥＳ）１２０をさらに備えてもよい。
【００１１】
クライアントコンピューティングデバイス１０４は、デバイス１０４のユーザに、仮想マシンインスタンス１７０、・・・、１７２の１つ以上へのアクセスを提供するために使用されてもよい。例示的実施形態では、クライアントコンピューティングデバイス１０４は、パーソルコンピューティングデバイス、ラップトップコンピュータデバイス、ハンドヘルドコンピューティングデバイス、端末コンピューティングデバイス、モバイルデバイス（例えば、携帯電話、タブレットコンピューティングデバイス、電子ブックリーダ等）、ワイヤレスデバイス、様々な電子デバイスと電気器具などを含む、幅広い種類のコンピューティングデバイスに対応することができる。例示的実施形態では、クライアントコンピューティングデバイス１０４は、インターネット、ワイドエリアネットワーク、及び／またはローカルエリアネットワークを含み得る通信ネットワーク１０８を通した通信を確立するために必要なハードウェア及びソフトウェアコンポーネントを含む。例えば、クライアントコンピューティングデバイス１０４は、サービスプロバイダ１０２の１つ以上のサーバーコンピュータ（例えば、１６９）とのインターネットまたはイントラネットを介した通信を容易にするネットワーク機器及びブラウザーソフトウェアアプリケーションが装備されてもよい。コンピューティングデバイス１０４は、中央処理装置及びアーキテクチャ、メモリ、マスストレージ、グラフィック処理装置（ＧＰＵ）、通信ネットワーク可用性及び帯域幅などを有してもよい。
【００１２】
一実施形態では、クライアントコンピューティングデバイス１０４は、インスタンス管理アプリケーション１０６を起動させてもよい。インスタンス管理アプリケーション１０６は、ＶＭＩ１７０、・・・、１７２の１つ以上にアクセスし及びそれらを管理するために使用されてもよい。加えて、インスタンス管理アプリケーション１０６は、ＶＭＩ１７０、・・・、１７２の少なくとも１つでの実行のために、１つ以上のコマンドをサービスプロバイダ１０２に通信するために使用され得る、コマンドラインインターフェース（ＣＬＩ）及び／またはコンソールユーザインターフェースを含むことができる。
【００１３】
コマンド実行サービス（ＣＥＳ）１２０は、好適な論理回路、電気回路、インターフェース、及び／またはコードを備えてもよく、ＶＭＩ１７０、・・・、１７２の１つ以上で実行するコマンドと関連付けられる機能性を提供するように、動作可能であってもよい。また、ＣＥＳ１２０は、コマンド仕様記憶部１２２及びコマンド状態記憶部１２４を含んでもよい。コマンド仕様記憶部１２２は、グローバルコマンド仕様（ＧＣＳ）１２６、・・・、１２８及び１つ以上のカスタムコマンド仕様（ＣＣＳ）１３０等の１つ以上のコマンド仕様書を記憶するために使用されてもよい。本明細書で使用される用語「コマンド仕様」（または「コマンド定義」）は、インスタンス上の実行のためのコマンドの定義を提供するドキュメントを指す。例示的実施形態では、コマンド仕様は、属性値のペアから成るデータオブジェクトを伝送するために使用される人間が解読可能なテキストを伴うＪａｖａＳｃｒｉｐｔ（登録商標）オブジェクト表記（ＪＳＯＮ）ドキュメントである。グローバルコマンド仕様１２６、・・・、１２８は、サービスプロバイダ環境１０２のいずれかのクライアントによって使用されてもよい。カスタムコマンド仕様１３０は、サービスプロバイダ環境のクライアント（例えば、クライアントデバイス１０４のユーザ）によって提供されるコマンド仕様を含む。
【００１４】
コマンド状態記憶部１２４は、ＶＭＩ上のコマンドを実行することから得られた１つ以上のコマンド実行結果（例えば、１３２）を記憶するために使用されてもよい。コマンド実行結果１３２は、所定のコマンドに関する実行の状態及び／またはＶＭＩ上でコマンドを実行することから得られた結果／出力を含んでもよい。記憶部１２２及び１２４が別々の記憶部として例示されているが、本発明は、この点に限定されるわけではなく、記憶部１２２及び１２４の組み合わされたものとして、単体の記憶部が使用されてもよい。
【００１５】
インスタンス識別サービス１４０は、好適な電気回路、インターフェース、論理回路、及び／またはコードを備えてもよく、サービスプロバイダ環境１０２で起動するＶＭＩにインスタンスＩＤを提供するために使用されてもよい。例えば、インスタンス識別サービス１４０は、ルックアップテーブルまたはデータベースを使用することができ、タグに基づいてＶＭＩのＩＤを提供してもよい（例えば、利用可能なＶＭＩ１７０、・・・、１７２の１つ以上のＶＭＩは、タグと関連付けられることができる）。
【００１６】
コマンドメッセージサービス１３０は、好適な電気回路、インターフェース、論理回路、及び／またはコードを備えてもよく、ＣＥＳ１２０とＶＭＩ１７０、・・・、１７２の１つ以上のものとの間で、メッセージ（例えば、コマンド）及び応答（例えば、コマンド実行結果）を通信させるように動作可能であってもよい。
【００１７】
また、仮想マシンインスタンス１７０、・・・、１７２は、対応する構成エージェント１７４、・・・、１７６を含んでもよい。各構成エージェント１７４、・・・、１７６は、好適な論理回路、インターフェース、及び／またはコードを備えてもよく、コマンド（例えば、コマンド実行メッセージ１５０、・・・、１５２）を受信することと、コマンドを実行するために複数の利用可能なプラグイン（例えば、１７４、・・・、１８４）のうちの１つを選択することとを含む、ＶＭＩの実行と起動を管理するように動作可能であってもよい。例示的実施形態では、構成エージェント１７４、・・・、１７６は、対応する仮想マシンインスタンス１７０、・・・、１７２上のアプリケーションとして起動してもよい。
【００１８】
本開示の実施形態に従って、コマンド実行サービス１２０は、（図１に例示されるような）サービスプロバイダ１０２内の独立型サービスとして実施されてもよく、または、１つ以上のサーバーコンピュータ（例えば、１６９）内のコードライブラリ（すなわち、ソフトウェア）として実施されてもよい。
【００１９】
図２は、本開示の実施形態に従った、インスタンス上でコマンドを実行するための例示的通信シーケンスのブロック図である。図１〜２を参照すると、例示的動作では、サービスプロバイダ１０２のユーザ／クライアントは、デバイス１０４上のアプリケーション１０６を使用して、コマンド実行要求（ＣＥＲ）１１０をＣＥＳ１２０に送信してもよい（インデックス１ａ）。ＣＥＲ１１０は、インスタンス１７０、・・・、１７２の１つ以上でユーザが実行することを望むコマンドを識別してもよい。また、ＣＥＲ１１０は、タグ１１２（及び／または１４２等の１つ以上のＶＭＩのＩＤ）と、随意に、コマンドパラメータ１１６とを含んでもよい（タグ１１２は、２つ以上のタグ及び／またはＶＭＩのＩＤ等の１つ以上のＶＭＩ識別子を含むことができる）。ＣＥＳ１２０がコマンド実行要求１１０を受信した後、ＣＥＳ１２０は、要求を行うユーザを最初に認証してもよく、ユーザのログイン認証情報がタグと関連付けられるＶＭＩへのアクセスを可能にすることを検証してもよい。その次に、ＣＥＳ１２０は、タグ１１２をインスタンス識別サービス１４０に通信させ、タグ１１２と関連付けられるＶＭＩ１７０、・・・、１７２のインスタンスＩＤ１４２を取得してもよい。その次に、ＣＥＳ１２０は、記憶部１２２からコマンド仕様書（例えば、１２６または１３０）を読み出してもよく、読み出されたコマンド仕様書は、ＣＥＲ１１０によって識別されたコマンド１１４と関連付けられる。その次に、ＣＥＳ１２０は、タグ１１２及びインスタンスＩＤ１４２によって識別されたＶＭＩ（例えば、ＶＭＩ  １、・・・、ＶＭＩ  Ｋ）毎に、コマンド実行メッセージ（ＣＥＭ）を生成してもよい。ＣＥＭ１５０、・・・、１５２のそれぞれは、インスタンスＩＤ１４２、読み出された仕様書（例えば、グローバルドキュメント１２６または仕様書１３０）、及びＣＥＲ１１０によって受信されたコマンドパラメータ１１６を含むことができる。パラメータ１１６は、識別されたコマンドを実行するために仕様書（例えば、プラグイン）を用いて使用されることができる。コマンド１１４は、事前に定義されてもよい（例えば、複数の利用可能なコマンドから選択されてもよい）。
【００２０】
例示的実施形態では、仕様書１２６及び／または１３０は、仕様書サイズに基づいて、ＣＥＭ１５０、・・・、１５２に含まれてもよい。例えば、仕様書が事前に決定されたサイズ（例えば、閾値）よりも小さい場合、ドキュメント１２６／１３０は、ＣＥＭ１５０、・・・、１５２に含まれることができる。しかしながら、仕様書が事前に決定されたサイズ（例えば、閾値）よりも大きい場合、ドキュメントの識別（ドキュメントへのリンク）は、ＣＥＭに含まれることができる。ＣＥＭの受信後すぐに、対応するＶＭＩ構成エージェントは、ドキュメント識別（例えば、リンク）を使用してもよく、ドキュメントと関連付けられるコマンドが実行されることができるように、完全な仕様書を抽出／読み出してもよい。
【００２１】
次に、生成されたＣＥＭ１５０、・・・、１５２は、インスタンスメッセージサービス１３０を介して、ＣＥＭによって識別されたそれぞれのＶＭＩに通信されてもよい（図２のインデックス２及び３）。例えば、ＣＥＭ１５０は、ＶＭＩ１７０に通信されてもよい。構成エージェント１７４は、コマンド実行メッセージ１５０内のコマンド仕様書を使用して、利用可能なプラグイン１７８、・・・、１８０から１つのプラグイン（例えば、１７８）を選択してもよい（インデックス４）。その次に、ＶＭＩ構成エージェント１７４は、プラグイン１７８を使用して、仕様書１２６及びコマンドパラメータ１１６を用いてコマンド１１４を実行してもよい（インデックス５）。コマンド実行結果１３２は、コマンドの実行中（または実行後）に生成されてもよく、インスタンスメッセージサービス１３０を介して、ＣＥＳ１２０に通信されてもよい（インデックス６）。ＣＥＳ１２０は、コマンド状態記憶部１２４に結果１３２を記憶してもよく（インデックス７）、結果１３２をクライアントデバイス１０４に通信してもよい（インデックス８）。結果１３２は、コマンド実行状態及び／またはコマンドが実行された後に生成された出力であってもよい。例示的な実装では、ＶＭＩ１、・・・、Ｋのそれぞれから得られたコマンド実行結果１３２は集約され、集約後にデバイス１０４に送信されることができる。ＣＥＲがコマンドパラメータ１１６を含む場合、パラメータ１１６はコマンド状態記憶部１２４に記憶されることができる。
【００２２】
図３は、本開示の実施形態に従った、コマンド実行サービスを使用するサービスプロバイダ環境のコマンド拡張性を例示するブロック図である。図１〜３を参照すると、コマンド仕様記憶部１２２のさらなる詳細図が例示されている。より具体的には、記憶部１２２は、グローバルコマンド仕様書３１０、・・・、３１２と、カスタムコマンド仕様書３１４、・・・、３１６とを記憶してもよい。
【００２３】
例えば、２つの別々のユーザ３０２、３０４は、それぞれ、クライアントデバイス３０６、３０８を使用して、サービスプロバイダ１０２にアクセスしてもよい。ユーザ３０２は、複数のカスタムコマンドを生成し、対応するカスタム定義／仕様書３１４、・・・、３１６を記憶部１２２にアップロードしてもよい。また、ユーザ３０２は、対応するプラグイン３２２、・・・、３２４を、記憶部１２２及び／またはＶＭＩ１７０、・・・、１７２の１つ以上にアップロードしてもよい。例えば、カスタムプラグイン３２２は、ＶＭＩ１７０にアップロードされてもよい。さらに、アップロードを行うユーザ３０２は、カスタムコマンド仕様３１４、・・・、３１６にアクセスし／それらの仕様を使用するために、それぞれ、許可３１８、・・・、３２０を設定してもよい。許可３１８、・・・、３２０は、対応するプラグイン及び仕様書にアクセス／それらを使用する許可された１人以上のユーザを識別してもよい。ユーザ３０２がカスタムコマンド仕様（例えば、３１４）を使用する許可を他のユーザ（例えば、３０４）に与えることを決めた場合、ユーザ３０４はまた、許可３１８で識別されることができる。
【００２４】
また、サービスプロバイダ１２２は、コマンド実行サービスと関連する１つ以上のポリシーを指定するポリシードキュメント（例えば、３４０）を使用してもよい。例えば、顧客アカウントポリシー３４０は、コマンド実行結果１３２を提示するための１つ以上の優先事項、ＣＥＳ１２０にアクセスし及びそれを使用するための証明書または認証情報等を指定してもよい。
【００２５】
図４は、本開示の実施形態に従った、コマンド実行サービスを使用するマルチテナント環境で起動する複数の仮想マシンを示す例示的システム図である。より具体的には、図４は、本明細書で説明された実施形態が使用されることができる一環境を例示するネットワーク基盤サービスプロバイダ４００のコンピューティングシステム図である。背景として、サービスプロバイダ４００（すなわち、クラウドプロバイダ）は、エンド受信側（例えば、テナントまたは顧客）のコミュニティへのサービスとして、コンピューティング及び記憶容量の役割を果たすことが可能である。サービスプロバイダ４００は、図１〜３に例示されるクラウドサービスプロバイダ１０２と同一であってもよい。
【００２６】
例示的実施形態では、サービスプロバイダ４００は、ある組織によって、または、その組織の代わりによって、別の組織のために設けられることができる。すなわち、サービスプロバイダ４００は、「プライベートクラウド環境」を提供してもよい。別の実施形態では、サービスプロバイダ４００は、複数の顧客が独立して運用するマルチテナント環境（すなわち、パブリッククラウド環境）をサポートする。一般的に、サービスプロバイダ４００は、サービス（「ＩａａＳ」）のようなインフラストラクチャ、サービス（「ＰａａＳ」）のようなプラットフォーム、及び／またはサービス（「ＳａａＳ」）のようなソフトウェアなどのモデルを提供することができる。他のモデルも提供することができる。ＩａａＳモデルに関して、サービスプロバイダ４００は、物理または仮想マシン、及び他のリソースとして、コンピュータを提供することできる。仮想マシンは、以下にさらに説明するように、ハイパーバイザによって、ゲストとして、起動されることができる。ＰａａＳは、オペレーティングシステム、プログラミング言語実行環境、データベース、及びウェブサーバーを含むことができるコンピューティングプラットフォームの役割を果たす。アプリケーション開発者は、基盤のハードウェア及びソフトウェアを購入及び管理する費用を発生させることなく、サービスプロバイダプラットフォーム上でのソフトウェアソリューションを開発し及び起動させることができる。ＳａａＳモデルは、サービスプロバイダのアプリケーションソフトウェアのインストール及ぶその動作を可能にする。ある実施形態では、エンドユーザは、ウェブブラウザまたは他の軽量の顧客アプリケーションを起動する、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォン等のネットワーク化された顧客デバイスを使用して、サービスプロバイダ４００にアクセスする。当業者は、サービスプロバイダ４００が「クラウド」環境として説明されることを認識するであろう。
【００２７】
特定の例示されたサービスプロバイダ４００は、複数のサーバーコンピュータ４０２Ａ〜４０２Ｄを含む。４台のサーバーコンピュータだけが示されているが、あらゆる数のものが使用されることができ、大規模のセンタは何千台ものサーバーコンピュータを含むことができる。サーバーコンピュータ４０２Ａ〜４０２Ｄは、ソフトウェアインスタンス４０６Ａ〜４０６Ｄを実行するためのコンピューティングリソースを提供することができる。一実施形態では、インスタンス４０６Ａ〜４０６Ｄは、仮想マシンである。当該技術分野で周知のように、仮想マシンは、物理マシンのようなアプリケーションを実行させるマシン（例えば、コンピュータ）のソフトウェア実施のインスタンスである。本例では、サーバーコンピュータ４０２Ａ〜４０２Ｄのそれぞれは、単一のサーバー上の複数のインスタンス４０６の実行を可能するように構成されたハイパーバイザ４０８または他の種類のプログラムを実行するように構成されることができる。例えば、サーバー４０２Ａ〜４０２Ｄのそれぞれは、１つ以上の仮想マシンパーティションをサポートするように（例えば、ハイパーバイザ４０８を介して）構成されることができ、仮想マシンパーティションは、仮想マシンインスタンスを起動することが可能である（例えば、サーバーコンピュータ４０２Ａは、対応する仮想マシンインスタンスを起動する３つの仮想マシンパーティションのそれぞれをサポートするように構成され得る）。加えて、インスタンス４０６のそれぞれは、構成エージェント４０９等の１つ以上のアプリケーションを実行するように構成されることができる。構成エージェント４０９は、プラグイン４１１を使用して、１つ以上のコマンドを実行するために使用されてもよい。構成エージェント４０９及びプラグイン４１１は、図１を参照して説明されたような構成エージェント１７４、・・・、１７６及びプラグイン１７８、・・・、１８４と類似するものである。
【００２８】
また、サービスプロバイダ４００は、ＣＥＳ１２０と関連して本明細書に説明される機能性を有し得るコマンド実行サービス４４０を備えてもよい。コマンド実行サービス４４０は、１つ以上のサーバー４０２内のコードライブラリのような、専用サーバー（サーバー４０２Ａ〜４０２Ｄに類似するもの）のように、プロバイダ４００内で独立型サービスとして実施されてもよい、及び／または管理機能を行うサーバーコンピュータ４０４の一部として実施されてもよい。例えば、プルトコル選択サービス４４０は、管理コンポーネント４１０（図５に示すようなもの）の一部として実施されてもよい。
【００２９】
本明細書に開示された実施形態は主に仮想マシンに関連して説明されるが、他の種類のインスタンスは、本明細書に開示された概念及び技術を用いて利用されることができることを理解されたい。例えば、本明細書に開示された技術は、ストレージリソース、データ通信リソース、及び他の種類のコンピューティングデバイスを用いて、利用されることができる。また、本明細書に開示された実施形態は、仮想マシンインスタンスを利用することなく、コンピュータシステム上で、直接、アプリケーションの全てまたは一部を実行してもよい。
【００３０】
１つ以上のサーバーコンピュータ４０４は、サーバーコンピュータ４０２、インスタンス４０６、ハイパーバイザ４０８、構成エージェント４０９、プラグイン４１１、及び／またはコマンド実行サービス４４０の動作を管理するためのソフトウェアコンポーネントを実行するために保有されることができる。例えば、サーバーコンピュータ４０４は、管理コンポーネント４１０を実行することができる。顧客は管理コンポーネント４１０にアクセスし、顧客によって購入されたインスタンス４０６の動作の様々な態様を構成することができる。例えば、顧客は、インスタンスを購入、レンタル、またはリースし、インスタンスの構成を変更することができる。また、顧客は、要求に応じた購入されたインスタンスのスケーリングの方法に関する設定を指定することができる。
【００３１】
サーバーコンピュータ４０４は、コマンド実行サービス４４０よって、処理メモリとして使用され得るメモリ４５２をさらに備えてもよい。自動スケーリングコンポーネント４１２は、顧客によって定義されたルールに基づいて、インスタンス４０６をスケーリングすることができる。一実施形態では、自動スケーリングコンポーネント４１２は、顧客が、新しいインスタンスが例示化されるべきタイミングを決定する際に使用されるスケールアップルールと、既存のインスタンスが終了されるべきタイミングを決定する際に使用されるスケールダウンルールとを指定することを可能にする。自動スケーリングコンポーネント４１２は、異なるサーバーコンピュータ４０２または他のコンピューティングデバイス上で実行する多数のサブコンポーネントを構成することができる。自動スケーリングコンポーネント４１２は、内部の管理ネットワークを通して利用可能なコンピューティングリソースを監視することができ、必要に基づいて利用可能であるリソースを修正することができる。
【００３２】
配置コンポーネント４１４は、コンピューティングリソースの新しいインスタンス４０６の配置において、顧客を援助するために使用されることができる。配置コンポーネントは、アカウントのオーナーが誰であるかの情報、クレジットカード情報、オーナーの国等のインスタンスと関連付けられたアカウント情報にアクセスすることができる。配置コンポーネント４１４は、どのように新しいインスタンス４０６が構成されるべきかを記述するデータを含む構成を顧客から受信することができる。例えば、その構成は、新しいインスタンス４０６にインストールされた１つ以上のアプリケーションを指定することができ、新しいインスタンス４０６を構成するために実行されるスクリプト及び／または他の種類のコードを提供し、どのようにアプリケーションキャッシュが準備されるべきかを指定するキャッシュロジックを提供し、ならびに他のタイプの情報を提供することができる。配置コンポーネント４１４は、顧客が提供する構成及びキャッシュロジックを利用し、新しいインスタンス４０６を構成、用意、及び開始することができる。構成、キャッシュロジック、及び他の情報は、管理コンポーネント４１０を使用する顧客によって、または配置コンポーネント４１４に直接、この情報を提供することによって指定されてもよい。インスタンスマネージャ（例えば、図５の５５０）は、配置コンポーネント４１４の一部として見なすことができる。
【００３３】
顧客アカウント情報４１５は、マルチテナント環境の顧客と関連付けられるいずれかの所望の情報を含むことができる。例えば、顧客アカウント情報は、顧客用の固有の識別子、顧客アドレス、課金情報、ライセンス情報、インスタンスを開始するためのカスタマイズパラメータ、スケジュール情報、自動スケーリングパラメータ、アカウントにアクセスするために使用される以前のＩＰアドレス等を含むことができる。
【００３４】
ネットワーク４３０は、サーバーコンピュータ４０２Ａ〜４０２Ｄ及びサーバーコンピュータ４０４を相互接続するために利用されることができる。ネットワーク４３０は、インターネット、ローカルエリアネットワーク（ＬＡＮ）、または他の種類のネットワークの１つ以上のものを含むことができ、エンドユーザがサービスプロバイダ４００にアクセスすることができるようにワイドエリアネットワーク（ＷＡＮ）４４０に接続されることができる。図４に例示されたネットワークトポロジーが簡略化されていることと、より多くのネットワーク及びネットワークデバイスが本明細書に開示された様々なコンピューティングシステムを相互接続するために利用されることができることを理解されたい。
【００３５】
図５は、一実施形態による、コマンド実行サービスを提供するために使用され得る、制御プレーンと関連付けられる複数の管理コンポーネントを含む、さらに詳細な例示的システムを示す。より具体的には、図５は、サービスプロバイダ４００のマルチテナント環境内のコマンド実行サービス４４０を実施し得る、管理ホストサーバー４０４内のさらなる詳細なコンポーネントを例示する。
【００３６】
インスタンス（図４のインスタンス４０６等）にアクセスし及びそれを利用するために、顧客デバイス５１０を使用することができる。顧客デバイス５１０は、携帯電話、スマートフォン、ハンドヘルドコンピュータ、携帯情報端末（ＰＤＡ）、デスクトップコンピュータ等を含む、種々のコンピューティングデバイス、モバイルデバイス、その他のいずれかであることができる。顧客デバイス５１０は、サービスプロバイダ４００のコマンド実行サービス４４０と通信することができる。随意に、ＣＥＳ４４０との通信は、ＣＥＳ４４０の一部として実施されることができるエンドポイントサービス５１２（または、ロードバランサ）を使用して行ってもよい。ＡＰＩ要求を使用して、顧客デバイス５１０は、本明細書に説明された機能性のいずれかを実施する要求、またはサービスプロバイダ４００によって提供される１つ以上のサービスにアクセスする要求を行うことができる。サービスプロバイダ４００（及び／または管理コンポーネント４１０もしくはサーバー４０４内）に含まれる、または含まれない場合がある他の一般的な管理サービスは、承認／認証制御部５１４、例えば、承認／認証制御ウェブサービスとして共に動作する１つ以上のコンピュータ、を含む。承認制御部５１４は、ＣＥＳ４４０によって提供されるサービスに関するＡＰＩ要求を認証して有効にし、及び展開することができる。ＣＥＳ４４０は、クライアントの認証、クライアント要求等を提供する目的のために、承認制御部５１４を呼び出してもよい。
【００３７】
コマンド実行サービス４４０は、本明細書に説明されたコマンド実行機能性（例えば、ＣＥＳ１２０と関連して本明細書に説明される機能性）を実行してもよい。ＣＥＳ４４０は、承認／認証制御部５１４と、パーティションのネットワーク５４０（ターゲットインスタンス用）（例えば、コマンドを実行するためにサーバーコンピュータ上で起動する仮想デスクトップインスタンスにアクセスするためのもの）及びポリシードキュメント３４０と通信してもよい。ターゲットインスタンスホスト５４０との通信は、インスタンスメッセージサービス５１３を介して、達成されることができる。
【００３８】
図６は、一実施形態に従って構成され得るコマンド実行と関連する機能性を有するホストコンピュータを用いて、仮想マシンインスタンスを起動するために使用されるハードウェア資産である、複数のホストコンピュータ、ルータ、及びスイッチの例を示す。より具体的には、図６は、パーティションのネットワーク（またはターゲットインスタンスホスト）５４０及びそれに関連付けられる物理ハードウェアを例示する。パーティションのネットワーク５４０は、ルータ６１６等のルータによって共に連結されるデータセンタ６１０ａ、・・・、６１０ｎ等の複数のデータセンタを含むことができる。
【００３９】
ルータ６１６は、受信パケットのアドレス情報を読み取り、パケットの移動先を決定する。異なるデータセンタがホストサーバーコンピュータを含有することをルータが決める場合、パケットはそのデータセンタに転送される。パケットがデータセンタ６１０ａのホストにアドレス指定され、パケットのパブリックＩＰアドレスを、プライベートＩＰアドレスに変換するネットワークアドレス変換器（ＮＡＴ）６１８に移動する。また、ＮＡＴ６１８は、プライベートアドレスを、データセンタ６１０ａの外側にバインドされるパブリックアドレスに転換する。別のルータ６２０は、ホストサーバーコンピュータの１つ以上のラック６３０にパケットを送るために、ＮＡＴ６１８に連結されることができる。各ラック６３０は、複数のホストサーバーコンピュータに連結されるスイッチ６３２を含むことができる。詳細なホストサーバーコンピュータは、６４１の拡大図に示される。
【００４０】
各ホスト６４１は、基本的なハードウェア６５０を有する。ハードウェア６５０上の層で起動しているのは、ハイパーバイザまたはカーネル層６６０である。ハイパーバイザまたはカーネル層６６０は、タイプ１またはタイプ２のハイパーバイザとして分類されることができる。タイプ１のハイパーバイザは、ホストハードウェア６５０を直接起動させ、ハードウェアを制御し、ゲストオペレーティングシステムを管理する。タイプ２のハイパーバイザは、従来のオペレーティングシステム内で起動する。したがって、タイプ２の環境では、ハイパーバイザは、オペレーティングシステム上で起動する違う層である可能性があり、そのオペレーティングシステムは、システムハードウェアと相互作用する。異なる種類のハイパーバイザは、Ｘｅｎ−ｂａｓｅｄ、Ｈｙｐｅｒ−Ｖ、ＥＳＸｉ／ＥＳＸ、Ｌｉｎｕｘ等を含むが、他のハイパーバイザも使用することできる。例示的実施形態では、ハイパーバイザ６６０は、本明細書に説明されるように、ＤＳＮまたはＤＭＮをインストールするために使用され得るＤＦＳソフトウェア４０９を含んでもよい。
【００４１】
管理層６７０は、ハイパーバイザの一部であり、またはそれと別々になっている可能性があり、概して、ハードウェア６５０にアクセスするために必要なデバイスドライバーを含む。パーティション６８０は、ハイパーバイザにより分離した論理ユニットである。各パーティション６８０は、割り当てられた、それ自体の部分のハードウェア層のメモリ、ＣＰＵ割り当て、ストレージ等であることができる。加えて、各パーティションは、仮想マシン及びそれ自体のゲストオペレーティングシステムを含むことができる。（例えば、ＶＭＩ１は、パーティション１上で起動してもよく、ＶＭＩｎは、パーティションｎ上で起動してもよい）。したがって、各パーティション６８０は、他のパーティションから独立した、それ自体の仮想マシンをサポートするように設計された抜粋部分である。また、パーティション６８０上のＶＭＩ（ＶＭＩ１、・・・、ＶＭＩｎ）の１つ以上のものは、１つ以上のプラグインを使用して構成エージェントを実行し、ＶＭＩ上でコマンドを実行する。
【００４２】
図７〜８は、本開示の実施形態に従った、サービスプロバイダ環境の仮想マシンインスタンス上でコマンドを実行する例示的方法のフローチャートである。図１及び図７を参照すると、サービスプロバイダ環境内の１つ以上の仮想マシンインスタンス上でコマンドを実行するためのコマンド実行要求がクライアントコンピューティングデバイスから受信され得るとき、例示的方法７００は７０２で開始する。例えば、コマンド実行要求１１０は、クライアントデバイス１０４からＣＥＳ１２０によって受信されてもよい。コマンド実行要求は、タグ１１２等のタグを含んでもよい。７０４において、１つ以上の仮想マシンインスタンスに関するインスタンス識別情報は、タグに基づいて読み出されてもよい。例えば、ＣＥＳ１２０は、タグ１１２をインスタンス識別サービス１４０に通信させ、タグ１１２と関連付けられるＩＤ１４２を取得してもよい。例示的実施形態では、インスタンス識別サービス１４０及び／またはインスタンスメッセージサービス１３０は、ＣＥＳ１２０の一部として実施されてもよい。
【００４３】
７０６において、コマンド実行要求によって指定されたコマンドと関連付けられるコマンド仕様書は、読み出されてもよい。例えば、ＣＥＳ１２０は、コマンド実行要求１１０によって識別されたコマンド１１４を使用して、記憶部１２２からコマンド仕様書（例えば、１２６）を読み出してもよい。７０８において、コマンド実行メッセージは、１つ以上の仮想マシンインスタンスのそれぞれに通信される。例えば、ＣＥＳ１２０は、ＩＤ１４２と関連付けられる識別されたＶＭＩに関するコマンド実行メッセージ１５０、・・・、１５２を生成することができる。コマンド実行メッセージは、コマンド仕様書（例えば、１２６）と、コマンド実行要求（例えば、１１０）によって識別された少なくとも１つのコマンドパラメータ（例えば、１１６）とを含んでもよい。７１０において、コマンドを実行すること（例えば、構成エージェント１７４及びプラグイン１７８を使用して、ＶＭＩ１７０でコマンドを実行すること）から得られたコマンド実行結果（例えば、１３２）は、１つ以上の仮想マシンインスタンス（例えば、１７０）から受信されてもよい。７１２において、コマンド実行結果（例えば、１３２）は、ネットワーク１０８を介して、クライアントコンピューティングデバイス（１０４）に通信されてもよい。
【００４４】
図１及び図８を参照すると、サービスプロバイダ環境で起動する複数のインスタンスに関するインスタンス識別情報が、クライアントコンピューティングデバイスから、コマンド（少なくとも１つのインスタンス上で実行されるためのもの）を使用して読み出されるとき、例示的方法８００は８０２で開始する。例えば、コマンド（例えば、コマンド実行要求１１０）は、クライアントデバイス１０４からＣＥＳ１２０によって受信されてもよい。コマンド実行要求は、タグ１１２等のタグ（または、インスタンスＩＤ等の情報を識別する他のインスタンス）を含んでもよい。インスタンス識別情報（例えば、１４２）は、受信されたコマンド実行要求１１０内のタグ１１２に基づいて、（例えば、サービス１４０から）取得されることができる。
【００４５】
８０４において、コマンドは、読み出されたインスタンス識別情報を使用して、複数のインスタンスに通信されることができる。例えば、受信されたコマンド（例えば、要求１１０内の１１４）は、コマンド仕様書（例えば、１２６）を読み出すために、ＣＥＳ１２０によって使用されることができる。その次に、ＣＥＳ１２０は、インスタンスＩＤ１４２と関連付けられる識別されたＶＭＩに関するコマンド実行メッセージ１５０、・・・、１５２を生成することができる。コマンド実行メッセージは、コマンド仕様書（例えば、１２６）と、コマンド実行要求（例えば、１１０）によって識別された少なくとも１つのコマンドパラメータ（例えば、１１６）とを含んでもよい。コマンド実行メッセージ１５０、・・・、１５２は、識別されたコマンド１１４と関連付けられるプラグインを使用して、対応する構成エージェントによる実行のために、メッセージサービス１３０を使用して、対応するＶＭＩに通信されることができる。８０６において、少なくとも第１のコマンド実行結果は、複数のインスタンスの少なくとも第１のインスタンス上でコマンドを実行することから受信されてもよい。例えば、ＶＭＩ１７０の構成エージェント１７４は、コマンドの仕様書（例えば、１２６）及びコマンドと関連付けられるプラグイン（例えば、１７８）を使用して、コマンド１１４を実行してもよい。コマンドを実行することから得られたコマンド実行結果は、構成エージェント１７４によって生成されることができ、さらなる処理（例えば、デバイス１０４のユーザへの通信／表示のために、結果編集／保存能力を提供すること等）のためにＣＥＳ１２０に通信されることができる。
【００４６】
図９は、説明される技術革新が実施され得る好適なコンピューティング環境の一般例を示す。図９を参照すると、コンピューティング環境９００は、本技術革新が多様な汎用または専用コンピューティングシステムで実施され得るような、使用または機能性の範囲について何らかの制限を提案することを意図するものではない。例えば、コンピューティング環境９００は、種々のコンピューティングデバイス（例えば、デスクトップコンピュータ、ラップトップコンピュータ、サーバーコンピュータ、タブレットコンピュータ等）のいずれかであることができる。
【００４７】
図９を参照すると、コンピューティング環境９００は、１つ以上の処理装置９１０、９１５と、メモリ９２０、９２５とを含む。図９では、この基本構成９３０は、点線内に含まれる。処理装置９１０、９１５は、コンピュータ実行可能命令を実行する。処理装置は、汎用中央処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）のプロセッサ、または他のいずれかの種類のプロセッサであることができる。マルチ処理システムでは、複数の処理装置は、コンピュータ実行可能命令を実行し、処理能力を向上させる。例えば、図９は、中央処理装置９１０と、グラフィック処理装置またはコプロセッシング装置９１５とを示す。有形メモリ９２０、９２５は、処理装置（複数可）によってアクセス可能である、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ等）、または、それら２つのメモリのいくつかの組み合わせであってもよい。メモリ９２０、９２５は、処理装置（複数可）による実行のために好適なコンピュータ実行可能命令の形態で、本明細書に説明される１つ以上の技術革新（例えば、機能性）を実施するソフトウェア９８０を記憶する。
【００４８】
コンピューティングシステムは、さらなる特徴を有し得る。例えば、コンピューティング環境９００は、ストレージ９４０、１つ以上の入力デバイス９５０、１つ以上の出力デバイス９６０、及び１つ以上の通信接続９７０を含む。バス、コントローラ、またはネットワーク等の相互接続機構（図示しない）は、コンピューティング環境９００のコンポーネントを相互接続させる。典型的に、オペレーティングシステム（図示しない）は、コンピューティング環境９００で実行する他のソフトウェアに、動作環境を提供し、コンピューティング環境９００のコンポーネントの活動を連携させる。
【００４９】
有形ストレージ９４０は、取り外し可能または取り外し不可能であってもよく、持続的な方法で情報を記憶するために使用されることができ及びコンピューティング環境９００内でアクセスされることができる、磁気ディスク、磁気テープもしくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、またはいずれかの他の媒体であってもよい。ストレージ９４０は、本明細書に説明される１つ以上の技術革新を実施するソフトウェア９８０に関する命令を記憶する。
【００５０】
入力デバイス（複数可）９５０は、キーボード、マウス、ペン、もしくはトラックボール等のタッチ入力デバイス、音声入力デバイス、スキャンデバイス、またはコンピューティング環境９００に入力を提供する他のデバイスであってもよい。出力デバイス（複数可）９６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、またはコンピューティング環境９００からの出力を提供する他のデバイスであってもよい。
【００５１】
通信接続（複数可）９７０は、他のコンピューティング組織に通信媒体を介した通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオもしくはビデオの入力もしくは出力、または変調データ信号内の他のデータ等の情報を伝達する。変調データ信号は、信号内の情報のエンコードに関するそのような様式で、設定または変化される１つ以上の特徴を有する信号である。例として、及び制限されないが、通信媒体は、電気、光、ＲＦ、または他のキャリアを使用することができる。
【００５２】
本開示方法の一部の動作は便利な提示のために具体的な順序で説明されないが、この様式の説明は、特定の順序が以下に説明される特殊言語によって要求されない場合、再配列を包含することを理解されたい。例えば、連続して説明される動作は、いくつかの場合で、再配列され、または同時に行われてもよい。さらに、単純性のために、添付図は、本開示方法が他の方法と併せて使用されることができる様々な方法を示さない場合がある。
【００５３】
本開示方法のいずれかは、１つ以上のコンピュータ可読記憶媒体（例えば、１つ以上の光媒体ディスク、揮発性メモリコンポーネント（ＤＲＡＭまたはＳＲＡＭ等）、または不揮発性メモリ（フラッシュメモリまたはハードドライブ等））上に記憶され、及びコンピュータ（例えば、コンピューティングハードウェアを含むスマートフォンまたは他のモバイルデバイスを含む、いずれかの市販コンピュータ）上で実行される、コンピュータ実行可能命令のように、実施されることができる。用語「コンピュータ可読記憶媒体」は、信号及び搬送波等の通信接続を含まない。本開示の技術を実施するためのいずれかのコンピュータ実行可能命令ならびに本開示の実施形態の実施の間に作成及び使用されるいずれかのデータは、１つ以上のコンピュータ可読記憶媒体に記憶されることができる。コンピュータ実行可能命令は、ウェブブラウザまたは他のソフトウェア（リモートコンピューティングアプリケーション等）を介してアクセスまたはダウンロードされる、例えば、専用ソフトウェアアプリケーションまたはソフトウェアアプリケーションの一部であることができる。そのようなソフトウェアは、例えば、単一のローカルコンピュータ（例えば、いずれかの好適な市販コンピュータ）上で、または１つ以上のネットワークコンピュータを使用するネットワーク環境（例えば、インターネット、ワイドエリアネットワーク、ローカルエリアネットワーク、顧客サーバーネットワーク（クラウドコンピューティングネットワーク等）、またはそのような他のネットワーク）で、実行されることができる。
【００５４】
明確性のために、ソフトウェアベースの実施の一部の選択された態様だけが説明される。当該技術分野で既知の他の詳細は省略される。例えば、本開示の技術は、いずれかの特定のコンピュータ言語またはプログラムに限定されないことを理解されたい。例えば、本開示の技術は、Ｃ＋＋、Ｊａｖａ、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ、Ａｄｏｂｅ  Ｆｌａｓｈ、またはその他の好適なプログラミング言語で、書き込まれたソフトウェアによって実施されることができる。同様に、本開示の技術は、いずれかの特定のコンピュータまたはハードウェアの種類に限定されない。好適なコンピュータ及びハードウェアの詳細の一部は、既知であり、本開示で詳細に説明される必要はない。
【００５５】
また、本明細書に説明されるいずれかの機能性は、ソフトウェアの代わりに、１つ以上のハードウェアロジックコンポーネントによって、少なくとも部分的に、行われることができることを理解されたい。例えば、限定することなく、使用されることができるハードウェアロジックコンポーネントの例示する種類は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定プログラム向け集積回路（ＡＳＩＣ）、特定プログラム向け標準製品（ＡＳＳＰ）、システムオンチップシステム（ＳＯＣ）、結合プログラム可能論理回路（ＣＰＬＤ）等を含む。
【００５６】
さらに、ソフトウェアベースの実施形態（例えば、コンピュータに本開示の方法のいずれかを行わせるためのコンピュータ実行可能命令をふくむもの）のいずれかは、好適な通信手段を経由して、アップロード、ダウンロード、またはリモートでアクセスされることができる。そのような好適な通信手段は、例えば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル（光ファイバーケーブルを含む）、磁気通信、電磁通信（ＲＦ、マイクロ波、及び赤外線通信を含む）、電子通信、またはそのような他の通信手段を含む。
【００５７】
本開示の実施形態は、以下の条項を考慮して、説明されることができる。
１．分散型コンピューティング環境における仮想マシンインスタンス上でコマンドの実行するための方法であって、
クライアントコンピュータデバイスから、前記分散型コンピューティング環境内の１つ以上の仮想マシンインスタンス上でコマンドを実行するためのコマンド実行要求を受信することであって、前記コマンド実行要求はタグを含む、前記受信することと、
前記タグに基づいて、前記１つ以上の仮想マシンインスタンスに関するインスタンス識別情報を読み出すことと、
前記コマンド実行要求によって指定された前記コマンドと関連付けられるコマンド仕様書を読み出すことと、
前記１つ以上の仮想マシンインスタンスのそれぞれに、コマンド実行メッセージを通信することであって、前記コマンド実行メッセージは、前記コマンド仕様書及び前記コマンド実行要求によって識別された少なくとも１つのコマンドパラメータを含む、前記通信することと、
前記１つ以上の仮想マシンインスタンスから、前記１つ以上の仮想マシンインスタンスにおいて前記コマンドを実行することから得られたコマンド実行結果を受信することと、
前記コマンド実行結果を前記クライアントコンピューティングデバイスに通信することと、
を含む、前記方法。
【００５８】
２．前記１つ以上の仮想マシンインスタンスは、複数のインスタンスを備え、前記方法は、さらに、
アプリケーションプログラミングインターフェース（ＡＰＩ）を介して、前記コマンド実行要求を受信すること、
を含む、条項１に記載の方法。
【００５９】
３．前記複数のインスタンス毎に、前記コマンド実行メッセージを生成することと、
前記コマンドと関連付けられるプラグインを使用して、実行のために、前記生成されたメッセージを、前記複数のインスタンに通信することと、
をさらに含む、条項２に記載の方法。
【００６０】
４．前記コマンド実行結果は、コマンド実行状態または前記コマンドを実行することから生成された出力を含む、先行条項のいずれかに記載の方法。
【００６１】
５．前記分散型コンピューティング環境は、業務用コンピューティングサービスを含む、先行条項のいずれかに記載の方法。
【００６２】
６．前記コマンド仕様書は、前記コマンドの少なくとも１つの定義を含み、前記少なくとも１つのコマンドパラメータは、前記少なくとも１つの定義によって使用されるキーと値のペアのパラメータを含む、先行条項のいずれかに記載の方法。
【００６３】
７．命令を含むコンピュータ可読記憶媒体であって、実行時に、コンピュータシステムに、
クライアントコンピューティングデバイスからのコマンドを使用し、分散型コンピューティング環境で起動する複数のインスタンスに関するインスタンス識別情報を読み出すことであって、前記コマンドは、少なくとも１つの前記インスタンス上の実行のためのものである、前記読み出すこと、
前記読み出されたインスタンス識別情報を使用して、前記コマンドを前記複数のインスタンスに通信すること、
前記複数のインスタンスの少なくとも第１のインスタンス上で前記コマンドを実行することから得られた少なくとも第１のコマンド実行結果を受信すること、
を行わせる、前記コンピュータ可読記憶媒体。
【００６４】
８．前記命令は、実行時に、さらに、前記コンピュータシステムに、
アプリケーションプログラミングインターフェース（ＡＰＩ）を介して、前記クライアントコンピューティングデバイスから前記コマンドを受信させる、
条項７に記載のコンピュータ可読記憶媒体。
【００６５】
９．前記受信されたコマンドは、タグを含み、前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記タグを使用して、前記インスタンス識別情報を読み出させる、
条項８に記載のコンピュータ可読記憶媒体。
【００６６】
１０．前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記受信されたコマンドの少なくとも一部に基づいて、コマンド仕様書を読み出させ、前記コマンド仕様書は、前記クライアントコンピューティングデバイスから受信されたカスタム仕様書である、
条項８または９に記載のコンピュータ可読記憶媒体。
【００６７】
１１．前記複数のインスタンスの少なくとも１つは、物理ハードウェア上で起動する、条項７〜１０のいずれかに記載のコンピュータ可読記憶媒体。
【００６８】
１２．前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記コマンド仕様書の少なくとも一部を含むように、前記通信することより前に前記受信されたコマンドを更新させる、
条項７〜１０のいずれかに記載のコンピュータ可読記憶媒体。
【００６９】
１３．前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記クライアントコンピューティングデバイスへの受信後すぐに、前記少なくとも第１のコマンド実行結果を通信させる、
条項７〜１２のいずれかに記載のコンピュータ可読記憶媒体。
【００７０】
１４．前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記複数のインスタンスの少なくとも第２のインスタンス上で前記コマンドを実行することから得られた少なくとも第２のコマンド実行結果を受信させる、
条項７〜１３のいずれかに記載のコンピュータ可読記憶媒体。
【００７１】
１５．前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記第１及び第２のコマンド実行結果を集約し、集約結果を生成させる、
条項１４に記載のコンピュータ可読記憶媒体。
【００７２】
１６．前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記集約結果を前記クライアントコンピューティングデバイスに通信させる、
条項１５に記載のコンピュータ可読記憶媒体。
【００７３】
１７．システムであって、
分散型コンピューティング環境を形成するネットワークを経由して共に連結される複数のサーバーコンピュータであって、複数の仮想マシンインスタンスを実行するための前記複数のサーバーコンピュータと、
前記複数のサーバーコンピュータ及びクライアントコンピューティングデバイスに連結されるコマンド実行サービスと、を備え、前記コマンド実行サービスは、
前記クライアントコンピュータデバイスから、前記分散型コンピューティング環境内の少なくとも１つの前記仮想マシンインスタンス上でコマンドを実行するためのコマンド実行要求を受信することであって、前記コマンド実行要求は、インスタンス識別情報または１つ以上のタグを備える、前記受信すること、
前記インスタンス識別情報または前記１つ以上のタグに基づいて、前記複数の仮想マシンインスタンスのうちの１つ以上のものを選択すること、
前記選択された１つ以上の仮想マシンインスタンス毎に、コマンド実行メッセージを生成することであって、前記コマンド実行メッセージは、前記コマンドの少なくとも１つの定義を伴うコマンド仕様書を備える、前記生成すること、
前記コマンドと関連付けられるプラグインを使用して、実行のために、前記生成されたコマンド実行メッセージを、前記選択された１つ以上の仮想マシンインスタンスのそれぞれに通信すること、を行うように、
動作可能である、前記システム。
【００７４】
１８．前記システムは、前記コマンド実行サービス及び前記複数の仮想マシンインスタンスに連結されたインスタンスメッセージサービスをさらに備え、前記コマンド実行サービスは、さらに、
前記インスタンスメッセージサービスを使用して、前記生成されたコマンド実行メッセージを、前記１つ以上の仮想マシンインスタンスのそれぞれに通信するように、
動作可能である、条項１７に記載のシステム。
【００７５】
１９．前記コマンド実行サービスは、さらに、
前記１つ以上の仮想マシンインスタンスから、前記コマンドを実行することから得られたコマンド実行結果を受信し、
前記コマンド実行結果を前記クライアントコンピューティングデバイスに通信するように、
動作可能である、条項１７または１８に記載のシステム。
【００７６】
２０．前記コマンド実行サービスは、さらに、
ＡＰＩを介して、前記クライアントコンピューティングデバイスから、前記コマンド仕様書または前記コマンドと関連付けられるプラグインを受信するように、
動作可能である、条項１７〜１９のいずれかに記載のシステム。
【００７７】
本開示の方法、装置、及びシステムは、いずれかの方法において、限定的であると解釈されるべきではない。その代わり、本開示は、単独または互いの様々な組み合わせ及び部分的組み合わせにおける、様々な開示された実施形態の全ての新規かつ非自明の特徴及び態様を対象とするものである。本開示の方法、装置、及びシステムは、それらのいずれかの特定の態様もしくは特徴または組み合わせに限定されるわけではなく、また、本開示の実施形態は、いずれかの１つ以上の特定の利点を提示することまたは問題を解決することを要求するものでもない。
【００７８】
本開示の発明が適用され得る多くの可能な実施形態を考慮すると、例示された実施形態が本発明の好ましい例であり、本発明の範囲を限定するものとして解釈されるべきではないことを理解されたい。むしろ、本発明の範囲は、次の特許請求の範囲によって定義される。したがって、本発明として請求されるものは、これらの請求項の範囲内にある全てのものである。
【図１】
0006518346.tif 000002
【図２】
0006518346.tif 000003
【図３】
0006518346.tif 000004
【図４】
0006518346.tif 000005
【図５】
0006518346.tif 000006
【図６】
0006518346.tif 000007
【図７】
0006518346.tif 000008
【図８】
0006518346.tif 000009
【図９】
0006518346.tif 000010