(57)【要約】  本明細書では、コントローラが、複数のシステムルール、コンピュータシステムのシステム状態、及び複数のテンプレートに基づいてコンピュータシステムの物理インフラストラクチャを自動的に管理できるシステム、方法、及び装置を開示する。コンピューティング、ストレージ、及び／またはネットワーキングリソースなどのリソースをコンピュータシステムに自動的に追加するための技法について説明する。また、そのようなリソースにアプリケーション及びサービスを自動的に配備するための技法についても説明する。これらの技法は、ターンキー方式のスケーラブルなプライベートクラウドとして機能することが可能なスケーラブルなコンピュータシステムを提供する。
2021506044.tif 000002
【特許請求の範囲】
【請求項１】
物理ホストを含むコンピュータシステムで使用するためのコントローラであって、複数のシステムルール、前記コンピュータシステムのシステム状態、及び複数のテンプレートに基づいて、前記コンピュータシステムの物理インフラストラクチャを自動的に管理するように構成される、前記コントローラ
を備える、装置。
【請求項２】
前記自動化された管理は、前記システムルール、前記システム状態、及び前記テンプレートに基づく前記コンピュータシステムの物理インフラストラクチャの自動化された構成を含む、請求項１に記載の装置。
【請求項３】
前記テンプレートは、複数の異なるタイプの物理インフラストラクチャで使用するための複数のテンプレートを含む、請求項１または２に記載の装置。
【請求項４】
前記システムルールは、所与のタイプの物理インフラストラクチャを管理する場合にどのテンプレートが使用されるかを制御する、請求項３に記載の装置。
【請求項５】
前記コントローラは、ユーザ要求に応答して、前記物理インフラストラクチャの前記自動化された管理を実行するようにさらに構成される、請求項１〜４のいずれか一項に記載の装置。
【請求項６】
前記コントローラはプロセッサ及びメモリを備え、前記メモリは、前記システムルール、前記システム状態、及び前記テンプレートを記憶するように構成される、請求項１〜５のいずれか一項に記載の装置。
【請求項７】
前記コンピュータシステムは複数の物理ホスト及び複数の仮想ホストを含み、前記コントローラは、前記物理ホスト及び前記仮想ホスト上に交換可能にアプリケーションを配備するようにさらに構成される、請求項１〜６のいずれか一項に記載の装置。
【請求項８】
前記システムルールは、前記コンピュータシステムの自己組み立てのためのグローバルシステムルールを含む、請求項１〜７のいずれか一項に記載の装置。
【請求項９】
前記グローバルシステムルールは、前記コンピュータシステムへのリソースの追加に関して完了すべき複数のＩＴタスクの指定を含む、請求項８に記載の装置。
【請求項１０】
前記グローバルシステムルールは、リソースを前記コンピュータシステムに追加するために必要なハードウェアの更新可能なリストを含む、請求項８または９に記載の装置。
【請求項１１】
前記グローバルシステムルールは、前記コンピュータシステムへのリソースの追加に関して完了すべき動作及びタスクの順序付きリストの指定を含む、請求項８〜１０のいずれか一項に記載の装置。
【請求項１２】
前記システム状態は、前記コンピュータシステムのステータスを追跡、保持、変更、及び更新する、請求項１〜１１のいずれか一項に記載の装置。
【請求項１３】
前記システム状態は、前記コンピュータシステムに利用可能なリソースを追跡するように構成される、請求項１２に記載の装置。
【請求項１４】
前記テンプレートは、（１）リソース、（２）リソースにロードされるアプリケーション、（３）前記コンピュータシステム上のリソースにロードされるサービス、のうちの少なくとも１つを作成、構成、及び／または配備するために使用される既定の情報のセットを含む、請求項１〜１３のいずれか一項に記載の装置。
【請求項１５】
前記テンプレートはベアメタルテンプレートを含む、請求項１４に記載の装置。
【請求項１６】
前記テンプレートはサービステンプレートを含む、請求項１４または１５に記載の装置。
【請求項１７】
複数の前記テンプレートのそれぞれは、ベースオペレーティングシステムファイルシステムのベースイメージを含む、請求項１４〜１６のいずれか一項に記載の装置。
【請求項１８】
前記コントローラは、前記システムルールに従って前記テンプレートを使用して、前記コンピュータシステムのインフラストラクチャを構築し、相応して前記システム状態を更新するようにさらに構成される、請求項１〜１７のいずれか一項に記載の装置。
【請求項１９】
前記コントローラは、
前記システムルールを読み取って、前記コンピュータシステムの所望の状態を実現するために完了すべきタスクのリストを作成し、
前記コンピュータシステムの利用可能なリソースに基づいて、前記読み取られたシステムルールを満たすための命令を発行し、
前記システム状態を使用して、前記コンピュータシステムの利用可能なリソースを見つけて、前記リストのタスクを実行し、
前記リストのタスクに必要なリソースが利用可能であることが判明した場合、前記利用可能なリソースを使用して前記タスクを実行する、
ようにさらに構成される、請求項１８に記載の装置。
【請求項２０】
前記コントローラは、前記システムルール、システム状態、及びテンプレートに基づいて、コンピューティングリソースを自動的に追加するようにさらに構成される、請求項１〜１９のいずれか一項に記載の装置。
【請求項２１】
前記コンピューティングリソースはベアメタルコンピューティングリソースを含む、請求項２０に記載の装置。
【請求項２２】
前記コンピューティングリソースは仮想コンピューティングリソースを含む、請求項２０に記載の装置。
【請求項２３】
前記コンピュータシステムは前記コンピューティングリソースのプールを含む、請求項２０〜２２のいずれか一項に記載の装置。
【請求項２４】
前記コントローラは、
前記システムルール、システム状態、及びテンプレートに基づいて、ストレージリソースを前記コンピュータシステムに自動的に追加する
ようにさらに構成される、請求項１〜２３のいずれか一項に記載の装置。
【請求項２５】
前記ストレージリソースはベアメタルストレージリソースを含む、請求項２４に記載の装置。
【請求項２６】
前記ストレージリソースは仮想ストレージリソースを含む、請求項２４に記載の装置。
【請求項２７】
前記コンピュータシステムは前記ストレージリソースのプールを含む、請求項２４〜２６のいずれか一項に記載の装置。
【請求項２８】
前記コントローラは、前記システムルール、システム状態、及びテンプレートに基づいて、ネットワーキングリソースを前記コンピュータシステムに自動的に追加するようにさらに構成される、請求項１〜２７のいずれか一項に記載の装置。
【請求項２９】
前記ネットワーキングリソースはベアメタルネットワーキングリソースを含む、請求項２８に記載の装置。
【請求項３０】
前記ネットワーキングリソースは仮想ネットワーキングリソースを含む、請求項２８に記載の装置。
【請求項３１】
前記コンピュータシステムは前記ネットワーキングリソースのプールを含む、請求項２８〜３０のいずれか一項に記載の装置。
【請求項３２】
前記コントローラは、インターフェースを介して、（１）前記物理ホストのＢＩＯＳを構成し、（２）前記物理ホストのブートオプションを構成し、（３）サーバをストレージリソースに向けさせ、（４）前記物理ホストをブートすることによって、前記物理ホストを管理するようにさらに構成される、請求項１〜３１のいずれか一項に記載の装置。
【請求項３３】
前記インターフェースは、インテリジェントプラットフォーム管理インターフェース（ＩＰＭＩ）及びＲｅｄｆｉｓｈインターフェースのうちの少なくとも一方を含む、請求項３２に記載の装置。
【請求項３４】
前記コントローラは、画像認識を使用して、前記物理ホスト上でＢＩＯＳ変更を行うようにさらに構成される、請求項１〜３３のいずれか一項に記載の装置。
【請求項３５】
前記コントローラは、新たなリソースが前記コンピュータシステムに接続されたことに応答して、（１）前記新たなリソースが前記コンピュータシステムに接続されたことを認識し、（２）前記接続された新たなリソースに関する情報を決定し、（３）前記決定された情報を前記コンピュータシステムの状態に追加し、（４）前記決定された情報に基づいて前記テンプレートの１つを選択し、（５）前記選択されたテンプレートから導出されたイメージを前記コンピュータシステムにロードし、前記イメージはファイルシステムを含み、（６）前記ロードされたイメージの前記ファイルシステムを使用してブートするように前記新たなリソースに指示することによって、前記新たなリソースの物理インフラストラクチャを前記コンピュータシステムに自動的に追加するように構成される、請求項１〜３４のいずれか一項に記載の装置。
【請求項３６】
前記コントローラは、アウトオブバンド管理に基づいて、前記コンピュータシステムの物理インフラストラクチャを自動的に管理するように構成される、請求項１〜３５のいずれか一項に記載の装置。
【請求項３７】
前記コントローラは、インバンド管理に基づいて、前記コンピュータシステムの物理インフラストラクチャを自動的に管理するように構成される、請求項１〜３６のいずれか一項に記載の装置。
【請求項３８】
前記コントローラは、前記コンピュータシステムの追加されたリソースに関する情報を前記システム状態に追加して、前記コンピュータシステムのリソースのプールを動的に管理するようにさらに構成される、請求項１〜３０のいずれか一項に記載の装置。
【請求項３９】
前記コントローラは、前記システムルール、前記システム状態、及び前記システムテンプレートに基づいて、前記コンピュータシステムのリソース上にアプリケーションまたはサービスを自動的に配備するようにさらに構成される、請求項１〜３８のいずれか一項に記載の装置。
【請求項４０】
前記コントローラは、アウトオブバンド管理接続またはインバンド管理接続を使用して、前記コンピュータシステムのリソースによって実行される前記アプリケーションまたはサービスを配備するために、前記テンプレートの１つから導出されるアプリケーションイメージをブートするように前記コンピュータシステムのリソースに指示するようにさらに構成される、請求項３９に記載の装置。
【請求項４１】
前記システムルールは、前記リソースが前記テンプレートの１つから導出されるイメージからブートされ、次いで前記アプリケーションまたはサービスが前記テンプレートの他の１つから導出されるイメージからブートされるように、ブートの順序を指定する、請求項４０に記載の装置。
【請求項４２】
前記コントローラは、前記アプリケーションまたはサービスをアプリケーションネットワークに接続するようにさらに構成される、請求項４０または４１に記載の装置。
【請求項４３】
前記コントローラは、アウトオブバンド管理接続を介して前記アプリケーションまたはサービスを前記アプリケーションネットワークに接続するようにさらに構成される、請求項４２に記載の装置。
【請求項４４】
物理リソースを情報技術（ＩＴ）システムに追加するためのコンピュータシステムであって、
前記物理リソースのアウトオブバンド管理デバイスとのアウトオブバンド管理接続用に構成される管理ネットワークと、
（１）前記アウトオブバンド管理接続を介して前記物理リソースを認識し、（２）前記物理リソースに関する情報を前記コンピュータシステムの状態に追加し、（３）前記認識された物理リソースに基づいてテンプレートを選択し、（４）前記選択されたテンプレートから導出されたイメージをロードし、（５）前記ロードされたイメージからブートするように前記物理リソースに指示する、ように構成されるコントローラと、
を含む、前記コンピュータシステム。
【請求項４５】
コントローラが、複数のシステムルール、コンピュータシステムのシステム状態、及び複数のテンプレートにアクセスすることと、
前記コントローラが、前記アクセスされたシステムルール、システム状態、及びテンプレートに基づいて、物理ホストを含むコンピュータシステムの物理インフラストラクチャを自動的に管理することと、
を含む、方法。
【請求項４６】
前記自動的に管理するステップは、前記システムルール、前記システム状態、及び前記テンプレートに基づいて、前記コンピュータシステムの物理インフラストラクチャを自動的に構成することを含む、請求項４５に記載の方法。
【請求項４７】
前記テンプレートは、複数の異なるタイプの物理インフラストラクチャで使用するための複数のテンプレートを含む、請求項４５または４６に記載の方法。
【請求項４８】
前記選択されたルールに基づいて、所与のタイプの物理インフラストラクチャを管理する場合に前記テンプレートのいずれが使用されるかを選択すること
をさらに含む、請求項４７に記載の方法。
【請求項４９】
前記自動的に管理するステップは、前記コントローラが、ユーザ要求に応答して、前記物理インフラストラクチャの前記自動化された管理を実行することを含む、請求項４５〜４８のいずれか一項に記載の方法。
【請求項５０】
前記コントローラはプロセッサ及びメモリを備え、前記メモリは、前記システムルール、前記システム状態、及び前記テンプレートを記憶する、請求項４５〜４９のいずれか一項に記載の方法。
【請求項５１】
前記コンピュータシステムは複数の物理ホスト及び複数の仮想ホストを含み、前記方法は、
前記コントローラが、前記物理ホスト及び前記仮想ホスト上に交換可能にアプリケーションを配備すること
をさらに含む、請求項４５〜５０のいずれか一項に記載の方法。
【請求項５２】
前記システムルールは、前記コンピュータシステムの自己組み立てのためのグローバルシステムルールを含む、請求項４５〜５１のいずれか一項に記載の方法。
【請求項５３】
前記グローバルシステムルールは、前記コンピュータシステムへのリソースの追加に関して完了すべき複数のＩＴタスクの指定を含む、請求項５２に記載の方法。
【請求項５４】
前記グローバルシステムルールは、リソースを前記コンピュータシステムに追加するために必要なハードウェアの更新可能なリストを含む、請求項５２または５３に記載の方法。
【請求項５５】
前記グローバルシステムルールは、前記コンピュータシステムへのリソースの追加に関して完了すべき動作及びタスクの順序付きリストの指定を含む、請求項５２〜５４のいずれか一項に記載の方法。
【請求項５６】
前記システム状態は、前記コンピュータシステムのステータスを追跡、保持、変更、及び更新する、請求項４５〜５５のいずれか一項に記載の方法。
【請求項５７】
前記システム状態は、前記コンピュータシステムに利用可能なリソースを追跡する、請求項５６に記載の方法。
【請求項５８】
前記テンプレートは、（１）リソース、（２）リソースにロードされるアプリケーション、（３）前記コンピュータシステム上のリソースにロードされるサービス、のうちの少なくとも１つを作成、構成、及び／または配備するために使用される既定の情報のセットを含む、請求項４５〜５７のいずれか一項に記載の方法。
【請求項５９】
前記テンプレートはベアメタルテンプレートを含む、請求項５８に記載の方法。
【請求項６０】
前記テンプレートはサービステンプレートを含む、請求項５８または５９に記載の方法。
【請求項６１】
複数の前記テンプレートのそれぞれは、ベースオペレーティングシステムファイルシステムのベースイメージを含む、請求項５８〜６０のいずれか一項に記載の方法。
【請求項６２】
前記コントローラが、前記システムルールに従って前記テンプレートを使用して、前記コンピュータシステムのインフラストラクチャを構築し、相応して前記システム状態を更新すること
をさらに含む、請求項４５〜６１のいずれか一項に記載の方法。
【請求項６３】
前記コントローラが、前記システムルールを読み取って、前記コンピュータシステムの所望の状態を実現するために完了すべきタスクのリストを作成することと、
前記コントローラが、前記コンピュータシステムの利用可能なリソースに基づいて、前記読み取られたシステムルールを満たすための命令を発行することと、
前記コントローラが、前記システム状態を使用して、前記コンピュータシステムの利用可能なリソースを見つけて、前記リストのタスクを実行することと、
前記リストのタスクに必要なリソースが利用可能であることが判明した場合、前記利用可能なリソースを使用して前記タスクを実行することと、
をさらに含む、請求項６２に記載の方法。
【請求項６４】
前記自動的に管理するステップは、前記コントローラが、前記システムルール、システム状態、及びテンプレートに基づいて、コンピューティングリソースを自動的に追加することを含む、請求項４５〜６３のいずれか一項に記載の方法。
【請求項６５】
前記コンピューティングリソースはベアメタルコンピューティングリソースを含む、請求項６４に記載の方法。
【請求項６６】
前記コンピューティングリソースは仮想コンピューティングリソースを含む、請求項６４に記載の方法。
【請求項６７】
前記コンピュータシステムは、前記コンピューティングリソースのプールを含む、請求項６４〜６６のいずれか一項に記載の方法。
【請求項６８】
前記自動的に管理するステップは、前記コントローラが、前記システムルール、システム状態、及びテンプレートに基づいて、前記コンピュータシステムにストレージリソースを自動的に追加することを含む、請求項４５〜６７のいずれか一項に記載の方法。
【請求項６９】
前記ストレージリソースはベアメタルストレージリソースを含む、請求項６８に記載の方法。
【請求項７０】
前記ストレージリソースは仮想ストレージリソースを含む、請求項６８に記載の方法。
【請求項７１】
前記コンピュータシステムは前記ストレージリソースのプールを含む、請求項６８〜７０のいずれか一項に記載の方法。
【請求項７２】
前記自動的に管理するステップは、前記コントローラが、前記システムルール、システム状態、及びテンプレートに基づいて、ネットワーキングリソースを前記コンピュータシステムに自動的に追加することを含む、請求項４５〜７１のいずれか一項に記載の方法。
【請求項７３】
前記ネットワーキングリソースはベアメタルネットワーキングリソースを含む、請求項７２に記載の方法。
【請求項７４】
前記ネットワーキングリソースは仮想ネットワーキングリソースを含む、請求項７２に記載の方法。
【請求項７５】
前記コンピュータシステムは前記ネットワーキングリソースのプールを含む、請求項７２〜７４のいずれか一項に記載の方法。
【請求項７６】
前記自動的に管理するステップは、前記コントローラが、インターフェースを介して、（１）前記物理ホストのＢＩＯＳを構成し、（２）前記物理ホストのブートオプションを構成し、（３）サーバをストレージリソースに向けさせ、（４）前記物理ホストをブートすることによって、前記物理ホストを管理することを含む、請求項４５〜７５のいずれか一項に記載の方法。
【請求項７７】
前記インターフェースは、インテリジェントプラットフォーム管理インターフェース（ＩＰＭＩ）及びＲｅｄｆｉｓｈインターフェースのうちの少なくとも一方を含む、請求項７６に記載の方法。
【請求項７８】
前記自動的に管理するステップは、前記コントローラが、画像認識を使用して、前記物理ホスト上でＢＩＯＳ変更を行うことを含む、請求項４５〜７７のいずれか一項に記載の方法。
【請求項７９】
前記自動的に管理するステップは、前記コントローラが、新たなリソースが前記コンピュータシステムに接続されたことに応答して、（１）前記新たなリソースが前記コンピュータシステムに接続されたことを認識し、（２）前記接続された新たなリソースに関する情報を決定し、（３）前記決定された情報を前記コンピュータシステムの状態に追加し、（４）前記決定された情報に基づいて前記テンプレートの１つを選択し、（５）前記選択されたテンプレートから導出されたイメージを前記コンピュータシステムにロードし、前記イメージはファイルシステムを含み、（６）前記ロードされたイメージの前記ファイルシステムを使用してブートするように前記新たなリソースに指示することによって、前記新たなリソースの物理インフラストラクチャを前記コンピュータシステムに追加することを含む、請求項４５〜７８のいずれか一項に記載の方法。
【請求項８０】
前記自動的に管理するステップは、前記コントローラが、アウトオブバンド管理に基づいて、物理インフラストラクチャを前記コンピュータシステムに自動的に追加することを含む、請求項４５〜７９のいずれか一項に記載の方法。
【請求項８１】
前記自動的に管理するステップは、前記コントローラが、インバンド管理に基づいて、物理インフラストラクチャを前記コンピュータシステムに自動的に追加することを含む、請求項４５〜８０のいずれか一項に記載の方法。
【請求項８２】
前記コントローラが、前記コンピュータシステムの追加されたリソースに関する情報を前記システム状態に追加して、前記コンピュータシステムのリソースの動的に管理されるプールを作成すること
をさらに含む、請求項４５〜８１のいずれか一項に記載の方法。
【請求項８３】
前記コントローラが、前記システムルール、前記システム状態、及び前記システムテンプレートに基づいて、前記コンピュータシステムのリソース上にアプリケーションまたはサービスを自動的に配備すること
をさらに含む、請求項４５〜８２のいずれか一項に記載の方法。
【請求項８４】
前記コントローラが、アウトオブバンド管理接続またはインバンド管理接続を使用して、前記コンピュータシステムのリソースによって実行される前記アプリケーションまたはサービスを配備するために、前記テンプレートの１つから導出されるアプリケーションイメージをブートするように前記コンピュータシステムのリソースに指示すること
をさらに含む、請求項８３に記載の方法。
【請求項８５】
前記システムルールは、前記リソースが前記テンプレートの１つから導出されるイメージからブートされ、次いで前記アプリケーションまたはサービスが前記テンプレートの他の１つから導出されるイメージからブートされるように、ブートの順序を指定する、請求項８４に記載の方法。
【請求項８６】
前記アプリケーションまたはサービスをアプリケーションネットワークに接続すること
をさらに含む、請求項８４または８５に記載の方法。
【請求項８７】
前記接続するステップは、アウトオブバンド管理接続を介して前記アプリケーションまたはサービスを前記アプリケーションネットワークに接続することを含む、請求項８６に記載の方法。
【請求項８８】
物理リソースを情報技術（ＩＴ）システムに追加するための方法であって、
アウトオブバンド管理デバイスを有する物理リソースを、管理ネットワークのアウトオブバンド管理接続に接続することと、
前記管理ネットワークに関連付けられたコントローラが、（１）前記アウトオブバンド管理接続を介して前記物理リソースを認識し、（２）前記物理リソースに関する情報を前記コンピュータシステムの状態に追加し、（３）前記認識された物理リソースに基づいてテンプレートを選択し、（４）前記選択されたテンプレートから導出されたイメージをロードし、（５）前記ロードされたイメージからブートするように前記物理リソースに指示することと、
を含む、前記方法。
【請求項８９】
物理ホストを含むコンピュータシステムを自動的に管理するように構成されるコントローラであって、複数のシステムルール、前記コンピュータシステムのシステム状態、及び複数のテンプレートに基づいて、前記コンピュータシステムの物理インフラストラクチャを自動的に管理するように構成される、前記コントローラ
を備える、装置。
【請求項９０】
請求項２〜４４のいずれか一項に記載の要素をさらに含む、請求項８９に記載の装置。
【請求項９１】
請求項８９または９０に記載の前記コントローラを使用してコンピュータシステムを管理すること
を含む、方法。
【請求項９２】
請求項１〜４４及び８９〜９０のいずれか一項に記載の前記コントローラを含む、コンピュータシステム。
【請求項９３】
非一時的コンピュータ可読記憶媒体上に存在する複数の命令であって、プロセッサによる実行時に、請求項４５〜８８及び９１のいずれか一項に記載の方法を前記プロセッサに実施させるように構成される、前記命令
を含む、コンピュータプログラム製品。
【請求項９４】
システムコントローラと、ネットワークに接続可能なリソースとを含むコンピュータシステムのセキュリティを強化するための方法であって、
前記システムコントローラが、前記リソースと前記システムコントローラの間のインバンド管理接続及びストレージエリアネットワーク（ＳＡＮ）接続の少なくとも一方を選択的に制御して、（１）前記リソースが前記ネットワークに接続されている場合は、前記インバンド管理接続及び前記ＳＡＮ接続の少なくとも一方が無効化され、（２）前記リソースが前記ネットワークに接続されていない場合は、前記インバンド管理接続及び前記ＳＡＮ接続の少なくとも一方が有効化されるようにすること
を含む、前記方法。
【請求項９５】
前記システムは、前記リソースと前記システムコントローラの間の前記インバンド管理接続を含み、前記選択的に制御するステップは、前記リソースと前記システムコントローラの間の前記インバンド管理接続を制御して、（１）前記リソースが前記ネットワークに接続されている場合は、前記インバンド管理接続が無効化され、（２）前記リソースが前記ネットワークに接続されていない場合は、前記インバンド管理接続が有効化されるようにすることを含む、請求項９４に記載の方法。
【請求項９６】
前記システムは、前記リソースと前記システムコントローラの間の前記ＳＡＮ接続を含み、前記選択的に制御するステップは、前記リソースと前記システムコントローラの間の前記ＳＡＮ接続を制御して、（１）前記リソースが前記ネットワークに接続されている場合は、前記ＳＡＮ接続が無効化され、（２）前記リソースが前記ネットワークに接続されていない場合は、前記ＳＡＮ接続が有効化されるようにすることを含む、請求項９４に記載の方法。
【請求項９７】
前記システムは、前記リソースと前記システムコントローラの間の前記インバンド管理接続及び前記ＳＡＮ接続を含み、前記選択的に制御するステップは、前記リソースと前記システムの間の前記インバンド管理接続及び前記ＳＡＮ接続を制御して、（１）前記リソースが前記ネットワークに接続されている場合は、前記インバンド管理接続及び前記ＳＡＮ接続が無効化され、（２）前記リソースが前記ネットワークに接続されていない場合は、前記インバンド管理接続及び前記ＳＡＮ接続が有効化されるようにすることを含む、請求項９４に記載の方法。
【請求項９８】
前記ネットワークは、前記コンピュータシステムの外部のネットワークを含む、請求項９４〜９７のいずれか一項に記載の方法。
【請求項９９】
前記ネットワークは、前記コンピュータシステムの内部のネットワークを含む、請求項９４〜９８のいずれか一項に記載の方法。
【請求項１００】
前記システムコントローラが、前記リソースと前記システムコントローラの間のアウトオブバンド管理接続を維持すること
をさらに含む、請求項９４〜９９のいずれか一項に記載の方法。
【請求項１０１】
前記システムコントローラは、前記リソースと前記システムコントローラの間の前記アウトオブバンド管理接続を選択的に制御して、（１）前記リソースが前記ネットワークに接続されている場合は、前記アウトオブバンド管理接続が無効化され、（２）前記リソースが前記ネットワークに接続されていない場合は、前記アウトオブバンド管理接続が有効化されるようにすること
をさらに含む、請求項１００に記載の方法。
【請求項１０２】
前記コンピュータシステムに前記リソースを追加することと、
前記追加することに応答して前記選択的に制御するステップを実行することと、
をさらに含む、請求項９４〜１０１のいずれか一項に記載の方法。
【請求項１０３】
前記リソースはベアメタルクラウドノードを含む、請求項９４〜１０２のいずれか一項に記載の方法。
【請求項１０４】
前記リソースは物理リソースを含む、請求項９４〜１０３のいずれか一項に記載の方法。
【請求項１０５】
前記物理リソースは仮想マシンを含む、請求項１０４に記載の方法。
【請求項１０６】
前記物理リソースはハイパーバイザを含む、請求項１０４または１０５に記載の方法。
【請求項１０７】
前記無効化されたインバンド管理接続またはＳＡＮ接続は、制限された機能を有する、請求項９４〜１０６のいずれか一項に記載の方法。
【請求項１０８】
前記制限された機能は、前記コントローラが前記リソースに書き込む能力を含むが、前記リソースが前記コントローラに書き込む能力を含まない、請求項１０７に記載の方法。
【請求項１０９】
システムコントローラと、ネットワークに接続可能なリソースとを含むコンピュータシステムのセキュリティを強化するための方法であって、
アウトオブバンド管理接続を介して前記リソースを前記システムコントローラに接続することと、
前記アウトオブバンド管理接続を介して前記リソースに仮想ディスクへのアクセスを提供することと、
前記アウトオブバンド管理接続を介して前記仮想ディスクから前記リソースにディスクイメージをコピーすることと、
を含む、前記方法。
【請求項１１０】
前記コピーされたディスクイメージからブートするように前記リソースを構成すること
をさらに含む、請求項１０９に記載の方法。
【請求項１１１】
前記コピーされたディスクイメージから前記リソースをブートすること
をさらに含む、請求項１１０に記載の方法。
【請求項１１２】
前記リソースがインバンド管理接続及びストレージエリアネットワーク（ＳＡＮ）接続の少なくとも一方を介して前記システムコントローラに接続されていない場合に、前記方法のステップを実行すること
をさらに含む、請求項１０９〜１１１のいずれか一項に記載の方法。
【請求項１１３】
物理ホスト及びリソースを含むコンピュータシステムで使用するためのコントローラであって、前記リソースはネットワークに接続可能であり、前記コントローラは、前記リソースと前記コントローラの間のインバンド管理接続及びストレージエリアネットワーク（ＳＡＮ）接続の少なくとも一方を選択的に制御して、（１）前記リソースが前記ネットワークに接続されている場合は、前記インバンド管理接続及び前記ＳＡＮ接続の少なくとも一方が無効化され、（２）前記リソースが前記ネットワークに接続されていない場合は、前記インバンド管理接続及び前記ＳＡＮ接続の少なくとも一方が有効化されるようにすることを含めて、前記コンピュータシステムの物理インフラストラクチャを自動的に管理するように構成される、前記コントローラ
を備える、装置。
【請求項１１４】
前記コントローラは、請求項９５〜１１２のいずれか一項に記載の方法を実行するようにさらに構成される、請求項１１３に記載の装置。
【請求項１１５】
請求項９４〜１１２のいずれか一項に記載の方法を実行するように構成される、コンピュータシステム。
【請求項１１６】
非一時的コンピュータ可読記憶媒体上に存在する複数の命令であって、プロセッサによる実行時に、請求項９４〜１１２のいずれか一項に記載の方法を前記プロセッサに実施させるように構成される、前記命令
を含む、コンピュータプログラム製品。
【請求項１１７】
コンピュータシステム用のコントローラであって、複数のシステムルール、前記コンピューティングシステムのシステム状態、及び複数のテンプレートにアクセスするように構成され、前記システムルールのサブセットは、他のコントローラが前記コンピューティングシステム内に配備されることを許可する構成ルールを含む、前記コントローラ
を含み、
前記コントローラは、前記構成ルールに基づいて前記コンピューティングシステム内に他のコントローラを自動的に配備するようにさらに構成され、前記他のコントローラは、前記コンピューティングシステム内の環境を制御する、
システム。
【請求項１１８】
前記コントローラは、前記コンピューティングシステム内で前記コントローラから前記他のコントローラを分離するように前記システム内の接続を制御するようにさらに構成される、請求項１１７に記載のシステム。
【請求項１１９】
前記コントローラは、前記コントローラと前記他のコントローラとの間のインバンド管理接続を選択的に有効化及び無効化することによって、前記接続を制御するようにさらに構成される、請求項１１８に記載のシステム。
【請求項１２０】
前記自動配備の一部として、前記コントローラは、前記テンプレートから導出されたファイルシステムイメージを前記他のコントローラ上にロードするようにさらに構成され、
前記他のコントローラは、前記ロードされたファイルシステムイメージに基づいて自身をブートするように構成される、
請求項１１７〜１１９のいずれか一項に記載のシステム。
【請求項１２１】
コンピューティングシステム用のコントローラが、複数のシステムルール、前記コンピューティングシステムのシステム状態、及び複数のテンプレートにアクセスすることであって、前記システムルールのサブセットは、他のコントローラが前記コンピューティングシステム内に配備されることを許可する構成ルールを含む、前記アクセスすることと、
前記コントローラが、前記構成ルールに基づいて前記コンピューティングシステム内に他のコントローラを自動的に配備することであって、前記他のコントローラは前記コンピューティングシステム内の環境を制御する、前記自動的に配備することと、
を含む、方法。
【請求項１２２】
前記コンピューティングシステム内で前記コントローラを前記他のコントローラから分離すること
をさらに含む、請求項１２１に記載の方法。
【請求項１２３】
前記分離するステップは、
前記コントローラと前記他のコントローラとの間のインバンド管理接続を選択的に無効化すること
を含む、請求項１２２に記載の方法。
【請求項１２４】
前記自動的に配備するステップは、
前記テンプレートから導出されたファイルシステムイメージを前記他のコントローラ上にロードすることと、
前記ロードされたファイルシステムイメージに基づいて前記他のコントローラをブートすることと、
を含む、請求項１２１〜１２３のいずれか一項に記載の方法。
【請求項１２５】
コンピューティングシステム用のコントローラであって、複数のシステムルール、前記コンピューティングシステムのシステム状態、及び複数のテンプレートにアクセスするように構成され、前記システムルールのサブセットは、コンピューティング環境が前記コンピューティングシステム内に配備されることを許可する構成ルールを含む、前記コントローラ
を含み、
前記コントローラは、前記構成ルールに基づいて前記コンピューティングシステム内に前記コンピューティング環境を自動的に配備するようにさらに構成される、
システム。
【請求項１２６】
前記コントローラは、前記構成ルールに基づいて、前記コンピューティングシステム内に複数のコンピューティング環境を自動的に配備するようにさらに構成される、請求項１２５に記載のシステム。
【請求項１２７】
前記コントローラは、ソフトウェア定義のネットワーキングを使用して複数の前記コンピューティング環境を相互にリンクさせることによって、より大きなコンピューティングシステムを形成するようにさらに構成される、請求項１２６に記載のシステム。
【請求項１２８】
前記コンピューティング環境は本番環境及び開発環境を含む、請求項１２６または１２７に記載のシステム。
【請求項１２９】
前記コントローラは、前記本番環境を前記配備されたコンピューティング環境上にクローンして、前記開発環境を形成するようにさらに構成される、請求項１２８に記載のシステム。
【請求項１３０】
前記開発環境は、自身に加えられた変更のテストをサポートするように構成される、請求項１２８または１２９に記載のシステム。
【請求項１３１】
前記コントローラは、前記より大きなコンピュータシステム内の新たな本番環境として稼働するように前記開発環境を切り替えるようにさらに構成される、請求項１２８〜１３０のいずれか一項に記載のシステム。
【請求項１３２】
前記コントローラは、前記より大きなコンピュータシステムから前記本番環境を削除するようにさらに構成される、請求項１３１に記載のシステム。
【請求項１３３】
前記コントローラは、前記コンピューティングシステム内で前記コントローラから前記配備されたコンピューティング環境を分離するように、前記コンピューティングシステム内の接続を制御するようにさらに構成される、請求項１２５〜１３２のいずれか一項に記載のシステム。
【請求項１３４】
前記コントローラは、前記コントローラと前記配備されたコンピューティング環境との間のインバンド管理接続を選択的に有効化及び無効化することによって、前記接続を制御するようにさらに構成される、請求項１３３に記載のシステム。
【請求項１３５】
コンピューティングシステム用のコントローラが、複数のシステムルール、前記コンピューティングシステムのシステム状態、及び複数のテンプレートにアクセスすることであって、前記システムルールのサブセットは、コンピューティング環境が前記コンピューティングシステム内に配備されることを許可する構成ルールを含む、前記アクセスすることと、
前記コントローラが、前記構成ルールに基づいて前記コンピューティングシステム内に前記コンピューティング環境を自動的に配備することと、
を含む、方法。
【請求項１３６】
前記自動的に配備するステップは、
前記コントローラが、前記構成ルールに基づいて、前記コンピューティングシステム内に複数のコンピューティング環境を自動的に配備すること
を含む、請求項１３５に記載の方法。
【請求項１３７】
前記コントローラが、ソフトウェア定義のネットワーキングを使用して複数の前記コンピューティング環境を相互にリンクさせることによって、より大きなコンピューティングシステムを形成すること
をさらに含む、請求項１３６に記載の方法。
【請求項１３８】
前記コンピューティング環境は本番環境及び開発環境を含む、請求項１３６または１３７に記載の方法。
【請求項１３９】
前記自動的に配備するステップは、前記コントローラが、前記本番環境を前記配備されたコンピューティング環境上にクローンして、前記開発環境を形成することを含む、請求項１３８に記載の方法。
【請求項１４０】
前記開発環境をテストすること
をさらに含む、請求項１３８または１３９に記載の方法。
【請求項１４１】
前記コントローラが、前記より大きなコンピュータシステム内の新たな本番環境として稼働するように前記開発環境を切り替えること
をさらに含む、請求項１３８〜１４０のいずれか一項に記載の方法。
【請求項１４２】
前記コントローラが、前記より大きなコンピュータシステムから前記本番環境を削除すること
をさらに含む、請求項１４１に記載の方法。
【請求項１４３】
前記コンピューティングシステム内で前記配備されたコンピューティング環境から前記コントローラを分離すること
をさらに含む、請求項１３５〜１４２のいずれか一項に記載の方法。
【請求項１４４】
前記分離するステップは、
前記コントローラと前記配備されたコンピューティング環境との間のインバンド管理接続を選択的に無効化すること
を含む、請求項１４３に記載の方法。
【請求項１４５】
コントローラと、
第１のコンピューティング環境と、
第２のコンピューティング環境と、
を含むシステムであって、
前記コントローラは、前記第１及び第２のコンピューティング環境を配備するように構成され、
前記第１のコンピューティング環境は、前記第２のコンピューティング環境にデータを書き込むように構成され、
前記第１のコンピューティング環境は、前記第２のコンピューティング環境からのデータの読み出しが制限され、
前記コントローラは、前記第１のコンピューティング環境によって前記第２のコンピューティング環境に書き込まれるデータを監視するように構成される、
前記システム。
【請求項１４６】
前記第２のコンピューティング環境はログサーバとして配置され、
前記第１のコンピューティング環境は、前記第１のコンピューティング環境に関するログデータを前記第２のコンピューティング環境に書き込むようにさらに構成される、
請求項１４５に記載のシステム。
【請求項１４７】
前記コントローラは、前記監視動作に応答して、前記第１のコンピューティング環境に関してアクションを起こすべきか否かを判定するように構成される、請求項１４５または１４６に記載のシステム。
【請求項１４８】
前記コンピューティングシステムは、第３のコンピューティング環境をさらに含み、前記第１のコンピューティング環境は、前記コントローラによって前記第３のコンピューティング環境と通信することが制御可能に許可され、
前記コントローラは、前記アクションの判定に応答して、前記第３のコンピューティング環境を前記第１のコンピューティング環境から分離するようにさらに構成される、
請求項１４７に記載のシステム。
【請求項１４９】
前記監視動作は、前記コントローラによる、前記書き込まれたデータに基づく、前記第１のコンピューティング環境に関してセキュリティリスクが存在するとの判定を含む、請求項１４８に記載のシステム。
【請求項１５０】
前記コントローラは、前記第１のコンピューティング環境を前記コントローラから制御可能に分離するようにさらに構成される、請求項１４５〜１４９のいずれか一項に記載のシステム。
【請求項１５１】
前記第１のコンピューティング環境は、外部のコンピュータネットワークにアクセスすることができる、請求項１４５〜１５０のいずれか一項に記載のシステム。
【請求項１５２】
前記コントローラは、
前記監視動作に応答して、前記第１のコンピューティング環境を前記外部のコンピュータネットワークから分離すべきか否かを判定し、
前記アクションの判定に応答して、前記第１のコンピューティングネットワークを前記外部のコンピュータネットワークから分離する、
ようにさらに構成される、請求項１５１に記載のシステム。
【請求項１５３】
前記第１のコンピューティング環境は本番環境であり、前記第２のコンピューティング環境は開発環境である、請求項１４５〜１５２のいずれか一項に記載のシステム。
【請求項１５４】
前記第１のコンピューティング環境は、ライブデータを前記第２のコンピューティング環境に書き込むようにさらに構成され、
前記第２のコンピューティング環境は、前記ライブデータを使用してテスト可能である、
請求項１５３に記載のシステム。
【請求項１５５】
コントローラが、コンピューティングシステム内に第１のコンピューティング環境及び第２のコンピューティング環境を配備することと、
前記第１のコンピューティング環境が前記第２のコンピューティング環境にデータを書き込むことを許可することと、
前記第１のコンピューティング環境が前記第２のコンピューティング環境からデータを読み出すことを制限することと、
前記第１のコンピューティング環境が、前記第２のコンピューティング環境にデータを書き込むことと、
前記コントローラが、前記第１のコンピューティング環境によって前記第２のコンピューティング環境に書き込まれるデータを監視することと、
を含む、方法。
【請求項１５６】
前記第２のコンピューティング環境はログサーバとして配置され、
前記書き込むステップは、前記第１のコンピューティング環境が、前記第１のコンピューティング環境に関するログデータを前記第２のコンピューティング環境に書き込むことを含む、
請求項１５５に記載の方法。
【請求項１５７】
前記コントローラが、前記監視することに応答して、前記第１のコンピューティング環境に関してアクションを起こすべきか否かを判定すること
をさらに含む、請求項１５５または１５６に記載の方法。
【請求項１５８】
前記コンピューティングシステムは、第３のコンピューティング環境をさらに含み、前記第１のコンピューティング環境は、前記コントローラによって前記第３のコンピューティング環境と通信することが制御可能に許可され、前記方法は、
前記コントローラが、前記判定することに応答して、前記第１のコンピューティング環境から前記第３のコンピューティング環境を分離すること
をさらに含む、請求項１５７に記載の方法。
【請求項１５９】
前記監視するステップは、前記書き込まれたデータに基づいて、前記第１のコンピューティング環境に関してセキュリティリスクが存在すると判定することを含む、請求項１５８に記載の方法。
【請求項１６０】
前記第１のコンピューティング環境を前記コントローラから制御可能に分離すること
をさらに含む、請求項１５５〜１５９のいずれか一項に記載の方法。
【請求項１６１】
前記第１のコンピューティング環境は、外部のコンピュータネットワークにアクセスすることができる、請求項１５５〜１６０のいずれか一項に記載の方法。
【請求項１６２】
前記コントローラが、前記監視することに応答して、前記第１のコンピューティング環境を前記外部のコンピュータネットワークから分離すべきか否かを判定することと、
前記コントローラが、前記判定することに応答して、前記第１のコンピューティングネットワークを前記外部のコンピュータネットワークから分離することと、
をさらに含む、請求項１６１に記載の方法。
【請求項１６３】
前記第１のコンピューティング環境は本番環境であり、前記第２のコンピューティング環境は開発環境である、請求項１５５〜１６２のいずれか一項に記載の方法。
【請求項１６４】
前記書き込むステップは、前記第１のコンピューティング環境が、前記第２のコンピューティング環境にライブデータを書き込むことを含み、前記方法は、
前記ライブデータを使用して前記第２のコンピューティング環境をテストすること
をさらに含む、請求項１６３に記載の方法。
【請求項１６５】
コントローラと、
第１のコンピューティング環境と、
前記第１のコンピューティング環境のクローンと、
を含むシステムであって、
前記第１のコンピューティング環境は本番環境として機能し、前記クローンは開発環境として機能し、
前記コントローラは、前記本番環境及び前記開発環境に対して配備される複数の変更管理ルールを保持及び適用して、（１）変更された開発環境が、前記システム内の新たな本番環境になるように切り替えられることを許可し、（２）前記切り替え後に前記システムが前記本番環境に戻ることを許可する、ように構成される、
前記システム。
【請求項１６６】
前記開発環境は、前記第１のコンピューティング環境の変更をテストするように構成され、
前記変更された開発環境が準備できているとの判定に応答して、コントローラは、（１）前記変更された開発環境を新たな本番環境になるように切り替え、（２）前記本番環境を前記本番環境ではなくなるように切り替える、ようにさらに構成される、請求項１６５に記載のシステム。
【請求項１６７】
前記コントローラは、前記切り替えの前に前記第１のコンピューティング環境をバックアップするようにさらに構成され、
前記新たな本番環境が適切に動作していないとの判定に応答して、前記コントローラは、（１）前記バックアップされたコンピュータシステムに基づいて、前記第１のコンピューティング環境を前記本番環境に戻すようにさらに構成される、
請求項１６６に記載のシステム。
【請求項１６８】
コントローラと、
第１のコンピューティング環境と、
前記第１のコンピューティング環境のクローンと、
を含むシステムであって、
前記第１のコンピューティング環境は本番環境として機能し、前記クローンは開発環境として機能し、
前記コントローラは、前記開発環境を読み取り専用にするように構成され、
前記コントローラは、前記本番環境からの揮発性データを記憶するために、前記開発環境でホットスタンバイデータリソースをアクティブ化するようにさらに構成され、
前記開発環境は、自身への変更を受信して前記開発環境でテストするように構成され、
前記コントローラは、（１）前記変更された開発環境を新たなコンピューティング環境として配備し、（２）前記本番環境の書き込み機能を無効化し、（３）前記本番環境からの新たなデータの、移行データとしてのキャッシングを制御し、（４）前記新たなコンピューティング環境を新たな本番環境になるように切り替え、（５）前記本番環境を本番環境ではなくなるように切り替え、（６）前記新たな本番環境への書き込みを許可する、ようにさらに構成される、
前記システム。
【請求項１６９】
前記新たな本番環境が適切に機能しているとの判定に応答して、前記新たな本番環境は、前記新たな本番環境と前記キャッシュされた移行データとの間でデータを一致させるように構成される、請求項１６８に記載のシステム。
【請求項１７０】
前記新たな本番環境が適切に機能していないとの判定に応答して、前記コントローラは、（１）前記キャッシュされた移行データに基づいて前記第１のコンピューティング環境へ前記本番環境として戻り、（２）前記新たな本番環境を本番環境ではなくなるように切り替える、ようにさらに構成される、請求項１６８に記載のシステム。
【請求項１７１】
システム内で第１のコンピューティング環境をクローンして、前記第１のコンピューティング環境のクローンを形成することであって、前記第１のコンピューティング環境は本番環境として機能し、前記クローンは開発環境として機能する、前記形成することと、
コントローラが、前記本番環境及び前記開発環境に対して配備される複数の変更管理ルールを保持及び適用して、（１）変更された開発環境が、前記システム内の新たな本番環境になるように切り替えられることを許可し、（２）前記切り替え後に前記システムが前記本番環境に戻ることを許可することと、
を含む、方法。
【請求項１７２】
前記開発環境において前記第１のコンピューティング環境の変更をテストすることと、
前記テストすることに基づいて、前記変更された開発環境が準備できているか否かを判定することと、
前記変更された開発環境が準備できているとの判定に応答して、（１）前記変更された開発環境を新たな本番環境になるように切り替え、（２）前記本番環境を前記本番環境ではなくなるように切り替えることと、
をさらに含む、請求項１７１に記載の方法。
【請求項１７３】
前記変更されたクローンされたコンピューティング環境が準備できているとの判定に応答して、前記切り替えるステップの前に前記第１のコンピューティング環境をバックアップすることと、
前記新たな本番環境が適切に動作しているか否かを判定することと、
前記新たな本番環境が適切に動作していないとの判定に応答して、前記バックアップされたコンピュータシステムに基づいて、前記第１のコンピューティング環境を前記本番環境に戻すように切り替えることと、
をさらに含む、請求項１７２に記載の方法。
【請求項１７４】
コンピュータシステム内で第１のコンピューティング環境をクローンして、クローンされたコンピューティング環境を形成することであって、前記クローンされたコンピューティング環境は開発環境として機能し、前記第１のコンピューティング環境は本番環境として機能する、前記形成することと、
前記開発環境を読み取り専用にすることと、
前記本番環境からの揮発性データを記憶するために、前記開発環境でホットスタンバイデータリソースをアクティブ化することと、
前記開発環境を変更することと、
前記開発環境で前記変更をテストすることと、
前記変更された開発環境を新たなコンピューティング環境として配備することと、
前記本番環境の書き込み機能を無効化することと、
前記本番環境からの新たなデータを移行データとしてキャッシュすることと、
前記新たなコンピューティング環境を新たな本番環境になるように切り替えることと、
前記本番環境を本番環境ではなくなるように切り替えることと、
前記新たな本番環境への書き込みを許可することと、
を含む、方法。
【請求項１７５】
前記新たな本番環境が適切に機能しているか否かを判定することと、
前記新たな本番環境が適切に機能しているとの判定に応答して、前記新たな本番環境と前記キャッシュされた移行データとの間でデータを一致させることと、
をさらに含む、請求項１７４に記載の方法。
【請求項１７６】
前記新たな本番環境が適切に機能しているか否かを判定することと、
前記新たな本番環境が適切に機能していないとの判定に応答して、（１）前記キャッシュされた移行データに基づいて、前記第１のコンピューティング環境へ前記本番環境として戻り、（２）前記新たな本番環境を本番環境ではなくなるように切り替えることと、
をさらに含む、請求項１７４に記載の方法。
【請求項１７７】
本明細書に開示する特徴の任意の組み合わせを含む、装置、システム、方法、及び／またはコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、２０１７年１２月８日に出願され、「Ａｕｔｏｍａｔｉｃａｌｌｙ  Ｄｅｐｌｏｙｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  （ＩＴ）  Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ」と題された、米国仮特許出願第６２／５９６，３５５号の優先権を主張し、その開示全体が本明細書に引用により組み込まれている。
【０００２】
本特許出願はまた、２０１８年７月６日に出願され、「Ａｕｔｏｍａｔｉｃａｌｌｙ  Ｄｅｐｌｏｙｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  （ＩＴ）  Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ」と題された、米国仮特許出願第６２／６９４，８４６号の優先権を主張し、その開示全体が本明細書に引用により組み込まれている。
【背景技術】
【０００３】
コンピューティングの需要、利用、及びニーズは過去数十年で飛躍的に高まっている。それと共に、より大きなストレージ、速度、計算能力、アプリケーション、アクセシビリティへの需要によって、コンピューティングの分野は急速に変化することとなり、多様なタイプ及びサイズのエンティティにツールが提供されている。その結果、パブリックな仮想コンピューティングシステム及びクラウドコンピューティングシステムの利用が進んで、より多くのコンピューティングリソースが多数のユーザ及びユーザタイプに提供されるようになった。この指数関数的な成長は続くと予想される。同時に、障害及びセキュリティのリスクが高まると、インフラストラクチャのセットアップ、管理、変更管理、更新はより複雑になり、コストがかかるようになる。スケーラビリティ、すなわち、時間の経過と共にシステムを成長させることは、情報技術の分野でも大きな課題となっている。
【０００４】
ほとんどのＩＴシステムの問題は、その多くはパフォーマンス及びセキュリティに関連するものであるが、診断及び対処するのが困難な場合がある。システムのセットアップ、構成、及び配備に許される時間及びリソースの制約は、エラーにつながり、将来のＩＴの問題をもたらし得る。時間の経過と共に、ユーザ、アプリケーション、サービス、セキュリティ、ソフトウェア、及びハードウェアを含むＩＴシステムの変更、パッチ適用、または更新に、多くの異なる管理者が関与する場合がある。しばしば、構成及び変更の文書化及び履歴が不十分であるかまたは失われて、特定のシステムがどのように構成されて機能するかを後で理解するのが困難になる場合がある。これにより、将来の変更またはトラブルシューティングが困難になる場合がある。問題または障害が生じた場合、ＩＴの構成及び設定は、復旧及び再現するのが困難な場合がある。また、システム管理者は、たとえば誤ったコマンドまたはその他のミスなど、簡単にミスを犯す可能性があり、それによってコンピュータならびにＷｅｂデータベース及びサービスがダウンする場合がある。さらに、セキュリティ侵害のリスクの増加は珍しくないが、セキュリティ侵害を回避するための変更、更新、パッチは、望まれないダウンタイムを引き起こす場合がある。
【０００５】
重要なインフラストラクチャが定位置に配置され、機能し、稼働すると、コストまたはリスクはしばしば、システムを変更するメリットを上回るように思われる場合がある。稼働中のＩＴシステムまたは環境に変更を加えることに関わる問題は、これらのシステムに依存するユーザまたはエンティティに重大な、時には壊滅的な問題を引き起こす可能性がある。少なくとも、変更管理中に発生する障害または問題のトラブルシューティング及び解決にかかる時間は、かなりの時間、人員、及び金銭のリソースを必要とする場合がある。稼働中の環境に変更が加えられた場合に生じ得る技術的な問題は、連鎖的な影響を及ぼす可能性があり、加えられた変更を元に戻すだけでは解決されない場合がある。これらの問題点の多くは、変更管理中に障害が存在する場合にシステムを迅速に再構築できない一因となる。
【０００６】
さらに、ＩＴシステム内のベアメタルクラウドノードまたはリソースは、セキュリティの問題点に対して脆弱な場合があり、または不正なユーザによって危険にさらされ、もしくはアクセスされ得る。ハッカー、攻撃者、または不正なユーザは、そのノードまたはリソースからピボットして、ＩＴシステムの他の部分またはノードに接続されているネットワークにアクセスまたはハッキングし得る。ＩＴシステムのベアメタルクラウドノードまたはコントローラも、システムをセキュリティの脅威にさらすか、または別の方法でシステムを危険にさらし得るアプリケーションネットワークに接続されたリソースを介して脆弱になる場合がある。本明細書で開示する様々な例示的な実施形態によれば、ＩＴシステムは、インターネットとインターフェースするか、または外部ネットワークへの接続の有無によらないアプリケーションネットワークからの、ベアメタルクラウドノードまたはリソースのセキュリティを改善するように構成され得る。
【０００７】
例示的な実施形態によれば、ＩＴシステムは、ベアメタルクラウドノードまたは物理リソースを含む。ベアメタルクラウドノードまたは物理リソースが電源投入、セットアップ、管理、または使用されるときに、他の人々または顧客が使用している場合があるノードを有するネットワークに接続され得る場合、インバンド管理はコントローラから省略され得、切り替え可能であり得、切断可能であり得、またはフィルタリングされ得る。また、システム内のアプリケーションネットワークまたは複数アプリケーションのネットワークは、アプリケーションネットワークがコントローラに結合されるリソース（複数可）を介して、コントローラから切断され得、切断可能であり得、切り替え可能であり得、またはフィルタリングされ得る。
【０００８】
仮想マシンまたはハイパーバイザを含む物理リソースもまた、セキュリティの問題点に対して脆弱な場合があり、ハイパーバイザを使用して、共有リソースである他のハイパーバイザにピボットし得る場合に、不正なユーザによって危険にさらされ、またはアクセスされる場合がある。攻撃者は仮想マシンから抜け出し得、コントローラを介して管理システム及び／または監督システムにネットワークアクセスできる場合がある。本明細書で開示する様々な例示的な実施形態によれば、ＩＴシステムはセキュリティを改善するように構成され得、クラウドプラットフォーム上の仮想リソースを含む１つまたは複数の物理リソースは、インバンド管理接続を介して、コントローラから切断され得、切断可能であり得、フィルタリングされ得、フィルタリング可能であり得、またはコントローラに非接続にされ得る。
【０００９】
例示的な実施形態によれば、ＩＴシステムの物理リソースは、１つまたは複数の仮想マシンまたはハイパーバイザを含み得、コントローラと物理リソースとの間のインバンド管理接続は、そのリソースから省略され得、切断され得、切断可能であり得、またはフィルタリングされ得る／フィルタリング可能であり得る。
【図面の簡単な説明】
【００１０】
【図１】例示的な実施形態によるシステムの概略図である。
【図２Ａ】図１のシステム用の例示的なコントローラの概略図である。
【図２Ｂ】ストレージ拡張ルールの例示的なセットの動作の例示的なフローを示す。
【図２Ｃ】図２Ｂのステップ２１０．１及び２１０．２を実行するための代替例を示す。
【図２Ｄ】図２Ｂのステップ２１０．１及び２１０．２を実行するための代替例を示す。
【図２Ｅ】例示的なテンプレートを示す。
【図２Ｆ】テンプレートの処理に関するコントローラロジックの例示的な処理フローを示す。
【図２Ｇ】図２Ｆのステップ２０５．１１、２０５．１２、及び２０５．１３の例示的な処理フローを示す。
【図２Ｈ】図２Ｆのステップ２０５．１１、２０５．１２、及び２０５．１３の例示的な処理フローを示す。
【図２Ｉ】他の例示的なテンプレートを示す。
【図２Ｊ】テンプレートの処理に関するコントローラロジックの他の例示的な処理フローを示す。
【図２Ｋ】サービスの依存関係を管理するための例示的な処理フローを示す。
【図２Ｌ】例示的な実施形態によるテンプレートから導出された例示的なイメージの概略図である。
【図２Ｍ】システムルールの例示的なセットを示す。
【図２Ｎ】コントローラロジックが図２Ｍのシステムルールを処理するための例示的な処理フローを示す。
【図２Ｏ】ファイルシステムｂｌｏｂまたは他のファイルのグループからストレージリソースを構成するための例示的な処理フローを示す。
【図３Ａ】コンピューティングリソースが追加された図２Ａのコントローラの概略図である。
【図３Ｂ】例示的な実施形態によるテンプレートから導出された例示的なイメージの概略図である。
【図３Ｃ】コンピューティングリソース、ストレージリソース、及び／またはネットワーキングリソースなどのリソースをシステムに追加するための例示的な処理フローを示す。
【図４Ａ】ストレージリソースが追加された図２Ａのコントローラの概略図である。
【図４Ｂ】例示的な実施形態によるテンプレートから導出された例示的なイメージの概略図である。
【図５Ａ】ＪＢＯＤ及びストレージリソースが追加された図２Ａのコントローラの概略図である。
【図５Ｂ】ストレージリソース及びストレージリソースの直接接続ストレージをシステムに追加するための例示的な処理フローを示す。
【図６Ａ】ネットワーキングリソースが追加された図２Ａのコントローラの概略図である。
【図６Ｂ】例示的な実施形態によるテンプレートから導出された例示的なイメージの概略図である。
【図７Ａ】例示的な物理的配備における例示的な実施形態によるシステムの概略図である。
【図７Ｂ】ＩＴシステムにリソースを追加するための例示的な処理を示す。
【図７Ｃ】複数のコンピューティングリソース、複数のサーバ、複数の仮想マシン、及び／または複数のサイトにアプリケーションを配備するための例示的な処理フローを示す。
【図７Ｄ】複数のコンピューティングリソース、複数のサーバ、複数の仮想マシン、及び／または複数のサイトにアプリケーションを配備するための例示的な処理フローを示す。
【図８Ａ】例示的な配備における例示的な実施形態によるシステムの概略図である。
【図８Ｂ】単一ノードシステムから複数ノードシステムに拡張するための例示的な処理フローを示す。
【図８Ｃ】ストレージリソースを新たな物理ストレージリソースに移行するための例示的な処理フローを示す。
【図８Ｄ】マルチテナントシステムの単一ノード上の仮想マシン、コンテナ、及び／またはプロセスを、コンピューティング及びストレージ用の別個のハードウェアを有し得るマルチノードシステムに移行するための例示的な処理フローを示す。
【図８Ｅ】システム内で単一ノードから複数ノードに拡張するための他の例示的な処理フローを示す。
【図９Ａ】例示的な物理的配備における例示的な実施形態によるシステムの概略図である。
【図９Ｂ】例示的な実施形態によるテンプレートから導出された例示的なイメージの概略図である。
【図９Ｃ】ＮＴパッケージからアプリケーションをインストールする一例を示す。
【図９Ｄ】例示的な配備における例示的な実施形態によるシステムの概略図である。
【図９Ｅ】ＩＴシステムに仮想コンピューティングリソースホストを追加するための例示的な処理フローを示す。
【図１０】例示的な配備における例示的な実施形態によるシステムの概略図である。
【図１１Ａ】例示的な実施形態のシステム及び方法を示す。
【図１１Ｂ】例示的な実施形態のシステム及び方法を示す。
【図１２】例示的な実施形態のシステム及び方法を示す。
【図１３Ａ】例示的な実施形態によるシステムの概略図である。
【図１３Ｂ】例示的な実施形態によるシステムの他の概略図である。
【図１３Ｃ】例示的な実施形態によるシステムの例示的な処理フローを示す。
【図１３Ｄ】例示的な実施形態によるシステムの例示的な処理フローを示す。
【図１３Ｅ】例示的な実施形態によるシステムの例示的な処理フローを示す。
【図１４Ａ】メインコントローラがコントローラを異なるシステムに配備した例示的なシステムを示す。
【図１４Ｂ】メインコントローラを有するコントローラをプロビジョニングするための可能なステップを示す例示的なフローを示す。
【図１４Ｃ】メインコントローラを有するコントローラをプロビジョニングするための可能なステップを示す例示的なフローを示す。
【図１５Ａ】メインコントローラが環境を生み出す例示的なシステムを示す。
【図１５Ｂ】コントローラが環境をセットアップする例示的な処理フローを示す。
【図１５Ｃ】コントローラが複数の環境をセットアップする例示的な処理フローを示す。
【図１６Ａ】コントローラが１つまたは複数のコントローラをセットアップするためのメインコントローラとして動作する例示的な実施形態を示す。
【図１６Ｂ】環境が他の環境に書き込むように構成され得る例示的なシステムを示す。
【図１６Ｃ】環境が他の環境に書き込むように構成され得る例示的なシステムを示す。
【図１６Ｄ】環境が他の環境に書き込むように構成され得る例示的なシステムを示す。
【図１６Ｅ】コントローラによって生み出される新たな環境をユーザが購入できる例示的なシステムを示す。
【図１６Ｆ】コントローラによって生み出される環境にインターフェースするためのユーザインターフェースが設けられた例示的なシステムを示す。
【図１７Ａ】新たな環境に関する変更管理タスクの例を示す。
【図１７Ｂ】新たな環境に関する変更管理タスクの例を示す。
【図１８Ａ】新たな環境に関する変更管理タスクの例を示す。
【図１８Ｂ】新たな環境に関する変更管理タスクの例を示す。
【発明を実施するための形態】
【００１１】
上述のような当技術分野のニーズに対する技術的解決策を提供する取り組みにおいて、本発明者らは、自動化されたＩＴシステムのセットアップ、構成、保守、テスト、変更管理、及び／またはアップグレードを提供する情報技術のためのシステム及び方法に関する多様な発明の実施形態を開示する。たとえば、本発明者らは、複数のシステムルール、コンピュータシステムのシステム状態、及び複数のテンプレートに基づいてコンピュータシステムを自動的に管理するように構成されるコントローラを開示する。他の例として、本発明者らは、複数のシステムルール、コンピュータシステムのシステム状態、及び複数のテンプレートに基づいて、コンピュータシステムの物理インフラストラクチャを自動的に管理するように構成されるコントローラを開示する。コントローラによって実行可能な自動化された管理の例には、アプリケーションまたはサービスを動作させ得るコンピュータ上の設定またはその他の情報へのリモートまたはローカルでのアクセス及び変更、ＩＴシステムの構築、ＩＴシステムの変更、ＩＴシステム内の個々のスタックの構築、サービスまたはアプリケーションの作成、サービスまたはアプリケーションのロード、サービスまたはアプリケーションの構成、サービスまたはアプリケーションの移行、サービスまたはアプリケーションの変更、サービスまたはアプリケーションの削除、異なるネットワーク上の他のスタックへのスタックのクローン、リソースまたはシステムコンポーネントの作成、追加、削除、セットアップ、構成、再構成、及び／または変更、リソース、サービス、アプリケーション、ＩＴシステム、及び／またはＩＴスタックの自動的な追加、削除、及び／または復帰、アプリケーション、サービス、スタック、及び／またはその他のＩＴシステムの間のインタラクションの構成、及び／またはＩＴシステムコンポーネントの健全性の監視、が含まれ得る。例示的な実施形態では、コントローラは、リモートまたはローカルとすることができる物理または仮想コンピューティングリソースとして具現化することができる。採用できるコントローラの追加の例には、プロセス、仮想マシン、コンテナ、リモートコンピューティングリソース、他のコントローラによって配備されるアプリケーション、及び／またはサービスのいずれかまたは任意の組み合わせが含まれるが、これらに限定されない。コントローラは、複数のノード及び／またはリソースにわたって分散されてもよく、他の場所またはネットワークにあってもよい。
【００１２】
ＩＴインフラストラクチャは、ほとんどの場合、個別のハードウェアコンポーネント及びソフトウェアコンポーネントから構築される。使用されるハードウェアコンポーネントは、一般的に、サーバ、ラック、電源機器、相互接続、ディスプレイモニタ、及びその他の通信機器を含む。これらの個別のコンポーネントを選択して相互接続する方法及び技法は、種々の度合いの効率、費用対効果、パフォーマンス、及びセキュリティで機能する極めて多数の任意選択の構成によって非常に複雑になる。これらのインフラストラクチャコンポーネントの接続に熟練した個々の技術者／エンジニアは、雇用及びトレーニングするのに費用がかかる。また、ハードウェア及びソフトウェアの極めて多数の可能性のある繰り返しによって、そのハードウェア及びソフトウェアの保守及び更新が複雑になる。これにより、ＩＴインフラストラクチャを元々インストールした個人及び／またはエンジニアリング会社が更新を実施できない場合に、追加の課題が生まれている。オペレーティングシステムなどのソフトウェアコンポーネントは、幅広いハードウェアで動作するように汎用的に設計されているか、または特定のコンポーネントに非常に特化している。ほとんどの場合、複雑な計画または青写真が描かれて実行される。変更、成長、スケーリング、及びその他の課題には、複雑な計画を更新することが必要になる。
【００１３】
一部のＩＴユーザは、成長しているサプライヤ産業からクラウドコンピューティングサービスを購入するが、これはインフラストラクチャのセットアップの問題及び課題を解決せず、むしろＩＴユーザからクラウドサービスプロバイダに転嫁する。さらに、大規模なクラウドサービスプロバイダは、柔軟性、カスタマイズ性、スケーラビリティ、ならびに新たなハードウェア技術及びソフトウェア技術の迅速な採用を低下させ得る方法で、インフラストラクチャのセットアップの課題及び問題に対処している。また、クラウドコンピューティングサービスは、すぐに使えるベアメタルセットアップ、構成配備及び更新を提供せず、ベアメタル及び仮想ＩＴインフラストラクチャコンポーネントへの移行、それらからの移行、またはそれらの間の移行も可能にしない。クラウドコンピューティングサービスのこれら及びその他の制限により、多くのコンピューティング、ストレージ、及びネットワーキングの非効率性が生じ得る。たとえば、コンピューティング及びネットワーキングにおける速度または遅延の非効率性は、クラウドサービスによって、またはクラウドサービスを利用するアプリケーションもしくはサービスにおいて発生し得る。
【００１４】
例示的な実施形態のシステム及び方法は、新規かつ独自のＩＴインフラストラクチャの配備、利用及び管理を提供する。例示的な実施形態によれば、リソースの選択、インストール、相互接続、管理、及び更新の複雑性は、コアコントローラシステムと、そのパラメータファイル、テンプレート、ルール、及びＩＴシステム状態とに根ざしている。このシステムは、技術者に組み立て、接続、及び管理を要求するのではなく、コンポーネントが自己組み立てを行うように構成される自己組み立てルール及び動作ルールのセットを含む。さらに、例示的な実施形態のシステム及び方法は、現在の典型的な外部計画書を必要とせずに、自己組み立てのルールを使用して、より高いカスタマイズ性、スケーラビリティ、及び柔軟性を可能にする。それらはまた、効率的なリソースの使用及び再利用も可能にする。
【００１５】
全体的または部分的に物理的または仮想的であるかを問わず、現在のＩＴシステムの問題点及び問題の多くを改善するシステム及び方法が提供される。例示的な実施形態のシステム及び方法は、柔軟性を可能にし、ばらつき及び人的エラーを低減し、システムセキュリティを向上させ得る構造を提供する。
【００１６】
現在のＩＴシステムの問題のうちの１つまたは複数に対していくつかの解決策が個別に存在し得るが、そのような解決策は、本明細書に記載の例示的な実施形態によって解決されるような多数の問題に包括的に対処するものではない。さらに、そのような既存の解決策は、特定の問題に対処し得るが、他の問題を悪化させ得る。
【００１７】
対処される現在の課題の中には、セットアップ、構成、インフラストラクチャの配備、資産の追跡、セキュリティ、アプリケーションの配備、サービスの配備、保守及びコンプライアンスのための文書化、保守、スケーリング、リソースの割り当て、リソース管理、負荷分散、ソフトウェア障害、ソフトウェア及びセキュリティの更新／パッチ適用、テスト、ＩＴシステムの復旧、変更管理、及びハードウェアの更新、に関する問題点があるが、これらに限定されない。
【００１８】
本明細書で使用するＩＴシステムは、サーバ、仮想ホスト及び物理ホスト、データベース及びデータベースアプリケーション、たとえば、限定はしないが、ＩＴサービス、ビジネスコンピューティングサービス、コンピュータアプリケーション、顧客対応アプリケーション、Ｗｅｂアプリケーション、モバイルアプリケーション、バックエンド、ケース番号管理、顧客追跡、発券、ビジネスツール、デスクトップ管理ツール、会計、電子メール、文書化、コンプライアンス、データストレージ、バックアップ、及び／またはネットワーク管理を含み得るが、これらに限定されない。
【００１９】
ユーザがＩＴシステムをセットアップする前に直面し得る問題の１つは、インフラストラクチャのニーズの予測である。最初に、または成長中もしくは変化中に時間の経過と共に、どれだけのストレージ、計算能力、またはその他の要求が必要になるかが、ユーザはわからない場合がある。例示的な実施形態によれば、ＩＴシステム及びインフラストラクチャは、システムが変更を必要とする場合、例示的な実施形態の自己配備インフラストラクチャ（物理及び／または仮想の両方）を使用して、後でインフラストラクチャ内で自動的に追加、削除、または再割り当てし得るという点で柔軟性を可能にする。したがって、システムのセットアップ時に提示される将来のニーズを予測するという課題は、グローバルルール、テンプレート、及びシステム状態を使用してシステムに追加する機能を提供し、そのようなルール、テンプレート、及びシステム状態の変更を追跡することによって対処される。
【００２０】
また、他の課題は、正しい構成、構成の統一性、相互運用性、及び／または相互依存性に関連するものであり得、これには、たとえば、時間の経過に伴う構成済みシステム要素またはその構成の変更による将来の非互換性が含まれ得る。たとえば、ＩＴシステムが最初にセットアップされたときに、欠落している要素があるか、または一部の要素の構成に失敗している場合がある。また、たとえば、要素またはインフラストラクチャコンポーネントの繰り返しがセットアップされる場合、繰り返しの間で統一性が欠如している場合がある。システムに変更が加えられた場合に、構成の見直しが必要になる場合がある。最適な構成と、将来のインフラストラクチャの変更に対する柔軟性との間で、難しい選択が提示されている。例示的な実施形態によれば、最初にシステムを配備するときに、グローバルシステムルールを使用してテンプレートからインフラストラクチャコンポーネントへ構成が自己配備されるので、構成は統一され、再現可能または予測通りになって、最適な構成が可能になる。そのような初期システム配備は物理コンポーネント上に行われ得るが、後続のコンポーネントが追加または変更され得、これらは物理的なものであってもなくてもよい。さらに、そのような初期システム配備は物理コンポーネント上に行われ得るが、後続の環境が物理構造からクローンされ得、これらは物理的なものであってもなくてもよい。これにより、将来問題を起こす変更を最小限に抑えながら、システム構成を最適にすることが可能になる。
【００２１】
配備フェーズでは、典型的には、ベアメタル及び／またはソフトウェア定義のインフラストラクチャの相互運用性の課題がある。また、ソフトウェアと、他のアプリケーション、ツール、またはインフラストラクチャとの相互運用性の課題もあり得る。これらには、異なるベンダー製の配備された製品による課題が含まれ得るが、これらに限定されない。本発明者らは、ベアメタル、仮想、またはそれらの任意の組み合わせに関係なく、インフラストラクチャの相互運用性を提供し得るＩＴシステムを開示する。したがって、相互運用性、すなわち、パーツが連携する能力は、インフラストラクチャが自動的に構成及び配備される、開示したインフラストラクチャ配備に組み込まれ得る。たとえば、異なるアプリケーションが相互に依存し得、それらは別々のホストに存在し得る。そのようなアプリケーションが相互に対話できるようにするために、本明細書で説明するコントローラロジック、テンプレート、システム状態、及びシステムルールは、アプリケーションの相互依存関係の構成と、相互依存関係の追跡とに使用される情報及び構成命令を含む。したがって、本明細書で説明するインフラストラクチャの特徴は、各アプリケーションまたはサービスがどのようにして相互にやり取りするかを管理する方法を提供する。例として、電子メールサービスが認証サービスと適切に通信するようにし、及び／またはグループウェアサービスが電子メールサービスと適切に通信するようにする。またさらに、そのような管理は、インフラストラクチャレベルまで下りて、たとえば、コンピューティングリソースがストレージリソースとどのように通信しているかを追跡可能にすることができる。そうでなければ、ＩＴシステムの複雑性がＯ（ｎｎ）で上昇する可能性がある。
【００２２】
開示しているように、リソースの自動配備は、グローバルシステムルール、テンプレート、及びＩＴシステム状態／システムの自己認識に基づいて配備するコントローラの機能により、オペレーティングシステムソフトウェアの事前構成を必要としない。例示的な実施形態によれば、ユーザまたはＩＴ専門家は、相互運用性を確保するために、リソースの追加、割り当て、または再割り当てが連携するか否かを知る必要がない場合がある。例示的な実施形態による追加のリソースが、ネットワークに自動的に追加され得る。
【００２３】
アプリケーションを使用するには、典型的にはコンピューティング、ストレージ、及びネットワーキングを含む多くの異なるリソースが必要になる。また、リソースとシステムコンポーネントとの相互運用性も必要になり、これには、定位置に配置されて動作しているものに関する知識、及び他のアプリケーションとの相互運用性が含まれる。アプリケーションは、他のサービスに接続して構成ファイルを取得し、全てのコンポーネントが適切に連携することを確認する必要があり得る。そのため、アプリケーションの構成は、時間及びリソース集約的である可能性がある。他のアプリケーションとの相互運用性の問題がある場合、アプリケーションの構成は、インフラストラクチャの残りの部分に連鎖的な影響をもたらす可能性がある。これは、停止または侵害につながる可能性がある。本発明者らは、これらの問題点に対処するために自動化されたアプリケーション配備を開示する。したがって、本発明者らが開示するように、システムの現在の状況に関する知識を使用して、ＩＴシステム状態、グローバルシステムルール、及びテンプレートから読み取り、インテリジェントに構成することによって、アプリケーションが自己配備され得る。さらに、例示的な実施形態によれば、本明細書で説明する変更管理機能を使用して、構成の配備前テストが実行され得る。
【００２４】
例示的な実施形態によって対処される他の問題点は、異なるベンダーまたは他のツールに切り替えることが望ましい場合に中間構成に関連して生じ得る問題に関するものである。例示的な実施形態の一態様によれば、コントローラのルール及びテンプレートと、特定のベンダーのアプリケーションテンプレートとの間のテンプレート変換が提供される。これにより、システムはソフトウェアまたは他のツールのベンダーを自動的に変更することが可能になる。
【００２５】
多くのセキュリティの問題点は、設定ミス、パッチ適用の失敗、及び配備前にパッチ適用をテストできないことから生じる。しばしば、セットアップの構成段階でセキュリティの問題点が発生し得る。たとえば、設定ミスによって、機密性の高いアプリケーションがインターネットに公開されたままになったり、メールサーバからメールの偽造を許したりする場合がある。本発明者らは、自動的に構成されることによって、攻撃者から保護して、攻撃者への不要な公開を回避し、セキュリティエンジニア及びアプリケーションセキュリティアーキテクトにシステムに関するより多くの知識を提供するシステムセットアップを開示する。自動化により、人的ミスまたは設定ミスによるセキュリティの欠陥が減少する。また、開示したインフラストラクチャは、サービス間の内省を提供し、ルールベースのアクセスを可能にし、サービス間の通信を、実際に必要なもののみに制限し得る。本発明者らは、たとえば変更管理に関して説明するように、配備前にパッチを安全にテストする能力を有するシステム及び方法を開示する。
【００２６】
文書化はしばしば、問題の多いＩＴ管理の領域である。セットアップ及び構成中、主な目標は、典型的にはコンポーネントを連携させることであり得る。通常、これにはトラブルシューティング及び試行錯誤のプロセスが含まれ、実際にシステムを機能させたものを知ることが困難な場合がある。実行された正確なコマンドは通常は文書化されるが、機能するシステムを実現した可能性があるトラブルシューティングまたは試行錯誤のプロセスは、十分に文書化されていないか、まったく文書化されていないことが多い。文書化における問題または不備により、監査証跡及び監査に関する問題が発生し得る。発生した文書化の問題によって、コンプライアンスを示す際に問題が生じ得る。システムまたはそのコンポーネントを構築する場合に、しばしば、コンプライアンスの問題点はよく知られていない場合がある。適用されるコンプライアンスの判定は、ＩＴシステムをセットアップ及び構成した後にしかわからない場合がある。このように、文書化は監査及びコンプライアンスに不可欠である。本発明者らは、自動的に文書化されるセットアップ及び構成を提供する、グローバルシステムルールデータベース、テンプレート、及びＩＴシステム状態データベースを含むシステムを開示する。発生するあらゆる構成はデータベースに記録される。例示的な実施形態によれば、自動的に文書化される構成は監査証跡を提供し、コンプライアンスを示すために使用することができる。インベントリ管理では、自動的に文書化及び追跡される情報を使用し得る。
【００２７】
ＩＴシステムのセットアップ、構成、及び運用から生じるもう１つの課題は、ハードウェア及びソフトウェアのインベントリ管理に関するものである。たとえば、通常、サーバがいくつあるか、それらが立ち上がっていてまだ機能しているか否か、それらの機能が何であるか、各サーバがどのラックにあるか、どの電源がどのサーバに接続されているか、どのネットワークカード及びどのネットワークポートを各サーバが使用しているか、どのＩＴシステムでコンポーネントが動作しているか、及びその他の多くの重要事項を知ることが重要である。インベントリ情報に加えて、インベントリ管理に使用されるパスワード及びその他の機密情報は、効果的に管理される必要がある。特に大規模なＩＴシステム、データセンター、または機器が頻繁に変更されるデータセンターでは、この情報の収集及び保持は時間のかかる作業であり、これは多くの場合、手動で、または多様なソフトウェアツールを使用して管理される。安全なパスワードの準拠した保護は、安全なコンピューティング環境を保証する際に重要な問題点になる可能性がある大きなリスク要因である。本発明者らは、全てのサーバ及びその他のコンポーネントのインベントリ及び運転状態の収集及び保持が、ＩＴシステム状態、グローバルシステムルール、テンプレート、及びコントローラのコントローラロジックの一部として、自動的に更新、記憶、及び保護されるＩＴシステムを開示する。
【００２８】
ＩＴシステムのセットアップ及び構成に関する問題に加えて、本発明者らは、ＩＴシステムの保守で生じる問題及び問題点にも対処し得るＩＴシステムを開示する。たとえば、とりわけ、電源障害、メモリ障害、ネットワーク障害、ネットワークカード障害、及び／またはＣＰＵ障害などの、ハードウェア障害のあるデータセンターが継続的に機能することに伴って、多くの問題が生じる。ハードウェア障害中にホストを移行する場合、さらなる障害が発生する。したがって、本発明者らは動的なリソースの移行、たとえば、ホストがダウンした場合に、あるリソースプロバイダから他のリソースプロバイダにリソースを移行することを開示する。そのような状況では、例示的な実施形態によれば、ＩＴシステムは、他のサーバ、ノード、もしくはリソース、または他のＩＴシステムに移行することができる。コントローラは、システムのステータスを報告し得る。データの複製は、既知の自動的にセットアップされた構成を有する他のホスト上にある。ハードウェア障害が検出された場合、ハードウェアが提供していた場合がある任意のリソースは、障害を自動的に検出した後に、自動的に移行され得る。
【００２９】
多くのＩＴシステムに関する重要な問題点はスケーラビリティである。成長中の企業または他の組織は、典型的には、それらが成長してニーズが変化すると、ＩＴシステムを追加または再構成する。たとえば、ハードドライブ容量、ストレージ容量、ＣＰＵ処理、より多くのネットワークインフラストラクチャ、より多くのエンドポイント、より多くのクライアント、及び／またはより多くのセキュリティの追加など、より多くのリソースが既存のＩＴシステムに必要になった場合に、問題が生じる。異なるサービス及びアプリケーション、またはインフラストラクチャの変更が必要になった場合、構成、セットアップ、及び配備でも問題が生じる。例示的な実施形態によれば、データセンターは自動的にスケーリングされ得る。ノードまたはリソースは、動的かつ自動的にリソースのプールに対して追加または削除され得る。リソースプールに対して追加及び削除されたリソースは、自動的に割り当てまたは再割り当てされ得る。サービスがプロビジョニングされ、新たなホストにすばやく移動され得る。コントローラは、より多くのリソースを検出して動的にリソースプールに追加し、リソースを割り当て／再割り当てすべき場所を把握し得る。例示的な実施形態によるシステムは、単一ノードのＩＴシステムから、複数のデータセンターまたはＩＴシステムにわたる多数の物理及び／または仮想ノードまたはリソースを必要とするスケーリングされたシステムにスケーリングし得る。
【００３０】
本発明者らは、柔軟なリソース割り当て及び管理を可能にするシステムを開示する。このシステムは、リソースプール内にあり得、動的に割り当てられ得るコンピューティング、ストレージ、及びネットワーキングリソースを含む。コントローラは、ネットワーク上の新たなノードまたはホストを認識し、次いでそれらがリソースプールの一部になれるようにそれらを構成し得る。たとえば、新たなサーバがプラグインされると、コントローラはそれをリソースプールの一部として構成し、リソースに追加することができ、動的に使用を開始することができる。ノードまたはリソースは、コントローラによって検出され、異なるプールに追加され得る。リソース要求は、たとえば、コントローラへのＡＰＩ要求を介して行われ得る。次に、コントローラは、ルールに従ってプールから必要なリソースを配備または割り当てし得る。これにより、コントローラ及び／またはコントローラを介したアプリケーションは、要求のニーズに基づいてリソースを負荷分散し、動的に分散させることが可能になる。
【００３１】
負荷分散の例には、ハードウェアまたはソフトウェアの障害が発生した場合に新たなリソースを配備すること、ユーザ負荷の増加に応答して、同じアプリケーションの１つまたは複数のインスタンスを配備すること、及びストレージ、コンピューティング、またはネットワーキングの要求の不均衡に応答して、同じアプリケーションの１つまたは複数のインスタンスを配備すること、が含まれるが、これらに限定されない。
【００３２】
稼働中のＩＴシステムまたは環境に変更を行うことに関わる問題は、これらのシステムが一貫して稼働していることに依存するユーザまたはエンティティにとって重大な、時には壊滅的な問題を発生させる場合がある。これらの停止は、システムの使用における潜在的な損失を表すだけでなく、データの損失、問題を解決するために必要な時間、人員、及び金銭の相当なリソースによる経済的損失を表す。構成の文書に誤りがあるか、システムの理解が不足している場合にシステムの再構築が困難なことによって、問題が深刻化する可能性がある。この問題のため、多くのＩＴシステムユーザは、既知のセキュリティリスクを排除するためにＩＴリソースにパッチを適用することに消極的である。このようにして、セキュリティ侵害に対してより脆弱なままになる。
【００３３】
ＩＴシステムの保守で生じる数多くの問題は、構成が必要になり得る変更管理または制御によるソフトウェア障害に関連するものである。そのような障害が発生し得る状況には、新たなソフトウェアバージョンへのアップグレード、異なるソフトウェアへの移行、パスワードまたは認証管理の変更、サービス間またはあるサービスの異なるプロバイダ間での切り替え、が含まれるが、これらに限定されない。
【００３４】
手動で構成及び保守されるインフラストラクチャは、通常、再作成が困難である。インフラストラクチャの再作成は、問題のある変更のロールバック、停電、またはその他の災害復旧を含むがこれらに限定されないいくつかの理由で重要であり得る。手動で構成されるシステムの問題を診断することは困難である。手動で構成及び保守されるインフラストラクチャを再作成することは困難である。また、システム管理者は、たとえば、コンピュータシステムをダウンさせたことがわかっている誤ったコマンドなど、簡単に間違いを犯す可能性がある。
【００３５】
稼働中のＩＴシステムまたは環境に変更を加えると、これらのシステムが一貫して稼働していることに依存するユーザまたはエンティティにとって重大な、時には壊滅的な問題が発生する可能性がある。これらの停止は、システムの使用における潜在的な損失を表すだけでなく、そのような停止はまた、データの損失に加え、問題の解決に必要な時間、人員、及び金銭の相当なリソースによる経済的損失を引き起こす可能性がある。構成の文書に誤りがあるか、またはシステムの理解が不足している場合にシステムの再構築が困難なことによって、問題が深刻化する可能性がある。また、多くの場合、大幅な変更または大きな変更の後にシステムを以前の状態に復元することは非常に困難である。
【００３６】
さらに、稼働中の環境に変更が加えられた場合に発生し得る技術的な問題は、連鎖的な影響を及ぼす場合がある。これらの連鎖的な影響により、変更前の状態に戻ることが困難になり、場合によっては不可能になり得る。したがって、実施された変更に関する問題のために変更を戻す必要がある場合でも、システムの状態は既に変更されている。近年、インフラストラクチャ及びシステム管理のエラー、ならびに本番環境への不完全な変更を元に戻すことは解決されない問題であると述べられている。さらに、稼働中の環境への配備前にシステムへの変更をテストすることは問題があることが知られている。
【００３７】
したがって、本発明者らは、稼働中のシステムへの変更を変更前の状態に戻すように構成されるシステム及び方法のいくつかの例示的な実施形態を開示する。さらに、本発明者らは、上述の問題の１つまたは複数を防止または改善し得る、稼働中の変更を受けたシステムまたは環境の状態の大幅な復帰を可能にするように構成されるシステム及び方法を開示する。
【００３８】
例示的な実施形態の変形によれば、ＩＴシステムは、グローバルシステムルール、テンプレート、及びＩＴシステム状態によってシステムの完全な知識を有する。システムの完全な知識を使用してインフラストラクチャがクローンされ得る。システムまたはシステム環境は、ソフトウェア定義のインフラストラクチャまたは環境としてクローンされ得る。本番環境と呼ばれる、使用中の揮発性データベースを含むシステム環境は、不揮発性読み取り専用データベースに書き込まれて、開発及びテストプロセスにおける開発環境として使用され得る。所望の変更が開発環境に加えられ、そこでテストされ得る。ユーザまたはコントローラロジックは、グローバルルールに変更を加えて、新たなバージョンを作成し得る。ルールのバージョンは追跡され得る。次に、例示的な実施形態の他の態様によれば、新たに開発された環境が自動的に実装され得る。以前の本番環境も保持され得、または完全に機能し得るので、以前の状態の本番環境への修正が、データを失わずに可能である。次に、開発環境は、新たな仕様、ルール、及びテンプレートを用いてブートされ得、データベースまたはシステムは本番データベースと同期され、書き込み可能なデータベースに切り替えられ得る。そして、元の本番データベースは読み取り専用データベースに切り替えられ得、復旧が必要な場合に、システムはそれに戻され得る。
【００３９】
ソフトウェアのアップグレードまたはパッチ適用に関して、アップグレードまたはパッチを必要とするサービスが検出された場合に、新たなホストが配備され得る。アップグレードまたはパッチによる障害が発生した状況下で、上述のように変更を戻すことが可能な場合に、新たなサービスが配備され得る。
【００４０】
ハードウェアのアップグレードは、特に最新のハードウェアが不可欠な多くの状況で重要である。このタイプの状況の一例は、高頻度の取引業界で発生し、ミリ秒単位の速度の利点を有するＩＴシステムにより、ユーザは優れた取引結果及び利益を達成することが可能になり得る。特に、新たなハードウェアがプロトコルを用いて通信し、既存のインフラストラクチャと連携する方法を認識するように、現在のインフラストラクチャとの相互運用性を確保する際に、問題が生じる。コンポーネントの相互運用性を確保することに加えて、コンポーネントは既存のセットアップとの統合を必要とする。
【００４１】
図１を参照すると、例示的な実施形態のＩＴシステム１００が示されている。システム１００は、本明細書に記載のものを含むがこれらに限定されない１つまたは複数のタイプのＩＴシステムであり得る。
【００４２】
スタンドアロンの物理または仮想サーバ上に存在してもしなくてもよいアプリケーションプログラムインターフェース（ＡＰＩ）アプリケーション１２０を介してコントローラ２００に結合されるユーザインターフェース（ＵＩ）１１０が図示されている。コントローラ２００は、本明細書で説明する任意の制御動作を実施するために、１つまたは複数のプロセッサ及び１つまたは複数のメモリ上に配備され得る。そのような制御動作を実行するためにプロセッサ（複数可）によって実行される命令は、プロセッサメモリなどの非一時的コンピュータ可読記憶媒体上に存在することができる。ＡＰＩ１２０は１つまたは複数のＡＰＩアプリケーションを含み得、これらは冗長であり得、及び／または並行して動作し得る。ＡＰＩアプリケーション１２０は、システムリソースを構成する要求を受信し、要求を解析して、コントローラ２００に渡す。ＡＰＩアプリケーション１２０は、コントローラから１つまたは複数の応答を受信し、応答（複数可）を解析して、ＵＩ（またはアプリケーション）１１０に渡す。あるいはまたはさらに、アプリケーションまたはサービスが、ＡＰＩアプリケーション１２０と通信し得る。コントローラ２００は、コンピューティングリソース（複数可）３００、ストレージリソース（複数可）４００、及びネットワーキングリソース（複数可）５００に結合される。リソース３００、４００、５００は、単一のノード上に存在してもしなくてもよい。リソース３００、４００、５００のうちの１つまたは複数は、仮想的なものであり得る。リソース３００、４００、５００は、複数のノード上に、または複数のノード上に様々な組み合わせで存在してもしなくてもよい。物理デバイスは、コンピューティングリソース３００、ストレージリソース４００、及びネットワーキングリソース５００を含むがこれらに限定されないリソースタイプのうちの１つまたは複数もしくはそれぞれを含み得る。リソース３００、４００、５００はまた、異なる物理的位置にあるか否かにかかわらず、また、仮想的であるか否かにかかわらず、リソースのプールを含み得る。また、ベアメタルコンピューティングリソースは、仮想またはコンテナコンピューティングリソースの使用を可能にするために使用され得る。
【００４３】
ノードの知られている定義に加えて、本明細書で使用するノードは、スタンドアロンのまたはネットワーク接続されたデバイス上で機能を実行するネットワーク（複数可）または他の機能ユニットに接続された任意のシステム、デバイス、またはリソースであり得る。ノードには、たとえば、サーバ、物理または仮想ホスト上のサービス／アプリケーション／複数のサービス、仮想サーバ、及び／またはマルチテナントサーバ上のまたはコンテナ内で動作する複数または単一のサービスも含まれ得るが、これらに限定されない。
【００４４】
コントローラ２００は、１つまたは複数の物理または仮想コントローラサーバを含み得、これらもまた冗長であり得、及び／または並列に動作し得る。コントローラは、コンピューティングホストとして機能している物理または仮想ホスト上で動作し得る。一例として、コントローラは、たとえば、機密性の高いリソースにアクセスできるために、他の目的にも役立つホスト上で動作するコントローラで構成され得る。コントローラは、ＡＰＩアプリケーション１２０から要求を受信し、要求を解析し、他のリソースへのタスク分配を適正化して、他のリソースに指示し、リソースからの情報を監視及び受信し、システムの状態及び変更の履歴を保持し、ＩＴシステム内の他のコントローラと通信し得る。また、コントローラはＡＰＩアプリケーション１２０を含み得る。
【００４５】
本明細書で定義するコンピューティングリソースは、現実または仮想の、単一のコンピューティングノード、あるいは１つまたは複数のコンピューティングノードを含むリソースプールを含み得る。コンピューティングリソースまたはコンピューティングノードは、１つまたは複数のサービスをホストするか、１つまたは複数のアプリケーションを動作させ得る１つまたは複数の物理または仮想マシンまたはコンテナホストを含み得る。コンピューティングリソースは、ＧＰＵ、ＡＳＩＣ、コプロセッサ、ＣＰＵ、ＦＰＧＡ、及びその他の専門的な計算方法を含むがこれらに限定されない、コンピューティング、ストレージ、キャッシング、ネットワーキング、専門的なコンピューティングを含むがこれらに限定されない複数の目的のために設計されたハードウェア上にあり得る。そのようなデバイスは、ＰＣＩエクスプレススイッチまたは同様のデバイスを使用して追加され得、そのような方法で動的に追加され得る。コンピューティングリソースまたはコンピューティングノードは、サービスもしくはアプリケーションを動作させるかまたは仮想コンピューティングリソースであり得る複数の異なる仮想マシンを含む１つまたは複数のハイパーバイザまたはコンテナホストを含み得、または動作させ得る。コンピューティングリソースは、コンピューティング機能を提供することに重点が置かれ得るが、データストレージ機能及び／またはネットワーキング機能も含み得る。
【００４６】
本明細書で定義するストレージリソースは、ストレージノードまたはストレージリソースのプールを含み得る。ストレージリソースは任意のデータ記憶媒体、たとえば、高速、低速、ハイブリッド、キャッシュ、及び／またはＲＡＭを含み得る。ストレージリソースは、１つまたは複数のタイプのネットワーク、マシン、デバイス、ノード、またはそれらの任意の組み合わせを含み得、これらは、他のストレージリソースに直接接続されてもされなくてもよい。例示的な実施形態の態様によれば、ストレージリソースは、ベアメタルもしくは仮想またはそれらの組み合わせであり得る。ストレージリソースは、ストレージ機能を提供することに重点が置かれ得るが、コンピューティング機能及び／またはネットワーキング機能も含み得る。
【００４７】
ネットワーキングリソース（複数可）５００は、単一のネットワーキングリソース、複数のネットワーキングリソース、またはネットワーキングリソースのプールを含み得る。ネットワーキングリソース（複数可）は、物理デバイスもしくは仮想デバイス（複数可）、ツール（複数可）、スイッチ、ルータ、もしくはシステムリソース間のその他の相互接続、またはネットワーキングを管理するためのアプリケーションを含み得る。そのようなシステムリソースは、物理的または仮想的なものであり得、コンピューティング、ストレージ、またはその他のネットワーキングリソースを含み得る。ネットワーキングリソースは、外部ネットワークとアプリケーションネットワークとの間の接続を提供し得、ＤＮＳ、ＤＨＣＰ、サブネット管理、レイヤ３ルーティング、ＮＡＴ、及びその他のサービスを含むがこれらに限定されないコアネットワークサービスをホストし得る。これらのサービスの一部は、物理または仮想マシン上のコンピューティングリソース、ストレージリソース、またはネットワーキングリソースに配備され得る。ネットワーキングリソースは、Ｉｎｆｉｎｉｂａｎｄ、イーサネット、ＲｏＣＥ、ファイバチャネル、及び／またはＯｍｎｉｐａｔｈを含むがこれらに限定されない１つまたは複数のファブリックまたはプロトコルを利用し得、複数のファブリック間の相互接続を含み得る。ネットワーキングリソースは、ＳＤＮ対応であってもなくてもよい。コントローラ２００は、ＳＤＮ、ＶＬＡＮなどを使用してネットワーキングリソース３００を直接変更することによって、ＩＴシステムのトポロジを構成することが可能であり得る。ネットワーキングリソースは、ネットワーキング機能を提供することに重点が置かれ得るが、コンピューティング機能及び／またはストレージ機能も備え得る。
【００４８】
本明細書で使用するアプリケーションネットワークとは、アプリケーション、リソース、サービス、及び／または他のネットワークを接続または結合するための、あるいはユーザ及び／またはクライアントをアプリケーション、リソース、及び／またはサービスにつなげるためのネットワーキングリソースまたはそれらの任意の組み合わせを意味する。アプリケーションネットワークは、サーバが他のアプリケーションサーバ（物理または仮想）と通信し、クライアントと通信するために使用されるネットワークを含み得る。アプリケーションネットワークは、システム１００の外部のマシンまたはネットワークと通信し得る。たとえば、アプリケーションネットワークは、Ｗｅｂフロントエンドをデータベースに接続し得る。ユーザは、インターネット、またはコントローラで管理されていてもいなくてもよい他のネットワークを介してＷｅｂアプリケーションに接続し得る。
【００４９】
例示的な実施形態によれば、コンピューティング、ストレージ、及びネットワーキングリソース３００、４００、５００はそれぞれ、コントローラ２００によって自動的に追加、削除、セットアップ、割り当て、再割り当て、構成、再構成、及び／または配備され得る。例示的な実施形態によれば、追加のリソースがリソースプールに追加され得る。
【００５０】
ユーザ１０５がそれを介してシステムにアクセスし、システムと対話し得るＷｅｂ  ＵＩまたはその他のユーザインターフェースなどのユーザインターフェース１１０を図示しているが、代替的または追加的には、アプリケーションは、ＡＰＩアプリケーション（複数可）１２０を介して、または別の方法で、コントローラ２００と通信または対話し得る。たとえば、ユーザ１０５またはアプリケーションは、ＩＴシステムの構築、ＩＴシステム内の個々のスタックの構築、サービスまたはアプリケーションの作成、サービスまたはアプリケーションの移行、サービスまたはアプリケーションの変更、サービスまたはアプリケーションの削除、異なるネットワーク上の他のスタックへのスタックのクローン、リソースまたはシステムコンポーネントの作成、追加、削除、セットアップまたは構成、再構成、を含むがこれらに限定されない要求を送信し得る。
【００５１】
図１のシステム１００は、物理的もしくは仮想的またはそれらの任意の組み合わせであり得る様々な要素、コンポーネントまたはリソースとの接続または他の通信インターフェースを有するサーバを含み得る。変形例によれば、図１に示すシステム１００は、接続を有するベアメタルサーバを含み得る。
【００５２】
本明細書でより詳細に説明するように、コントローラ２００は、リソースまたはコンポーネントに電源投入して、リソースのブートアップを自動的にセットアップ、構成、及び／または制御することによって、リソースを追加し、リソースを割り当て、リソースを管理し、利用可能なリソースを更新するように構成され得る。電源投入プロセスは、ブートされるデバイスの順序が一貫しており、デバイスに電源投入するユーザに依存しないように、コントローラに電源投入することから始まり得る。このプロセスは、電源投入されたリソースの検出も含み得る。
【００５３】
図２Ａ〜図１０を参照すると、コントローラ２００、コントローラロジック２０５、グローバルシステムルールデータベース２１０、ＩＴシステム状態２２０、及びテンプレート２３０が示されている。
【００５４】
システム１００は、グローバルシステムルール２１０を含む。グローバルシステムルール２１０はとりわけ、コンピューティング、ストレージ、及びネットワーキングを含み得るリソースをセットアップ、構成、ブート、割り当て、及び管理するルールを宣言し得る。グローバルシステムルール２１０は、システム１００が正しいまたは所望の状態になるための最小要件を含む。これらの要件は、完了が期待されるＩＴタスクと、所望のシステムを予想通りに構築するために必要な期待されるハードウェアの更新可能なリストとを含み得る。期待されるハードウェアの更新可能なリストにより、コントローラは、（たとえば、ルールの開始前またはテンプレートの使用前に）必要なリソースが利用可能であることを確認することが可能になる。グローバルルールは、動作及びタスクの順序付けに関連する、様々なタスクに必要な動作及び対応する命令のリストを含み得る。たとえば、ルールは、コンポーネントに電源投入する順序、リソース、アプリケーション、及びサービスをブートする順序、依存関係、様々なタスクをいつ開始すべきか、たとえば、アプリケーションのロード、構成、開始、リロード、またはハードウェアの更新をいつ開始すべきかを指定し得る。ルール２１０はまた、たとえば、アプリケーション及びサービスに必要なリソース割り当てのリスト、使用され得るテンプレートのリスト、ロードすべきアプリケーションのリスト及び構成方法、ロードすべきサービスのリスト、及びアプリケーションネットワークのリストと、どのアプリケーションがどのネットワークに適合するかとを構成する方法、様々なアプリケーションに固有の構成変数とユーザ固有のアプリケーション変数とのリスト、コントローラがシステム状態をチェックして、状態が期待通りであり、各命令の結果が期待通りであることを確認できるようになる期待される状態、及び／またはルールの変更の追跡と、異なる状況で異なるルールをテストするかまたはそれらに戻る機能とを可能にし得るルールの変更のリスト（たとえば、スナップショット）を含むバージョンリスト、のうちの１つまたは複数を含み得る。コントローラ２００は、物理リソース上のＩＴシステム１００にグローバルシステムルール２１０を適用するように構成され得る。コントローラ２００は、仮想リソース上のＩＴシステム１００にグローバルシステムルール２１０を適用するように構成され得る。コントローラ２００は、物理リソースと仮想リソースとの組み合わせ上のＩＴシステム１００にグローバルシステムルール２１０を適用するように構成され得る。
【００５５】
図２Ｍに、グローバルシステムルールの形を取り得るシステムルール２１０の例示的なセットを示す。図２Ｍに示すシステムルール２１０の例示的なセットは、コントローラ２００にロードされるか、またはシステム状態を問い合わせることによって導出され得る（２１０．１参照）。図２Ｍの例では、システムルール２１０は、構成ルーチン２１０．２の形をとることができる命令のセットを含み、また、ＩＴシステムまたは環境を作成及び／または再作成するためのデータ２１０．３も含む。システムルール２１０内の構成ルールは、必要テンプレートリスト２１０．７を介してテンプレート２３０を見つける方法を知り得る（テンプレート２３０は、ファイルシステム、ディスク、ストレージリソース内に存在し得、またはシステムルール内に置かれ得る）。コントローラロジック２０５はまた、テンプレート２３０を処理する前に探し、それらが存在することを確認した後にシステムルール２１０を有効化し得る。システムルール２１０は、システムルールのサブセット２１０．１５を含み得、これらのサブセット２１０．１５は、構成ルーチン２１０．２の一部として実行され得る。
【００５６】
また、サブシステムルール２１０．１５は、たとえば、統合ＩＴアプリケーションのシステムを構築するためのツールとして使用することができる（その場合、システムルール実行ルーチン２１０．１６によって処理されて、２１０．１５の追加を反映するようにシステム状態及び現在の構成ルールが更新される）。また、サブシステムルール２１０．１５は、他の場所に配置され、ユーザインタラクションによってシステム状態２２０内にロードされ得る。たとえば、サブシステムルール２１０．１５をプレイブックとして有することもでき、それらを利用可能にして動作させることができる（その後グローバルシステムルール２１０が更新されるので、システムをクローンしたい場合にプレイブックをリプレイすることができる）。
【００５７】
構成ルーチン２１０．２は、システムを構築するために使用される命令のセットとすることができる。構成ルーチン２１０．２は、実施者が望む場合、サブシステムルール２１０．１５またはシステム状態ポインタ２１０．８も含み得る。構成ルーチン２１０．２を動作させる場合、コントローラロジック２０５は一連のテンプレートを特定の順序（２１０．９）で処理することによって、任意選択で並列配備を可能にするが、適切な依存関係の処理（２１０．１２）は維持することができる。構成ルーチン２１０．２は任意選択で、２１０．９に従ってテンプレートを処理することによって構成され得るアプリケーションの構成パラメータ２１０．５を設定し得るＡＰＩコール２１０．１０を呼び出し得る。また、必要サービス２１０．１１は、システムがＡＰＩコール（複数可）２１０．１０を行う場合に、稼働している必要があるサービスである。
【００５８】
ルーチン２１０．２は、データのコピー、コンピューティングリソースへのデータベースの転送、コンピューティングリソースとストレージリソースとのペアリング、及び／または揮発性データ２１０．６の場所によるシステム状態２２０の更新を含むがこれらに限定されない、揮発性データ２１０．６に関するデータロード（２１０．１３）のための手順、プログラム、または方法を含み得る。揮発性データへのポインタ（２１０．４参照）をデータ２１０．３と共に保持して、他の場所に記憶され得る揮発性データを見つけることができる。データロードルーチン２１０．１３は、非標準データストアに配置されている（たとえば、データベースに含まれている）場合、構成パラメータ２１０．５のロードにも使用され得る。
【００５９】
システムルール２１０はまた、どのコンポーネントがどのリソースに割り当てられるかを命令することができ、コントローラロジック２０５が適切なリソース及び／またはハードウェアが利用可能であるかどうかを判定することを可能にする、リソースリスト２１０．１８を包含することができる。システムルール２１０はまた、代替的な配備のための（例えば、ソフトウェアエンジニアが実演のテストを行うことを望むことがあるが、データセンタ全体を割り当てることを望まない、開発環境のための）代替的なハードウェア及び／またはリソースリスト２１０．１９を包含してもよい。システムルールはまた、システムをどのようにバックアップし、冗長化のためにスタンバイをどのように使用するかについての命令を提供するデータバックアップ／スタンバイルーチン２１０．１７を含んでもよい。
【００６０】
あらゆるアクションが取られた後、システム状態２２０が更新されてもよく、クエリ（書き込みを含んでもよい）がシステム状態クエリ２１０．１４として保存されてもよい。
【００６１】
図２Ｎは、図２Ｍのシステムルール２１０（または、サブシステムルール２１０．１５）を処理するコントローラロジック２０５についての例示的なプロセスフローを例示する。ステップ２１０．２０において、コントローラロジック２０５は、適切なリソースが利用可能であることを確認するようチェックする（図２Ｍにおける２１０．１８を参照）。そうでなければ、ステップ２１０．２１において、代替的な構成がチェックされてもよい。第３のオプションは、ユーザが、図２Ｍのリスト２１０．７において参照されるテンプレート２３０によってサポートすることができる代替的な構成を選択することを促進されることを含んでもよい。
【００６２】
ステップ２１０．２２において、コントローラロジックは次いで、揮発性データへのアクセスを取得するよう、コンピューティングリソース（または、適切なリソースのいずれか）を確認してもよい。これは、ストレージリソースに接続すること、またはストレージリソースをシステム状態２２０に追加することを伴ってもよい。ステップ２１０．２３において、次いで、構成ルーチンが処理され、各々のルーチンが処理されるにつれて、システム状態２２０が更新される（ステップ２１０．２４）。システム状態２２０はまた、処理する前に特定のステップが終了するかどうかをチェックするよう問い合わされてもよい（ステップ２１０．２５）。
【００６３】
図２１０．２３に示されるようなステップを処理する構成ルーチンは、２１０．２６の手順のいずれか（または、それらの組み合わせ）を含んでもよい。それはまた、他の手順を含んでもよい。例えば、２１０．２６における処理は、テンプレートを処理すること（２１０．２７）、構成データをロードすること（２１０．２８）、静的データをロードすること（２１０．２９）、動的揮発性データをロードすること（２１０．３０）、並びに／またはサービス、アプリケーション、サブシステム、及び／もしくは環境を結合すること（２１０．３１）を含んでもよい。２１０．２６内のそのような手順は、ループで繰り返されてもよく、またはいくつかのシステムコンポーネントが独立することができ、他のコンポーネントが独立することができるように、並列に実行されてもよい。コントローラロジック、サービス依存性、及び／またはシステムルールは、どのサービスが相互に依存することができるかを命令してもよく、システムルールからＩＴシステムを更に増築するようサービスを結合してもよい。
【００６４】
グローバルシステムルール２１０は、ストレージ拡張ルールをも含んでもよい。ストレージ拡張ルールは、例えば、システム内の既存のストレージリソースにストレージリソースを自動で追加するルールのセットを設ける。加えて、コンピューティングリソース（複数可）上で実行するアプリケーションが、ストレージ拡張を要求するときを把握する（または、コントローラ２００が、コンピューティングリソースまたはアプリケーションのストレージを拡大するときを把握することができる）トリガポイントを設けてもよい。コントローラ２００は、新たなストレージリソースを割り当て及び管理してもよく、特定の実行リソースに対してストレージリソースを既存のストレージリソースと併合または統合してもよい。
【００６５】
そのような特定の実行リソースは、システム内のコンピューティングリソース、システム内でコンピューティングリソースを実行しているアプリケーション、仮想マシン、コンテナ、または物理もしくは仮想計算ホスト、あるいはそれらの組み合わせであってもよいが、これらに限定されない。実行リソースは、例えば、ストレージ空間クエリを通じて、ストレージ空間を使い果たしていることをコントローラ２００にシグナリングしてもよい。インバンド管理接続２７０、ＳＡＮ接続２８０、またはコントローラ２００へのいずれかのネットワーク化もしくは結合は、そのようなクエリにおいて使用されてもよい。アウトオブバンド管理接続２６０も使用されてもよい。
【００６６】
実行していないリソースに対して、それらのストレージ拡張ルール（または、それらのストレージ拡張ルールのサブセット）も使用されてもよい。
【００６７】
ストレージ拡張ルールは、システム内で新たなストレージリソースをどのように特定し、接続し、セットアップするかを命令する。コントローラは、新たなストレージリソースをシステム状態２２０に登録し、ストレージリソースがどこに存在するか、及びそれにどのように接続するかを実行リソースに通知する。実行リソースは、そのような登録情報を使用してストレージリソースに接続する。コントローラ２００は、新たなストレージリソースを既存のストレージリソースに併合してもよく、またはそれは、新たなストレージリソースをボリュームグループに追加してもよい。
【００６８】
図２Ｂは、例示的なストレージ拡張ルールのセットの動作の例示的なフローを示す。ステップ２１０．４１において、実行リソースは、トリガポイントまたはその他に基づいて、ストレージが低いと判定する。ステップ２１０．４２において、実行リソースは、インバンド管理接続２７０、ＳＡＮ接続２８０、またはオペレーティングシステムに対して可視的な別のタイプの接続によってコントローラ２００に接続する。この接続を通じて、実行リソースは、ストレージが低いことをコントローラ２００に通知することができる。ステップ２１０．４３において、コントローラは、実行リソースに対してストレージ容量を増大するようストレージリソースを構成する。ステップ２１０．４４において、コントローラは、新たに構成されたストレージリソースがどこに位置するかに関する情報を実行リソースに提供する。ステップ２１０．４５において、実行リソースは、新たに構成されたストレージリソースに接続する。ステップ２１０．４６において、コントローラは、新たなストレージリソースの位置のシステム状態２２０へのマッピングを追加する。次いで、コントローラは、新たなストレージリソースを、実行リソースに割り当てられたボリュームグループに追加することができ（ステップ２１０．４７）、またはコントローラは、新たなストレージリソースの実行リソースへの割り当てをシステム状態２２０に追加することができる（ステップ２１０．４８）。
【００６９】
図２Ｃは、図２Ｂにおけるステップ２１０．４１及び２１０．４２を実行する代替的な実施例を例示する。ステップ２１０、５０において、コントローラは、実行リソースに対するストレージ状態更新のためのモニタまたはコンソールを閲覧するよう、アウトオブバンド管理接続２６０を通じてキーコマンドを送信する。例えば、モニタは、それを通じてアウトオブバンド接続２６０を介してスクリーンをレビューすることができるｉｐｍｉコンソールであってもよい。例として、アウトオブバンド接続２６０は、キーボード／マウスとしてＵＳＢにつなげてもよく、ＶＧＡモニタポートにつなげてもよい。ステップ２１０．５１において、実行リソースは、スクリーン上で情報を表示する。ステップ２１０．５２において、コントローラは次いで、アウトオブバンド管理接続２６０及びスクリーンスクレイプまたは同様の操作を介してモニタまたはコンソール上で提示された情報を読み出し、この読み出された情報は、トリガポイントに基づいて低ストレージ状態を示すことができる。
【００７０】
プロセスフローは次いで、図２Ｂのステップ２１０．４３を続けてもよい。
【００７１】
図２Ｄは、図２Ｂにおけるステップ２１０．４１及び２１０．４２を実行する別の代替的な実施例を例示する。ステップ２１０．５５において、実行リソースは、コントローラによって読み出すための情報をモニタまたはコンソール上で自動的に表示する。ステップ２１０．５６において、コントローラは、実行リソースをチェックするよう、モニタまたはコンソールを自動的に、定期的に、または絶え間なく読み出す。この読み出しに応答して、コントローラは、実行リソースが、ストレージが低いと確認する（ステップ２１０．５７）。プロセスフローは次いで、図２Ｂのステップ２１０．４３を続けてもよい。
【００７２】
コントローラ２００はまた、ベアメタル及び／またはサービステンプレートを含むことができる、テンプレート２３０のライブラリを含む。それらのテンプレートは、電子メール、ファイルストレージ、ボイスオーバＩＰ、ソフトウェアカウンティング、ソフトウェアＸＭＰＰ、ｗｉｋｉ、バージョン制御、アカウント認証管理、及びユーザインタフェースによって構成可能であってもよい第三者アプリケーションを含んでもよいが、これらに限定されない。テンプレート２３０は、リソース、アプリケーション、もしくはサービスとの関連付けを有してもよく、またはそれは、そのようなリソース、アプリケーション、もしくはサービスがシステムにどのように統合されるかを定義するレシピとしての役割を果たしてもよい。
【００７３】
そのようにして、テンプレートは、リソース、またはリソースに対してロードされたアプリケーションもしくはサービスを作成、構成、及び／または配備するために使用される確立された情報のセットを含んでもよい。そのような情報は、カーネル、ｉｎｉｔｒｄファイル、ファイルシステムもしくはファイルシステムイメージ、ファイル、構成ファイル、構成ファイルテンプレート、異なるハードウェア及び／もしくは計算バックエンドのための適切なセットアップを判定するために使用される情報、並びに／またはアプリケーションの作成、ブート、もしくは実行を可能にし、及び／もしくは促進するアプリケーション及び／もしくはオペレーティングシステムイメージを動かすためのリソースを構成するための他の利用可能なオプションを含んでもよいが、これらに限定されない。
【００７４】
テンプレートは、複数の物理サーバタイプまたはコンポーネント、複数のハードウェアタイプ上で実行する複数のハイパーバイザ、複数のハードウェアタイプ上でホストすることができるコンテナホストを含むが、これらに限定されない、複数のサポートされたハードウェアタイプ／及びまたは計算バックエンド上でアプリケーションを配備するために使用することができる情報を包含してもよい。
【００７５】
テンプレートは、コンピューティングリソース上で実行するアプリケーションまたはサービスについてのブートイメージを導出してもよい。テンプレート及びテンプレートから導出されたイメージは、アプリケーションを作成し、アプリケーションもしくはサービスを配備し、並びに／またはアプリケーションの作成を可能にし、及び／もしくは促進する、様々なシステム機能についてのリソースを調整するために使用されてもよい。テンプレートは、デフォルトの設定またはコントローラから与えられた設定のいずれかからの構成オプションにより上書きすることができるファイル、ファイルシステム、及び／またはオペレーティングシステムイメージにおける可変パラメータを有してもよい。テンプレートは、アプリケーションまたは他のリソースを構成するために使用される構成スクリプトを有してもよく、それは、構成変数、構成ルール、及び／またはデフォルトルールもしくは変数を利用してもよく、それらのスクリプト、変数、及び／またはルールは、特定のハードウェアまたは他のリソース特有パラメータ、例えば、ハイパーバイザ（仮想のときの）、利用可能なメモリについての特定のルール、スクリプト、または変数を包含してもよい。テンプレートは、バイナリリソースの形式にあるファイル、バイナリリソース、またはハードウェアもしくは他のリソース特有パラメータをもたらすコンパイル可能ソースコード、バイナリリソースの特定のセット、あるいは特定のハードウェアまたは他のリソース特有パラメータ、例えば、ハイパーバイザ（仮想のときの）、利用可能なメモリについてのコンパイル命令を有するソースコードを有してもよい。テンプレートは、リソース上で実行しているものとは独立した情報のセットを含んでもよい。
【００７６】
テンプレートは、ベースイメージを含んでもよい。ベースイメージは、ベースオペレーティングシステムファイルシステムを含んでもよい。ベースオペレーティングシステムは、読み出し専用であってもよい。ベースイメージはまた、実行しているものとは独立したオペレーティングシステムの基本ツールを含んでもよい。ベースイメージは、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。テンプレートは、カーネルを含んでもよい。カーネルまたは複数のカーネルは、ｉｎｉｔｒｄカーネル、または異なるハードウェアタイプ及びリソースタイプに対して構成された複数のカーネルを含んでもよい。イメージは、１つ以上のリソースにロードされ、または配備されたテンプレート広告から導出されてもよい。ロードされたイメージは、対応するテンプレートのカーネルまたはｉｎｉｔｒｄのカーネルなどのブートファイルも含んでもよい。
【００７７】
イメージは、テンプレートに基づいてリソースにロードすることができるテンプレートファイルシステム情報を含んでもよい。テンプレートファイルシステムは、アプリケーションまたはサービスを構成してもよい。テンプレートファイルシステムは、例えば、ファイルシステムが記憶されるストレージ空間を節約し、または読み出し専用ファイルの使用を容易にするよう、全てのリソースまたは同様のリソースに共通な共有ファイルシステムを含んでもよい。
【００７８】
テンプレートファイルシステムまたはイメージは、配備されるサービスに共通なファイルのセットを含んでもよい。テンプレートファイルシステムは、コントローラ上で事前ロードされてもよく、またはダウンロードされてもよい。テンプレートファイルシステムは、更新されてもよい。テンプレートファイルシステムは、再構築することを必要としないことがあるので、相対的に素早い配備を可能にすることができる。他のリソースまたはアプリケーションとファイルシステムを共有すると、ファイルが不必要に複製されないので、ストレージの削減を可能にすることができる。これはまた、テンプレートファイルシステムとは異なるファイルのみが復元される必要があるので、障害からのより容易な復元を可能にすることができる。
【００７９】
テンプレートブートファイルは、カーネル及び／またはｉｎｉｔｒｄもしくはブートプロセスを支援するために使用される同様のファイルシステムを含んでもよい。ブートファイルは、オペレーティングシステムをブートすることができ、テンプレートファイルシステムをセットアップすることができる。ｉｎｉｔｒｄは、ブートすることができるようにテンプレートをどのようにセットアップするかに関する命令を有する小規模一時ファイルシステムを含んでもよい。
【００８０】
テンプレートは更に、ＢＩＯＳ設定を含んでもよい。テンプレートＢＩＯＳ設定は、物理ホスト上でアプリケーションを実行するための任意選択の設定を設定するために使用されてもよい。使用される場合、図１〜１２に関して本明細書で説明されるような、アウトオブバンド管理２６０は次いで、リソースまたはアプリケーションをブートするために使用されてもよい。物理ホストは、アウトオブバンド管理ネットワーク２６０またはＣＤＲＯＭを使用して、リソースまたはアプリケーションをブートしてもよい。コントローラ２００は、そのようなテンプレートにおいて定義されたアプリケーション特有のＢＩＯＳ設定を設定してもよい。コントローラ２００は、特定のリソースに特有のＡＰＩを通じて、直接のＢＩＯＳ変更を行うためにアウトオブバンド管理システムを使用してもよい。設定は、コンソール及び画像認識を通じて検証されてもよい。したがって、コントローラ２００は、コンソール機能を使用してもよく、仮想キーボード及びマウスによりＢＩＯＳ変更を行ってもよい。コントローラはまた、ＵＥＦＩシェルを使用してもよく、コンソールに直接タイプしてもよく、成功した結果を検証し、コマンドにおいて正確にタイプし、設定変更の成功を保証するために画像認識を使用してもよい。特定のＢＩＯＳバージョンへのＢＩＯＳ変更または更新に利用可能なブート可能なオペレーティングシステムが存在する場合、コントローラ２００は、ＢＩＯＳを更新し、信頼できる方式で構成変更を可能にするアプリケーションをオペレーティングシステムが実行するディスクイメージまたはＩＳＯブートをリモートにロードしてもよい。
【００８１】
テンプレートは更に、テンプレート特有のサポートされるリソースのリストまたは特定のアプリケーションもしくはサービスを実行するために必要とされるリソースのリストを含んでもよい。
【００８２】
テンプレートイメージまたはイメージもしくはテンプレートの一部は、コントローラ２００に記憶されてもよく、あるいはコントローラ２００は、ストレージリソース４１０にそれを移動させ、またはコピーしてもよい。
【００８３】
図２Ｅは、例示的なテンプレート２３０を示す。テンプレートは、アプリケーションまたはサービスを作成するために必要な全ての情報を包含する。テンプレート２３０はまた、同様または同一の機能性を提供する異なるハードウェアタイプについての情報、代替的なデータ、ファイル、バイナリを包含してもよい。例えば、異なるアーキテクチャに対してコンパイルされたバイナリ２３４により、／ｕｓｒ／ｂｉｎ及び／ｂｉｎについてのファイルシステムｂｌｏｂ２３２が存在してもよい。テンプレート２３０はまた、デーモン２３３またはスクリプト２３１を包含してもよい。デーモン２３３は、ホストがパワーオンされ、またはｒｅａｄｙ状態になるときのブート時間に実行することができるバイナリまたはスクリプトであり、いくつかのケースでは、デーモン２３３は、コントローラによってアクセス可能であってもよく、コントローラがホストの設定を変更することを可能にすることができる（及び、コントローラは続いて、アクティブシステムルールを更新することができる）ＡＰＩを動かしてもよい。デーモンは、上記及び以下で議論されるアウトオブバンド管理２６０またはインバンド管理２７０を通じてパワーダウン及び再起動されてもよい。それらのデーモンはまた、新たなサービス（例えば、ｎｇｉｎｘまたはａｐａｃｈｅを制御するＡＰＩと通信する一般的なウェブサーバＡＰＩ）に対して従属サービスを提供するよう、一般的なＡＰＩを動かしてもよい。スクリプト２３１は、イメージをブートしている間もしくは後、またはデーモンを開始し、もしくはサービスを有効にした後に実行することができるインストールスクリプトであってもよい。
【００８４】
テンプレート２３０はまた、カーネル２３５及び事前ブートファイルシステム２３６を包含してもよい。テンプレート２３０はまた、異なるハードウェア及び異なる構成についての複数のカーネル２３５及び１つ以上の事前ブートファイルシステム（Ｌｉｎｕｘについてのｉｎｉｔｒｄもしくはｉｎｉｔｒａｍｆｓ、またはｂｓｄについての読み出し専用ＲＡＭディスクなど）を含んでもよい。ｉｎｉｔｒｄはまた、以下で議論されるように、任意選択でＳＡＮ接続２８０を通じてストレージリソースに接続することができるｉｎｉｔｒａｍｆｓ２３６にブートすることによって、オーバレイとして提示されるファイルシステムｂｌｏｂ２３２をマウントし、リモートストレージ上でルートファイルシステムをマウントするために使用されてもよい。
【００８５】
ファイルシステムｂｌｏｂ２３２は、別個のｂｌｏｂに分割することができるファイルシステムイメージである。ｂｌｏｂは、構成オプション、ハードウェアタイプ、及びセットアップにおける他の差異に基づいて相互に変更可能であってもよい。テンプレート２３０からブートされるホストは、１つまたは複数のファイルシステムｂｌｏｂから作成された複数のｂｌｏｂまたはイメージを包含するユニオンファイルシステム（ｏｖｅｒｌａｙｆｓなど）からブートされてもよい。
【００８６】
テンプレート２３０はまた、揮発性データ２３８及び／または構成パラメータ２３９などの追加の情報２３７を含んでもよく、または追加の情報２３７とリンク付けされてもよい。例えば、揮発性データ２３８は、テンプレート２３０に包含されてもよく、またはそれは、外部に包含されてもよい。それは、ファイルシステムｂｌｏｂ２３２、またはデータベース、フラットファイル、ディレクトリに記憶されたファイル、ファイルのターボール、ギット、もしくは他のバージョン制御リポジトリを含む他のデータストアの形式のものであってもよいが、これらに限定されない。加えて、構成パラメータ２３９は、テンプレート２３０に外部または内部に包含されてもよく、任意選択で、システムルールに包含され、テンプレート２３０に適用される。
【００８７】
システム１００は更に、リソースを含むが、これに限定されない、システム１００の状態を追跡し、維持し、変更し、及び更新するＩＴシステム状態２２０を含む。システム状態２２０は、利用可能なリソースを追跡してもよく、それは、ルールの実装、及びテンプレートに利用可能なリソースがあるかどうか、及びどのリソースが利用可能であるかをコントローラロジックに通知する。システム状態は、使用されたリソースを追跡してもよく、それは、アップグレード、または効率性を改善し、もしくは優先度のためなどの他の理由により、切り替える必要性があるかどうかに関わらず、コントローラロジック２０５が効率性を検査し、効率性を利用することを可能にする。システム状態は、どのアプリケーションが実行しているかを追跡してもよい。コントローラロジック２０５は、実行中の予想されるアプリケーションを、システム状態に従って、及び改定する必要があるかどうかに関わらず、実行中の実際のアプリケーションと比較してもよい。システム状態２２０はまた、アプリケーションがどこで実行しているかを追跡してもよい。コントローラロジック２０５は、効率性、変更管理、更新、トラブルシューティング、または監査証跡を評価する目的でこの情報を使用してもよい。システム状態は、ネットワーク化情報、例えば、どのネットワークがオンであり、もしくは現在稼働しているか、または構成値及び履歴を追跡してもよい。システム状態２２０は、変更の履歴を追跡してもよい。システム状態２２０はまた、どのテンプレートが使用されているかを規定したグローバルシステムルールに基づいて、どのテンプレートがどの配備において使用されているかを追跡してもよい。履歴は、監査、警告、変更管理、構築レポート、ハードウェア及びアプリケーション及び構成と相関付けられた追跡バージョン、または構成変数のために使用されてもよい。システム状態２２０は、監査、コンプライアンス検査、またはトラブルシューティングの目的により構成の履歴を維持してもよい。
【００８８】
コントローラは、システム状態、テンプレート、及びグローバルシステムルールに包含された全ての情報を管理するためのロジック２０５を有する。コントローラロジック２０５、グローバルシステムルールデータベース２１０、ＩＴシステム状態２２０、及びテンプレート２３０は、コントローラ２００によって管理され、コントローラ２００に存在してもよく、または存在しなくてもよい。コントローラロジック、またはアプリケーション２０５、グローバルシステムルールデータベース２１０、ＩＴシステム状態２２０、及びテンプレート２３０は、物理的または仮想的であってもよく、分散サービス、分散データベース、及び／もしくはファイルであってもよく、またはそうでなくてもよい。ＡＰＩアプリケーション１２０は、コントローラロジック／コントローラアプリケーション２０５と共に含まれてもよい。
【００８９】
コントローラ２００は、スタンドアロンマシンマシンを実行してもよく、及び／または１つ以上のコントローラを含んでもよい。コントローラ２００は、コントローラサービスまたはアプリケーションを含んでもよく、別のマシンの内部で実行してもよい。コントローラマシンは、スタックの全体またはスタックのグループのブートを順序付け及び／または一貫させることを保証するよう、コントローラサービスを最初に起動してもよい。
【００９０】
コントローラ２００は、コンピューティング、ストレージ、及びネットワーキングリソースにより１つ以上のスタックを制御してもよい。各々のスタックは、グローバルシステムルール２１０内のルールの異なるサブセットによって制御されてもよく、または制御されなくてもよい。例えば、事前作成、作成、配置、検査スタック、並列、バックアップ、及び／またはシステム内で異なる機能を有する他のスタックが存在してもよい。
【００９１】
コントローラロジック２０５は、所望のＩＴシステム状態を達成するよう、グローバルシステムルールを読み出し、及び解釈するように構成されてもよい。コントローラロジック２０５は、アプリケーションまたはサービスなどのシステムコンポーネントを構築し、所望のＩＴシステム状態を達成するよう、リソースを割り当て、追加し、または削除するために、グローバルルールに従ったテンプレートを使用するように構成されてもよい。コントローラロジック２０５は、利用可能な操作に基づいてルールを満たすよう、グローバルシステムルールを読み出し、状態を補正し、命令を発行することを着手するタスクのリストを開発してもよい。コントローラロジック２０５は、例えば、システムを起動し、リソースを追加し、削除し、再構成し、それを行うために何が利用可能であるかを識別する操作を実行するためのロジックを包含してもよい。コントローラロジックは、ハードウェアが利用可能であるかどうかを確認するために、起動時間において、及び定期的な間隔においてシステム状態をチェックしてもよく、利用可能である場合、タスクを実行してもよい。必要なハードウェアが利用可能でない場合、コントローラロジック２０５は、グローバルシステムルール２１０、テンプレート２２０、並びに代替的なオプションを提示し、それに従って、グローバルルール及び／またはシステム状態２２０を修正するために、システム状態２３０からの利用可能なハードウェアを使用する。
【００９２】
コントローラロジック２０５は、どの変数が必要とされるか、継続するのにユーザが何を入力することを必要とするか、または機能するためにシステムにおいてユーザが何を必要とするかを把握することができる。コントローラロジックは、グローバルシステムルールからのテンプレートのリストを使用してもよく、必要とされるテンプレートが利用可能であることを保証するよう、システム状態において必要とされるテンプレートと比較してもよい。コントローラロジック２０５は、システム状態データベースから、テンプレート特有のサポートされるリソースのリスト上のリソースが利用可能であるかどうかを識別してもよい。コントローラロジックは、リソースを割り当ててもよく、状態を更新してもよく、グローバルルールを実装するようタスクの次のセットに着手してもよい。コントローラロジック２０５は、グローバルルールにおいて指定されたような割り当てられたリソース上でアプリケーションを開始／実行してもよい。ルールは、テンプレートからアプリケーションをどのように構築するかを指定することができる。コントローラロジック２０５は、テンプレート（複数可）を獲得してもよく、変数からアプリケーションを構成してもよい。テンプレートは、どのカーネル、ブートファイル、ファイルシステム、及びサポートされるハードウェアリソースが必要とされるかをコントローラロジック２０５に通知してもよい。次いで、コントローラロジック２０５は、アプリケーション配備に関する情報をシステム状態データベースに追加してもよい。各々の命令の後、コントローラロジック２０５は、予測される動作が正確に完了したかどうかを検証するよう、グローバルルールの予測される状態に対してシステム状態データベースをチェックしてもよい。
【００９３】
コントローラロジック２０５は、バージョンルールに従ったバージョンを使用してもよい。システム状態２２０は、異なる配備においてどのルールバージョンが使用されているかを相関付けるデータベースを有してもよい。
【００９４】
コントローラロジック２０５は、ルール最適化に対する効率的なロジック及び効率的な順序を含んでもよい。コントローラロジック２０５は、リソースを最適化するように構成されてもよい。実行している、または実行していると予測されるアプリケーションに関連するシステム状態、ルール、及びテンプレートにおける情報は、リソースに対する効率性または優先度を実装するために、コントローラロジックによって使用されてもよい。コントローラロジック２０５は、効率性を判定し、またはアップグレードすること、別の目的のために再利用すること、もしくは他の理由によりリソースを切り替える必要性を判定するために、システム状態２２０において「使用済みリソース」における情報を使用してもよい。
【００９５】
コントローラは、システム状態２２０に従って実行しているアプリケーションをチェックしてもよく、グローバルルールの実行している予測されたアプリケーションと比較してもよい。アプリケーションが実行していない場合、それを開始してもよい。
【００９６】
アプリケーションが実行するべきでない場合、それを停止してもよく、適切な場合にリソースを再割り当てしてもよい。コントローラロジック２０５は、リソース（計算、ストレージ、ネットワーク化）仕様のデータベースを含んでもよい。コントローラロジックは、使用することができるシステムに対して利用可能なリソースタイプを認識するためのロジックを含んでもよい。これは、アウトオブバンド管理ネットワーク２６０を使用して実行されてもよい。コントローラロジック２０５は、アウトオブバンド管理２６０を使用して新たなハードウェアを認識するように構成されてもよい。コントローラロジック２０５はまた、監査、レポートの構築、及び変更管理の目的により、変更の履歴、使用されるルール、及びバージョンに関する情報をシステム状態２２０から取ってもよい。
【００９７】
図２Ｆは、テンプレート２３０を処理し、この例示的な目的のためにホストと称されることがあるリソースをブートし、パワーオンし、及び／または有効にするようイメージを導出することに関するコントローラロジック２０５についての例示的なプロセスフローを示す。このプロセスはまた、ストレージリソースを構成すること、並びにストレージ及び計算ホスト及び／またはリソースを結合することを含んでもよい。コントローラロジック２０５は、システム１００において利用可能なハードウェアリソースを把握し、システムルール２１０は、どのハードウェアリソースが利用されることが可能であるかを示すことができる。コントローラロジック２０５は、ステップ２０５．１において、テンプレート２３０を構文解析し、テンプレート２３０は、コントローラロジックに、図２Ｅに示されたテンプレート２３０とは外部にあるファイルを収集させるよう実行することができる命令ファイルを含んでもよい。命令ファイルは、ｊｓｏｎフォーマットにあってもよい。ステップ２０５．２において、コントローラロジックは、必要なファイルバケットのリストを収集する。また、ステップ２０５．３において、コントローラロジック２０５は、ハードウェアによって、及び任意選択で、ハイパーバイザ（または、コンテナホストシステム、マルチテナンシタイプ）によって参照される、必要なハードウェア特有ファイルをバケットに収集する。ハイパーバイザ（または、コンテナホストシステム、またはマルチテナンシタイプ）の参照は、ハードウェアが仮想マシン上で稼働することになる場合に必要になることがある。
【００９８】
ハードウェア特有ファイルが存在する場合、コントローラロジックは、ステップ２０５．４においてハードウェア特有ファイルを収集する。いくつかのケースでは、ファイルシステムイメージは、カーネルモジュール（または、最終的にディレクトリに置かれたカーネルモジュール）を包含するディレクトリに沿ってカーネル及びｉｎｉｔｒａｍｆｓを包含してもよい。コントローラロジック２０５は次いで、ステップ２０５．５において互換性を有する適切なベースイメージを選択する。ベースイメージは、アプリケーションまたはテンプレート２３０から導出されたイメージに特有でないことがあるオペレーティングシステムファイルを包含する。このコンテキストにおける互換性は、ベースイメージが動作するアプリケーションにテンプレートを変えるために必要なファイルを包含することを意味する。ベースイメージは、空間を節約するための機構としてテンプレートの外部で管理されてもよい（及び、多くの場合、ベースイメージは、いくつかのアプリケーションまたはサービスに対して同一であってもよい）。加えて、ステップ２０５．６において、コントローラロジック２０５は、実行可能ファイル、ソースコード、及びハードウェア特有構成ファイルを有するバケット（複数可）を選択する。テンプレート２３０は、構成ファイル、構成ファイルテンプレート（コントローラ２００が構成テンプレートを構成ファイルに変えることができ、任意選択で、ＡＰＩエンドポイントを通じて構成ファイルを変更することができるように、テンプレート２３０において既知とされてもよいシステムルール２１０における変数により満たされるプレースホルダまたは変数を包含する構成ファイルである）、バイナリ、及びソースコード（イメージがブートされるときにコンパイルすることができる）を含む、他のファイルを参照してもよいが、これらに限定されない。ステップ２０５．７において、ステップ２０５．４、２０５．５、及び２０５．６において選択された要素に対応するハードウェア特有命令は、ブートされるイメージの一部としてロードされてもよい。コントローラロジック２０５は、選択されたコンポーネントからイメージを導出する。例えば、物理ホスト対仮想マシンについての異なる事前インストールスクリプト、またはＰｏｗｅｒｐｃ対ｘ８６についての差異が存在してもよい。
【００９９】
ステップ２０５．８において、コントローラロジック２０５は、ｏｖｅｒｌａｙｆｓをマウントし、サブジェクトファイルを単一のファイルシステムｂｌｏｂに再パッケージ化する。複数のファイルシステムｂｌｏｂが使用されるとき、複数のｂｌｏｂによりイメージが作成されてもよく、ターボールを解凍し、及び／またはギットをフェッチする。ステップ２０５．８が実行されない場合、ファイルシステムｂｌｏｂは、分離されたままであってもよく、イメージが、ファイルシステムｂｌｏｂのセットとして作成され、複数のより小規模のファイルシステム（ｏｖｅｒｌａｙｆｓなど）を共にマウントすることが可能なファイルシステムによりマウントされる。コントローラロジック２０５は次いで、ステップ２０５．９において互換性を有するカーネル（または、システムルール２１０において指定されたカーネル）を特定してもよく、ステップ２０５．１０において適用可能なｉｎｉｔｒｄを特定してもよい。互換性を有するカーネルは、テンプレート及びテンプレートを実装するために使用されるリソースの従属性を満たすカーネルであってもよい。互換性を有するｉｎｉｔｒｄは、テンプレートを所望のコンピューティングリソースにロードするｉｎｉｔｒｄであってもよい。多くの場合、ｉｎｉｔｉｒｄは、完全にブートする前に、ストレージリソースをマウントすることができるように（ルートファイルシステムがリモートであってもよいように）、物理リソースに対して使用されてもよい。カーネル及びｉｎｉｔｒｄは、ファイルシステムｂｌｏｂにパッケージ化されてもよく、ファイルシステムｂｌｏｂは、予備のオペレーティングシステムをブートした後にライブシステム上のカーネルを変更するために、ｋｅｘｅｃを使用して直接カーネルブートに対して使用されてもよく、または物理ホスト上で使用されてもよい。
【０１００】
コントローラは次いで、コンピューティングリソース（複数可）が２０５．１１、２０５．１２、及び／または２０５．１３によって示された技術のいずれかを使用して、アプリケーション（複数可）及び／またはイメージ（複数可）を動かすことを可能にするようストレージリソース（複数可）を構成する。２０５．１１により、ｏｖｅｒｌａｙｆｓファイルは、ストレージリソースとして提供されてもよい。２０５．１２により、ファイルシステムが提示される。例えば、ストレージリソースは、組み合わされたファイルシステム、またはｏｖｅｒｌａｙｆｓと同様のファイルシステムを使用してコンピューティングリソースが同時にマウントすることができる複数のファイルシステムｂｌｏｂを提示してもよい。２０５．１３により、ｂｌｏｂは、ファイルシステムを提示する前にストレージリソースに送信される。
【０１０１】
図２Ｇ及び２Ｈは、図２Ｆのステップ２０５．１１及び２０５．１２についての例示的なプロセスフローを示す。更にまた、システムは、ストレージ接続プロセスと称されてもよい、コンピュータリソースをストレージリソースに接続するためのプロセス及びルールを採用してもよい。図２Ｇ及び２Ｈによって示されたプロセスに加えてそのようなストレージ接続プロセスの実施例は、これに添付された別紙Ａにおいて提供される。図２Ｇは、ストレージリソースの接続のための例示的なプロセスフローを示す。いくつかのストレージリソースは読み出し専用であってもよく、その他は、書き込み可能であってもよい。ストレージリソースは、競争状態を生じさせる同時書き込みが存在しないように、その自身の書き込みロックを管理してもよく、またはシステム状態２２０は、どの接続がストレージリソースに書き込むことができるかを追跡してもよく、及び／もしくはリソースへの複数の読み出し−書き込み接続を防止してもよい（ステップ２０５．２１）（例えば、ステップ２０５．２０を参照）。コントローラロジックまたはリソース自体は、ストレージリソースの位置及び伝送タイプ（例えば、ｉｓｃｓｉ、ｉｓｅｒ、ｎｖｍｅｏｆ、ファイバチャネル、ｆｃｏｅ、ｎｆｓ、ｎｆｓ  ｏｖｅｒ  ｒｄｍａ、ａｆｓ、ｃｉｆｓ、ｗｉｎｄｏｗｓ共有）についてコントローラのシステム状態２２０をクエリしてもよい（ステップ２０５．２２）。コンピューティングリソースが仮想的である場合、ハイパーバイザ（例えば、ハイパーバイザデーモンを介した）は、ストレージリソースへの接続を扱ってもよい（ステップ２０５．２３）。これは、仮想マシンがＳＡＮ２８０を認識していないことがあるので、望ましいセキュリティの利点を有することがある。
【０１０２】
ステップ２０５．２４を参照して、コンピューティングリソース及びストレージリソースを接続するプロセスは、システムルール２１０において命令されてもよい。コントローラロジックは次いで、リソースが利用可能であり、必要な場合に書き込み可能であることを確認するようシステム状態２２０をクエリする（ステップ２０５．２２）。システム状態２２０は、ＳＱＬクエリ（または、他のタイプのデータベースクエリ）、ＪＳＯＮ構文解析などのいずれかの数の技術を介してクエリされてもよい。クエリは、コンピューティングリソースがストレージリソースに接続するための必要な情報を返す。コントローラ２００、システム状態２２０、またはシステムルール２１０は、コンピューティングリソースがシステム状態に接続するための認証信用情報を提供してもよい（ステップ２０５．２５）。コンピューティングリソースは次いで、直接またはコントローラを介してのいずれかにより、システム状態２２０を更新する（ステップ２０５．２６）。
【０１０３】
図２Ｈは、ストレージリソースをパワーオンし、ストレージリソースに接続するための、物理、仮想、または他のタイプのコンピューティングリソース、アプリケーション、サービス、またはホストの例示的なブートプロセスを例示する。ストレージリソースは任意選択で、融合ファイルシステム及び／または拡張可能ボリュームを利用してもよい。コントローラまたは他のシステムが物理ホストを有効にする状況では、物理ホストは、システムを構成するためのオペレーティングシステムにより事前ロードされてもよい。したがって、ステップ２０５．３１において、コントローラは、ｉｎｉｔｒａｍｆｓによりブートディスクを事前ロードしてもよい。また、コントローラ２００は、予備のオペレーティングシステムをネットワークブートし（ステップ２０５．３０）、次いで、任意選択で、予備のオペレーティングシステムによりホストを事前ロードする（ステップ２０５．３１）ためにアウトオブバンド管理接続２６０を使用してもよい。ｉｎｉｔｒａｍｆｓは次いで、ステップ２０５．３２においてロードし、ストレージリソースは、ステップ２０５．３３において、図２Ｇにおいて示された方法を使用して接続される。
【０１０４】
次いで、拡張可能ボリュームが存在する場合、共に結合されるサブボリュームまたはデバイスは、ステップ２０５．３４において、論理ボリューム管理（ＬＶＭ）が使用中である場合にボリュームグループとして任意選択で組み立てられる。または、それらは、ステップ２０５．３４において、ディスクを組み合わせる他の方法を使用して結合されてもよい。
【０１０５】
融合ファイルシステムが使用中である場合、ステップ２０５．３６において、ファイルが組み合わされてもよく、次いで、ブートプロセスが継続してもよい（ステップ２０５．４６）。いくつかの既知の問題を修正するためにｌｉｎｕｘにおいてｏｖｅｒｌａｙｆｓが使用中である場合、以下のサブプロセスが実行されてもよい。揮発性であってもよい、各々のマウントされたファイルシステムｂｌｏｂにおいて／ｄａｔａディレクトリが作成されてもよい（ステップ２０５．３７）。次いで、ステップ２０５．３８において、ｎｅｗ＿ｒｏｏｔディレクトリが作成されてもよく、ステップ２０５．３９において、ｏｖｅｒｌａｙｆｓがディレクトリにマウントされる。次いで、ｉｎｉｔｒａｍｆｓは、／ｎｅｗ＿ｒｏｏｔ上でｅｘｅｃ＿ｒｏｏｔを実行する（ステップ２０５．４０）。
【０１０６】
ホストが仮想マシンである場合、直接カーネルブートなどの追加のツールが利用可能であってもよい。この状況では、ハイパーバイザは、ＶＭをブートする前にストレージリソースに接続してもよく（ステップ２０５．４１）、またはそれは、ブートしている間にこれを行ってもよい。ＶＭは次いで、ｉｎｉｔｒａｍｆｓをロードすることと共にブートされた直接カーネルであってもよい（ステップ２０５．４２）。ｉｎｉｔｒａｍｆｓは次いで、ステップ２０５．４３においてロードし、ハイパーバイザは、このポイントにおいて、リモートであってもよいストレージリソースに接続してもよい（ステップ２０５．４４）。これが達成されるために、ハイパーバイザホストは、インタフェースにおいて通る必要があることがある（例えば、ｉｎｉｆｉｎｉｂａｎｄがｉＳＥＲターゲットに接続するために必要な場合、それは、ｐｃｉ−ｐａｓｓｈｔｒｕを使用してＳＲ−ＩＯＶに基づく仮想機能において通ってもよく、またはいくつかの状況では、準仮想化されたネットワークインタフェースを使用してもよい）。それらの接続は、ｉｎｉｔｒａｍｆｓによって使用可能である。仮想マシンは次いで、まだそうでない場合、ステップ２０５．４５においてストレージリソースに接続してもよい。それはまた、ハイパーバイザを通じて（任意選択で、準仮想化されたストレージを通じて）そのストレージリソースを受信してもよい。プロセスは、任意選択で、融合ファイルシステム及びＬＶＭスタイルディスクをマウントしている仮想マシンに対して同様であってもよい。
【０１０７】
図２Ｏは、２０５．１３にあるように、ファイルシステムｂｌｏｂまたはファイルの他のグループからのストレージリソースを構成する例示的なプロセスフローを例示する。ｂｌｏｂは、ステップ２０５．７５において収集され、それらは、２０５．７３においてストレージリソースホストに直接コピーされてもよい（ストレージリソースホストがファイルシステムｂｌｏｂ２３２を保持するデバイスとは異なる場合）。ストレージリソースが適切な位置にあると、システム状態は次いで、ストレージリソースの位置及び利用可能な伝送（例えば、ｉＳＥＲ、ｎｖｍｅｏｆ、ｉＳＣＳＩ、ＦｃｏＥ、ファイバチャネル、ｎｆｓ、ｎｆｓ  ｏｖｅｒ  ｒｄｍａ）により２０５．７４において更新される。それらのｂｌｏｂのいくつかは、読み出し専用であってもよく、次いで、そのケースでは、システム状態が同一のままであり、新たなコンピューティングリソースまたはホストは、その読み出し専用ストレージリソースに接続してもよい（例えば、ベースイメージに接続するとき）。いくつかのケースでは、２０５．７０に示されたように、いずれかの融合ファイルシステムのオーバヘッドを回避するために、ファイルを単一のファイルシステムイメージに置くことが望ましいことがある。これは、ｂｌｏｂを融合ファイルシステムとしてマウントし（ステップ２０５．７１）、次いで、それらを新たなファイルシステムにコピーし、またはそれらを単一のファイルシステムとして再パッケージ化し（ステップ２０５．７２）、次いで、任意選択で、新たなファイルシステムイメージがストレージリソースとして提示されるための適切な場所に新たなファイルシステムイメージをコピーすることによって達成されてもよい。いくつかの融合ファイルシステムは、ステップ２０５．７１においてそれを最初にマウントすることなく、併合することが達成され、それらを単一のステップに併合することを可能にすることができる。
【０１０８】
図２Ｉは、図２Ｅに示されたような別の例示的なテンプレート２３０を例示する。この実施例では、コントローラは、中間構成ツールと共に図２Ｉに示されるようなテンプレート２３０を使用するように構成されてもよい。例示的な実施形態に従って、中間構成ツールは、新たなアプリケーションまたはサービスを従属性アプリケーションまたはサービスと結合するために使用される共通ＡＰＩを含んでもよい。したがって、テンプレート２３０は加えて、テンプレートのサービスをセットアップするために必要とされることがある従属性のリスト２４４を含んでもよい。テンプレート２３０はまた、従属性の共通ＡＰＩへの呼び出しを包含することができる接続ルール２４５を包含してもよい。テンプレート２３０はまた、１つまたは複数の共通ＡＰＩ２４３、並びに共通ＡＰＩ及びバージョンのリスト２４２を含んでもよい。共通ＡＰＩ２４３は、従属性アプリケーションまたはサービスがテンプレート２３０によって構築される新たなアプリケーションに結合されることができるように、コントローラが従属性アプリケーションまたはサービスを構成することを可能にする、アプリケーションまたはコントローラから呼び出し可能（または呼び出し不可）であってもよい、メソッド、関数、スクリプト、または命令を有してもよい。コントローラは、共通ＡＰＩ２４３と通信してもよく、及び／または新たなサービスまたはアプリケーション及び従属性サービスまたはアプリケーションの結合を構成するよう、ＡＰＩ呼び出しを行ってもよい。代わりに、命令は、アプリケーションまたはサービスが、従属性アプリケーションまたはサービス上で直接、共通ＡＰＩ２４３と通信し、及び／または共通ＡＰＩ２４３に呼び出しを送信することを可能にすることができる。テンプレート２３０の接続ルール２４５は、新たなサービスまたはアプリケーションを従属性サービスまたはアプリケーションと接続することに関するＡＰＩ呼び出しを包含することができるルール及び／または命令のセットである。
【０１０９】
システム状態２２０は更に、実行サービスのリスト２４６を含んでもよい。実行サービスのリスト２４６は、テンプレート２３０からの従属性２４４を満たすことを求めるよう、コントローラロジック２０５によってクエリされてもよい。コントローラはまた、特定のサービス／アプリケーションまたはサービス／アプリケーションのタイプに対して利用可能な異なる共通ＡＰＩのリスト２４７を含んでもよく、また、共通ＡＰＩを包含するテンプレートを含んでもよい。リストは、コントローラロジック２０５、システムルール２１０、システム状態２２０、またはコントローラがアクセスすることができるテンプレートストレージに存在してもよい。コントローラはまた、全ての既存のまたはロードされたテンプレートからコンパイルされた共通ＡＰＩのインデックス２４８を維持する。
【０１１０】
図２Ｊは、図２Ｆによって示されたような、コントローラロジック２０５がテンプレート２３０を処理することに関するが、ステップ２５５では、コントローラがサービス従属性を管理する例示的なプロセスフローを例示する。図２Ｋは、図２Ｊのステップ２５５についての例示的なプロセスフローを示す。ステップ２５５．１において、コントローラは、テンプレートから従属性のリスト２４４を収集する。コントローラはまた、テンプレートから共通ＡＰＩのリスト２４３を収集する。（Ａ）ステップ２５５．２において、コントローラは、テンプレートからの共通ＡＰＩのリスト２４３を共通ＡＰＩのインデックス２４８と比較することによって、及び従属性を満たすと考えられるアプリケーションまたはサービスのタイプに基づいて、可能な従属性アプリケーションまたはサービスのリストを縮小する。ステップ２５５．３において、コントローラは、システムルール２１０が従属性を満たす方式を指定するかどうかを判定する。
【０１１１】
ステップ２５５．３においてｙｅｓである場合、コントローラは、実行テンプレートのリストをクエリすることによって、従属性サービスまたはアプリケーションが実行しているかどうかを判定し（ステップ２５５．４）、ステップ２５５．４においてｎｏである場合、従属性サービス／アプリケーションのテンプレートを処理するコントローラロジックを含むことができるサービスアプリケーションが実行される（及び／または、構成され、次いで実行される）（ステップ２５５．５）。従属性サービスまたはアプリケーションがステップ２５５．４において実行していると判明した場合、次いで、プロセスフローは、ステップ２５５．６に進む。ステップ２５５．６において、コントローラは、テンプレートを使用して、構築される新たなサービスまたはアプリケーションを従属性サービスまたはアプリケーションに結合する。新たなサービスまたはアプリケーション及び従属性アプリケーション／サービスを結合する際、コントローラは、それが処理しているテンプレートを検討し、接続ルール２４５を実行する。コントローラは、接続ルール２４５に基づいて、従属性２４４をどのように満たし、及び／またはアプリケーション／サービスをどのように結合するかについてのコマンドを共通ＡＰＩ２４３に送信する。共通ＡＰＩ２４３は、サービスのＡＰＩ関数を呼び出すこと、構成を変更すること、スクリプトを実行すること、他のプログラムを呼び出すことを含むことができるが、これらに限定されない、新たなサービスまたはアプリケーション及び従属性アプリケーションまたはサービスを接続する、コントローラからの命令を変換する。ステップ２５５．６に続いて、プロセスフローは、図２Ｊのステップ２０５．２に進む。
【０１１２】
ステップ２５５．３が、システムルール２１０が従属性を満たす方式を指定しないと判断した場合、コントローラは次いで、ステップ２５５．７において、適切な従属性アプリケーションまたはサービスが実行しているかどうかを確認するよう、システム状態２２０をクエリする。ステップ２５５．８において、コントローラは、適切な従属性アプリケーションまたはサービスが実行しているかどうかについてのクエリに基づいて、その判定を行う。ステップ２５５．８においてｎｏである場合、コントローラは次いで、アクションについて管理者またはユーザに通知してもよい（ステップ２５５．９）。ステップ２５５．８においてｙｅｓである場合、プロセスフローは次いで、上記議論されたように動作することができるステップ２５５．６に進む。ユーザは任意選択で、新たなアプリケーションが実行している従属性アプリケーションに接続するべきかどうかについてクエリされてもよく、そのケースでは、コントローラは、ステップ２５５．６において、以下のように新たなアプリケーションまたはサービスを従属性アプリケーションまたはサービスに結合してもよく、コントローラは、それが処理しているテンプレート２３０を検討し、接続ルール２４５を実行する。コントローラは次いで、従属性２４４をどのように満たすかに関する接続ルール２４５に基づいて、コマンドを共通ＡＰＩ２４３に送信する。共通ＡＰＩ２４３は、新たなサービスまたはアプリケーション及び従属性アプリケーションまたはサービスを接続する、コントローラからの命令を変換する。
【０１１３】
外部ユーザインタフェースもしくはウェブＵＩ、またはアプリケーションによってユーザは、コントローラアプリケーションまたはロジック２０５にも組み込まれてもよいＡＰＩアプリケーション１２０を通じてコントローラ２００と通信する。
【０１１４】
コントローラ２００は、複数のネットワーク、相互接続、またはそれを通じてコントローラがコンピューティング、ストレージ、及びネットワーキングリソースに動作するよう指示することができる他の接続のうちの１つ以上によってスタックまたはリソースと通信する。そのような接続は、アウトオブバンド管理接続２６０、インバンド管理接続２７０、ＳＡＮ接続２８０、及び任意選択のオンネットワークインバンド管理接続２９０を含んでもよい。
【０１１５】
アウトオブバンド管理は、コントローラ２００を通じてシステム１００のコンポーネントを検出し、構成し、及び管理するためにコントローラ２００によって使用されてもよい。アウトオブバンド管理接続２６０は、コントローラ２００が、プラグインされ、利用可能であるが、ターンオンされないリソースを検出することを可能にすることができる。リソースは、プラグインされるとき、ＩＴシステム状態２２０に追加されてもよい。アウトオブバンド管理は、ブートイメージをロードし、システム１００に属するリソースを構成及び監視するように構成されてもよい。アウトオブバンド管理はまた、オペレーティングシステムの診断のために一時イメージをブートしてもよい。アウトオブバンド管理は、ＢＩＯＳ設定を変更するために使用されてもよく、また、実行しているオペレーティングシステム上でコマンドを実行するためにコンソールツールを使用してもよい。設定はまた、コンソール、キーボード、及びＶＧＡ、ＤＶＩ、もしくはＨＤＭＩポートなどのハードウェアリソース上の物理もしくは仮想モニタポートからのビデオ信号の画像認識、並びに／またはアウトオブバンド管理によって提供されるＡＰＩ、例えば、Ｒｅｄｆｉｓｈを使用して、コントローラによって変更されてもよい。
【０１１６】
本明細書で使用されるようなアウトオブバンド管理は、オペレーティングシステム及びメインマザーボードから独立したリソースまたはノードに接続することが可能な管理システムを含んでもよいが、これらに限定されない。アウトオブバンド管理接続２６０は、ネットワーク、または複数のタイプの直接もしくは間接接続もしくは相互接続を含んでもよい。アウトオブバンド管理接続のタイプの例は、ＩＰＭＩ、Ｒｅｄｆｉｓｈ、ＳＳＨ、ｔｅｌｎｅｔ、他の管理ツール、キーボードビデオ及びマウス（ＫＶＭ）、もしくはＫＶＭ  ｏｖｅｒ  ＩＰ、シリアルコンソール、またはＵＳＢを含むが、これらに限定されない。アウトオブバンド管理は、ノードまたはリソースをパワーオン及びオフすることができ、温度及び他のシステムデータを監視することができ、オペレーティングシステムの制御の及ばない可能性のあるＢＩＯＳ及び他の低レベルの変更を行うことができ、コンソールに接続することができ、コマンドを送信することができ、キーボード、マウス、モニタを含むが、これらに限定されない、入力を制御することができる、ネットワークを通じて使用することができるツールである。アウトオブバンド管理は、物理リソース内のアウトオブバンド管理回路に結合されてもよい。アウトオブバンド管理は、インストールメディアをブートするために使用することができるディスクとしてディスクイメージを接続してもよい。
【０１１７】
管理ネットワークまたはインバンド管理接続２７０は、コントローラが、コンピューティング、ストレージ、ネットワーク化、または他のリソースに関する情報を収集し、リソースが実行しているオペレーティングシステムに直接通信することを可能にすることができる。ストレージリソース、コンピューティングリソース、またはネットワーキングリソースは、接続２６０及び／または２７０とインタフェースする管理インタフェースを含んでもよく、それによって、それらは、コントローラ２００と通信することができ、リソースに対して何が実行しており及び利用可能であるかをコントローラに通知することができ、コントローラからコマンドを受信することができる。本明細書で使用されるようなインバンド管理ネットワークは、リソースと、リソースのオペレーティングシステムに直接通信することが可能な管理ネットワークを含む。インバンド管理接続の例は、ＳＳＨ、ｔｅｌｎｅｔ、他の管理ツール、シリアルコンソール、またはＵＳＢを含んでもよいが、これらに限定されない。
【０１１８】
アウトオブバンド管理がインバンド管理ネットワークから物理的または仮想的に分離されたネットワークとして本明細書で説明されるが、それらは、本明細書で更に詳細に説明されるように、効率化のためにその他の各々と組み合わされてもよく、またはその他の各々と共に作動してもよい。また、したがって、アウトオブバンド及びインバンド管理またはそれらの態様は、コントローラの同一のポートを通じて通信してもよく、または組み合わされた相互接続と結合されてもよい。任意選択で、接続２６０、２７０、２８０、２９０のうちの１つ以上は、そのようなネットワークのその他から分離されてもよく、または組み合わされてもよく、同一のファブリックを含んでもよく、または含まなくてもよい。
【０１１９】
加えて、コンピューティングリソース、ストレージリソース、及びコントローラは、ストレージネットワーク（ＳＡＮ）２８０に、コントローラ２００が各々のリソースをブートするためにストレージネットワークを使用することができる方式において結合されてもよく、または結合されなくてもよい。コントローラ２００は、ブートイメージまたは他のテンプレートを別個のストレージまたは他のリソースもしくは他のリソースに送信してもよく、その結果他のリソースは、ストレージまたは他のリソースをブートオフすることができる。コントローラは、そのような状況においてどこからブートするかを指示してもよい。コントローラは、リソースをパワーオンしてもよく、どこからブートするか、及びどのように自身を構成するかをリソースに指示してもよい。コントローラ２００は、どのようにブートするか、どのイメージを使用するか、及びイメージが別のリソース上にある場合にそのイメージがどこに位置するかをリソースに指示してもよい。ＢＩＯＳのリソースは、事前に構成されてもよい。コントローラは、加えてまたは代わりに、それらがストレージエリアネットワークをブートオフするように、アウトオブバンド管理を通じてＢＩＯＳを構成してもよい。コントローラ２００はまた、ＩＳＯからオペレーティングシステムをブートし、リソースがデータをローカルディスクにコピーすることを可能にするように構成されてもよい。次いで、ローカルディスクは続いて、ブートするために使用されてもよい。コントローラは、リソースがブートすることができるそのような方式において、他のコントローラを含む他のリソースを構成してもよい。いくつかのリソースは、コンピューティング、ストレージ、またはネットワーク化機能をもたらすアプリケーションを含んでもよい。加えて、コントローラが、ストレージリソースをブートアップし、次いで、ストレージリソースに後続のリソースまたはサービスのブートイメージを供給する役目を果たさせることが可能である。ストレージはまた、別の目的により使用される異なるネットワークを通じて管理されてもよい。
【０１２０】
任意選択で、リソースのうちの１つ以上は、オンネットワークインバンド管理接続２９０に結合されてもよい。接続２９０は、インバンド管理接続２７０に関して説明されたような１つ以上のタイプのインバンド管理を含んでもよい。接続２９０は、インバンド管理ネットワークを通じて、ネットワークを利用し、またはそれらを管理するよう、コントローラをアプリケーションネットワークに接続してもよい。
【０１２１】
図２Ｌは、リソース、またはリソース上でロードされたアプリケーションもしくはサービスをブートするよう、テンプレート２３０からリソースに直接または間接的に（別のリソースまたはデータベースを通じて）ロードすることができるイメージ２５０を例示する。イメージ２５０は、リソースタイプ及びハードウェアに対するブートファイル２４０を含んでもよい。ブートファイル２４０は、配置されることになるリソース、アプリケーション、またはサービスに対応するカーネル２４１を含んでもよい。ブートファイル２４０はまた、ブートプロセスを支援するために使用されるｉｎｉｔｒｄまたは同様のファイルシステムを含んでもよい。ブートシステム２４０は、異なるハードウェアタイプ及びリソースタイプに対して構成された複数のカーネルまたはｉｎｉｔｒｄを含んでもよい。加えて、イメージ２５０は、ファイルシステム２５１を含んでもよい。ファイルシステム２５１は、ベースイメージ２５２及び対応するファイルシステムと共に、サービスイメージ２５３及び対応するファイルシステム、並びに揮発性イメージ２５４及び対応するファイルシステムを含んでもよい。ファイルシステム及びロードされたデータは、リソースタイプ、並びに実行することになるアプリケーションまたはサービスに応じて変化してもよい。ベースイメージ２５２は、ベースオペレーティングシステムファイルシステムを含んでもよい。ベースオペレーティングシステムは、読み出し専用であってもよい。ベースイメージ２５２はまた、実行されているものとは独立したオペレーティングシステムの基本ツールを含んでもよい。ベースイメージ２５２は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム２５３は、リソース、アプリケーション、またはサービスについての構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム２５４は、パスワード、セッションキー、及びプライベートキーを含むが、これらに限定されない変数として構成されてもよく、または構成されなくてもよい、バイナリアプリケーション、特定のアドレス、及び他の情報などのその配備に特有の情報またはデータを包含してもよい。ファイルシステムは、いくつかの読み出し専用及びいくつかの読み出し−書き込みファイルシステムがアプリケーションに対して使用される複製データの量を削減することを可能にするよう、ｏｖｅｒｌａｙＦＳなどの技術を使用して、１つの単一のファイルシステムとしてマウントされてもよい。
【０１２２】
上述したように、コントローラ２００は、コンピューティング、ストレージ、及び／またはネットワーキングリソースなどのリソースをシステムに追加するために使用されてもよい。図１１Ａは、ベアメタルノードなどの物理リソースをシステム１００に追加する例示的な方法を例示する。リソース、すなわち、コンピューティング、ストレージ、またはネットワーキングリソースは、ネットワーク接続１１１０によってコントローラにプラグインされる。ネットワーク接続は、アウトオブバンド管理接続を含んでもよい。コントローラは、リソースがアウトオブバンド管理接続１１１１を通じてプラグインされることを認識する。コントローラは、リソースのタイプ、能力、及び／または属性１１１２を含むことができるが、これらに限定されない、リソースに関連する情報を認識する。コントローラは、リソース及び／またはリソースに関連する情報をそのシステム状態１１１３に追加する。テンプレートから導出されたイメージは、リソース、ストレージリソースなどの別のリソース、またはコントローラ１１１４を含むことができるが、これらに限定されない、システムの物理コンポーネントにロードされる。イメージは、構成ファイルを含むことができる１つ以上のファイルシステムを含む。そのような構成は、ＢＩＯＳ及びブートパラメータを含んでもよい。コントローラは、イメージ１１１５のファイルシステムを使用してブートするよう物理リソースに指示する。追加のリソース、または異なるタイプの複数のベアメタルもしくは物理リソースは、このようにして、テンプレートのイメージまたは少なくともその一部を使用して追加されてもよい。
【０１２３】
図１１Ｂは、例示的な実施形態のグローバルシステムルール及びテンプレートを使用して、リソースを自動で割り当てる例示的な方法を例示する。要求を満たすためにリソース割り当てを必要とする要求がシステムに対して行われる（１１２０）。コントローラは、そのシステム状態データベースに基づいて、そのリソースプールに気付く（１１２１）。コントローラは、必要なリソースを判定するためにテンプレートを使用する（１１２２）。コントローラは、リソースを割り振り、情報をシステム状態に記憶する（１１２３）。コントローラは、テンプレートを使用してリソースを配備する（１１２４）。
【０１２４】
図１２を参照して、本明細書で説明されるシステム１００を使用して、アプリケーションまたはサービスを自動で配備する例示的な方法が例示される。ユーザまたはアプリケーションは、サービスに対して要求を行う（１２１０）。要求は、ＡＰＩアプリケーションに変換される（１２２０）。ＡＰＩアプリケーションは、要求をコントローラに経路指定する（１２３０）。コントローラは、要求を解釈する（１２４０）。コントローラは、システムの状態及びそのリソースを考慮する（１２５０）。コントローラは、サービス配備のためにそのルール及びテンプレートを使用する（１２６０）。コントローラは、リソースに要求を送信し（１２７０）、テンプレートから導出されたイメージを配備し（１２８０）、ＩＴシステム状態を更新する。
【０１２５】
リソースを追加すること、リソースを割り当てること、及びアリケーションまたはサービスを配備することなどの動作の追加の及び更なる詳細な実施例が、以下で更に詳細に議論される。
【０１２６】
システムへのコンピューティングリソースの追加
図３Ａを参照して、システム１００へのコンピューティングリソース３１０の追加が例示される。コンピューティングリソース３１０が追加されるとき、それは、コントローラ２００に結合され、パワーオフされてもよい。コンピューティングリソース３１０がイメージにより事前ロードされる場合、リソースと通信し、リソースをブートし、システム状態に情報を追加するためにネットワーク接続のいずれかが使用されてもよい、代替的なステップが続いてもよい。コンピューティングリソース及びコントローラが同一のノード上にある場合、コンピューティングリソースを実行するサービスはオフである。
【０１２７】
図３Ａに示されるように、コンピューティングリソース３１０は、ネットワーク、すなわち、アウトオブバンド管理接続２６０、インバンド管理接続２７０、及び任意選択で、ＳＡＮ２８０によってコントローラに結合される。コンピューティングリソース３１０はまた、サービス、アプリケーションユーザ、及び／またはクライアントが相互に通信することができる１つ以上のアプリケーションネットワーク３９０に結合される。アウトオブバンド管理接続２６０は、コンピューティングリソース３１０がプラグインされるときにターンオンされる、独立したアウトオブバンド管理デバイス３１５またはコンピューティングリソース３１０の回路に結合されてもよい。デバイス３１５は、以下に限定されないが、デバイスをパワーオン／オフし、コンソールにアタッチし、コマンドをタイプし、温度及び他のコンピュータヘルス関連要素を監視し、ＢＩＯＳ設定を設定することを含む機能、及びオペレーティングシステムの範囲外の他の機能を可能にすることができる。コントローラ２００は、アウトオブバンド管理ネットワーク２６０を通じてコンピューティングリソース３１０を確認することができる。それはまた、インバンド管理またはアウトオブバンド管理を使用して、コンピューティングリソースのタイプを識別することができ、その構成を識別することができる。コントローラロジック２０５は、ハードウェアを追加するために、アウトオブバンド管理２６０またはインバンド管理２７０を調べるように構成される。コンピューティングリソース３１０が検出される場合、コントローラロジック２０５は次いで、リソースが自動で、またはユーザと対話することによって構成されるかどうかを判定するために、グローバルシステムルール２２０を使用してもよい。それが自動で追加される場合、セットアップは、コントローラ２００内のグローバルシステムルール２１０に従う。それがユーザによって追加される場合、コントローラ２００内のグローバルシステムルール２１０は、リソースの追加及びユーザがコンピューティングリソースにより何を行うことを望んでいるかを確認するようユーザに問い合わせてもよい。コントローラ２００は、新たなリソースが承認されることを確認するために、ＡＰＩアプリケーションをクエリしてもよく、またはそうでなければ、ユーザもしくはスタックを制御するいずれかのプログラムに要求してもよい。承認プロセスは、新たなリソースの正当性を確認するよう、自動で、及び暗号化を使用して安全に完了してもよい。コントローラロジック２０５は、それにコンピューティングリソース３１０がプラグインされるスイッチまたはネットワークを含むＩＴシステム状態２２０にコンピューティングリソース３１０を追加する。
【０１２８】
コンピューティングリソースが物理的である場合、コントローラ２００は、アウトオブバンド管理ネットワーク２６０を通じてコンピューティングリソースをパワーオンしてもよく、コンピューティングリソース３１０は、例えば、ＳＡＮ２８０によって、グローバルシステムルール２１０及びコントローラロジック２０５を使用して、テンプレート２３０からロードされたイメージ３５０をブートオフしてもよい。イメージは、他のネットワーク接続を通じて、または別のリソースによって間接的にロードされてもよい。ブートされると、インバンド管理接続２７０を通じて受信されたコンピューティングリソース３１０に関連する情報も、ＩＴシステム状態２２０に収集及び追加されてもよい。コンピューティングリソース３１０は次いで、ストレージリソースプールに追加されてもよく、それは、コントローラ２００によって管理され、ＩＴシステム状態２２０において追跡されるリソースになる。
【０１２９】
コンピューティングリソースが仮想的である場合、コントローラ２００は、インバンド管理ネットワーク２７０またはアウトオブバンド管理２６０のいずれかを通じてコンピューティングリソースをパワーオンしてもよい。コンピューティングリソース３１０は、例えば、ＳＡＮ２８０によって、グローバルシステムルール２１０及びコントローラロジック２０５を使用して、テンプレート２３０からロードされたイメージ３５０をブートオフしてもよい。イメージは、他のネットワーク接続を通じて、または別のリソースによって間接的にロードされてもよい。ブートされると、インバンド管理接続２７０を通じて受信されたコンピューティングリソース３１０に関連する情報も、ＩＴシステム状態２２０に収集及び追加されてもよい。コンピューティングリソース３１０は次いで、ストレージリソースプールに追加されてもよく、それは、コントローラ２００によって管理され、ＩＴシステム状態２２０において追跡されるリソースになる。
【０１３０】
コントローラ２００は、リソースをターンオフにして電力を節約する、またはリソースをターンオンにしてアプリケーション性能を改善する、またはＩＴシステムユーザが有し得る他の理由のためなど、ＩＴシステムユーザによって判定された理由によりグローバルシステムルールに従ってリソースを自動でターンオン及びオフし、ＩＴシステム状態を更新することが可能であってもよい。
【０１３１】
図３Ｂは、コンピューティングリソースをブートし、及び／またはアプリケーションをロードするために、テンプレート２３０からコンピューティングリソース３１０に直接または間接的に（別のリソースもしくはデータベースを通じて）ロードされるイメージ３５０を示す。イメージ３５０は、リソースタイプ及びハードウェアについてのブートファイル３４０を含んでもよい。ブートファイル３４０は、配備されることになるリソース、アプリケーション、またはサービスに対応するカーネル３４１を含んでもよい。ブートファイル３４０はまた、ｉｎｉｔｒｄ、またはブートプロセスを支援するために使用される同様のファイルシステムを含んでもよい。ブートシステム３４０は、異なるハードウェアタイプ及びリソースタイプに対して構成された複数のカーネルまたはｉｎｉｔｒｄを含んでもよい。加えて、イメージ３５０は、ファイルシステム３５１を含んでもよい。ファイルシステム３５１は、ベースイメージ３５２及び対応するファイルシステムと共に、サービスイメージ３５３及び対応するファイルシステム、並びに揮発性イメージ３５４及び対応するファイルシステムを含んでもよい。ファイルシステム及びロードされたデータは、リソースタイプ及び実行しているアプリケーションまたはサービスに応じて変化してもよい。ベースイメージ３５２は、ベースオペレーティングシステムのファイルシステムを含んでもよい。ベースオペレーティングシステムは、読み出し専用であってもよい。ベースイメージ３５２はまた、実行されているものとは独立したオペレーティングシステムの基本ツールを含んでもよい。ベースイメージ３５２は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム３５３は、リソース、アプリケーション、またはサービスについての構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム３５４は、パスワード、セッションキー、及びプライベートキーを含むが、これらに限定されない変数として構成されてもよく、または構成されなくてもよい、バイナリアプリケーション、特定のアドレス、及び他の情報などのその配備に特有の情報またはデータを包含してもよい。ファイルシステムは、いくつかの読み出し専用及びいくつかの読み出し−書き込みファイルシステムがアプリケーションに対して使用される複製データの量を削減することを可能にするよう、ｏｖｅｒｌａｙＦＳなどの技術を使用して、１つの単一のファイルシステムとしてマウントされてもよい。
【０１３２】
図３Ｃは、コンピューティングリソース３１０などのリソースをシステム１００に追加する例示的なプロセスフローを示す。この実施例では、対象のリソースは、コンピューティングリソース３１０として説明されるが、図３Ｃのプロセスフローについての対象のリソースは、ストレージリソース４１０及び／またはネットワーキングリソース５１０であってもよいことが理解されるべきである。図３Ｃの実施例では、追加されるリソース３１０は、コントローラ２００と同一のノード上にはない。ステップ３００．１において、リソース３１０は、パワーオフ状態にあるコントローラ２００に結合される。図３Ｃの実施例では、リソース３１０を接続するためにアウトオブバンド管理接続２６０が使用される。しかしながら、実施者によって要求される場合、他のネットワーク接続が使用されてもよいことが理解されるべきである。ステップ３００．２及び３００．３において、コントローラロジック２０５は、システムのアウトオブバンド管理接続を調べ、追加されるリソース３１０のタイプ及びその構成を認識及び識別するためにアウトオブバンド管理接続２６０を使用する。例えば、コントローラロジックは、タイプ及び構成情報を取得するための参照として、ＢＩＯＳまたはリソースについての他の情報（シリアル番号情報など）を確認することができる。
【０１３３】
ステップ３００．４において、コントローラは、特定のリソース３１０が自動で追加されるべきであるかどうかを判定するために、グローバルシステムルールを使用する。必要ない場合、コントローラは、その使用が承認されるまで待機する（ステップ３００．５）。例えば、ユーザは、特定のリソース３１０を使用することを望まないこと、またはステップ３００．４において使用されることになるまで、それが自動で保留されてもよいことをクエリに応答してもよい。ステップ３００．４が、リソース３１０が自動で追加されるべきであると判定する場合、コントローラは次いで、自動セットアップのためにそのルールを使用し（ステップ３００．６）、ステップ３００．７に進む。
【０１３４】
ステップ３００．７において、コントローラは、システム状態２２０にリソースを追加するために、リソースと関連付けられたテンプレート２３０を選択及び使用する。いくつかのケースでは、テンプレート２３０は、特定のリソースに特有であってもよい。しかしながら、いくつかのテンプレート２３０は、複数のリソースタイプを網羅してもよい。例えば、いくつかのテンプレート２３０は、ハードウェアに依存しないものであってもよい。ステップ３００．８において、コントローラは、グローバルシステムルール２１０に従って、そのアウトオブバンド管理接続２６０を通じてリソース３１０をパワーオンする。ステップ３００．９において、グローバルシステムルール２１０を使用して、コントローラは、選択されたテンプレート（複数可）からリソースについてのブートイメージを見つけてロードする。リソース３１０は次いで、対象のテンプレート２３０から導出されたイメージからブートされる（ステップ３００．１０）。リソース３１０に関する追加の情報は次いで、リソース３１０がブートされた後に、インバンド管理接続２７０を通じてリソース３１０から受信されてもよい（ステップ３００．１１）。そのような情報は、例えば、ファームウェアバージョン、ネットワークカード、リソースを接続することができるいずれかの他のデバイスを含んでもよい。ステップ３００．１２において、新たな情報がシステム状態２２０に追加されてもよい。リソース３１０は次いで、リソースプールに追加されると考えられてもよく、割り当てに対して準備される（ステップ３００．１３）。
【０１３５】
図３Ｃに関して、リソース及びコントローラが同じノード上にある場合、リソースを実行するサービスがそのノードの外にあってもよいことは理解されるべきである。そのような場合、コントローラは、たとえば、ｕｎｉｘソケット、ループバックアダプタ、またはリソースと通信する他のプロセス間通信技術などの、リソースとのプロセス間通信技術を使用してもよい。システムルールから、コントローラは、既知のテンプレートを使用してアプリケーションを実行するために、バーチャルホスト、あるいはハイパーバイザまたはコンテナホストをコントローラからインストールしてもよい。次いで、リソースアプリケーション情報を、システム状態２２０に追加することができ、リソースは、割り当ての準備ができていることになる。
【０１３６】
システムへのストレージリソースの追加
図４Ａは、システム１００へのストレージリソース４１０の追加を示す。ある例示的な実施形態において、図３Ｃの例示的なプロセスフローは、システム１００にストレージリソース４１０を追加するために従うことができ、ここで、追加されるストレージリソース４１０は、コントローラ２００と同じノード上にない。また、ストレージリソース４１０にイメージがプリロードされている場合、いずれかのネットワーク接続を、ストレージリソース４１０と通信し、ストレージリソース４１０をブートし、システム状態２２０に情報を追加するために使用することができる代替のステップに従ってもよいことに注目すべきである。
【０１３７】
ストレージリソース４１０が追加されるとき、それはコントローラ２００に連結されて、電源オフであってもよい。ストレージリソース４１０は、ネットワーク、つまり、アウトオブバンド管理ネットワーク２６０、インバンド管理接続２７０、ＳＡＮ２８０、及び任意選択的に、接続２９０を介してコントローラに連結される。ストレージリソース４１０はまた、サービス、アプリケーションユーザ、及び／またはクライアントが互いに通信することができる１つまたは複数のアプリケーションネットワーク３９０に連結されてもよく、または、連結されなくてもよい。アプリケーションまたはクライアントは、アプリケーションを介して、リソースのストレージに直接アクセスまたは間接アクセスしてもよく、それによって、アプリケーションまたはクライアントは、ＳＡＮを通してアクセスされない。アプリケーションネットワークは、それに組み込まれたストレージを有してもよく、または、アクセスされて、ＩＴシステム状態においてストレージリソースと識別されてもよい。アウトオブバンド管理接続２６０は、ストレージリソース４１０が接続されたときにオンになるストレージリソース４１０の独立したアウトオブバンド管理デバイス４１５または回路に連結されてもよい。デバイス４１５は、デバイスの電源オン／オフ、コンソールへのアタッチ及びコマンドの打ち込み、温度及び他のコンピュータ健全性関連要素の監視、ならびに、ＢＩＯＳ設定及びオペレーティングシステムからのスコープ外の他の特徴の設定を含むがこれらに限定されない特徴を可能にしてもよい。コントローラ２００は、アウトオブバンド管理ネットワーク２６０を通してストレージリソース４１０を参照してもよい。それは、ストレージリソースのタイプを識別してもよく、そして、インバンドまたはアウトオブバンド管理を使用してその構成を識別してもよい。コントローラロジック２０５は、追加されるハードウェアのために、アウトオブバンド管理２６０またはインバンド管理２７０を調べるように構成される。ストレージリソース４１０が検出された場合、コントローラロジック２０５は、リソース４１０が自動的にまたはユーザとの対話によって構成されるかどうか判定するために、グローバルシステムルール２２０を使用してもよい。リソース４１０が自動的に追加された場合、セットアップは、コントローラ２００内のグローバルシステムルール２１０に従う。リソース４１０がユーザによって追加された場合、コントローラ２００内のグローバルシステムルール２１０は、リソースの追加及びユーザがストレージリソースで行いたいことを確認するようにユーザに尋ねてもよい。コントローラ２００は、新しいリソースが許可されたことを確認するために、ＡＰＩアプリケーション（複数可）に問い合わせてもよく、あるいは、その他の場合には、ユーザまたはスタックを制御する任意のプログラムに要求してもよい。許可プロセスはまた、新しいリソースの妥当性を確認するために、暗号を使用して、自動的かつ確実に完了させてもよい。コントローラロジック２０５は、ストレージリソース４１０が接続されるスイッチまたはネットワークを含むＩＴシステム状態２２０にストレージリソース４１０を追加する。
【０１３８】
コントローラ２００は、アウトオブバンド管理ネットワーク２６０を通して、ストレージリソース４１０の電源をオンにしてもよく、ストレージリソース４１０は、グローバルシステムルール２１０及びコントローラロジック２０５を使用して、たとえば、ＳＡＮ２８０を介して、テンプレート２３０からロードされたイメージ４５０からブートする。イメージはまた、他のネットワーク接続を通して、または、別のリソースを介して間接的に、ロードされてもよい。ブートされると、ストレージリソース４１０に関するインバンド管理接続２７０を通して受信された情報は、ＩＴシステム状態２２０に収集及び追加されてもよい。ここで、ストレージリソース４１０は、ストレージリソースプールに追加され、それは、コントローラ２００によって管理されて、ＩＴシステム状態２２０においてトラッキングされるリソースになる。
【０１３９】
ストレージリソースは、ＩＴシステムが単独でまたは同時に、使用またはアクセスしてもよいストレージリソースプールまたは複数のストレージリソースプールを備えてもよい。ストレージリソースが追加されたとき、ストレージリソースは、ストレージプール、複数のストレージプール、ストレージプールの一部、及び／またはストレージプールの複数の部分をＩＴシステム状態に提供してもよい。コントローラ及び／またはストレージリソースは、プールのさまざまなストレージリソース、またはプール内のこのようなリソースのグループを管理してもよい。ストレージプールは、複数のストレージリソース上で実行される複数のストレージプールを含んでもよい。たとえば、プラッタディスクまたはアレイをキャッシュするフラッシュストレージディスクまたはアレイ、あるいは、専用ストレージノード上のプールに連結された専用計算ノード上のストレージプールは帯域幅及び待ち時間を同時に最適化する。
【０１４０】
図４Ｂは、ストレージリソースをブートするかつ／またはアプリケーションをロードするために、テンプレート２３０から（別のリソースまたはデータベースから）ストレージリソース４１０に直接的または間接的にロードされるイメージ４５０を示す。イメージ４５０は、リソースタイプ及びハードウェアのためのブートファイル４４０を備えてもよい。ブートファイル４４０は、配備されるリソース、アプリケーション、またはサービスに対応するカーネル４４１を備えてもよい。ブートファイル４４０は、ブートプロセスを支援するために使用されるｉｎｉｔｒｄまたは類似のファイルシステムを備えてもよい。ブートシステム４４０は、異なるハードウェアタイプ及びリソースタイプのために構成される複数のカーネルまたはｉｎｉｔｒｄを備えてもよい。さらに、イメージ４５０は、ファイルシステム４５１を備えてもよい。ファイルシステム４５１は、ベースイメージ４５２及び対応するファイルシステムと、サービスイメージ４５３及び対応するファイルシステムと、揮発性イメージ４５４及び対応するファイルシステムとを備えてもよい。ロードされるファイルシステム及びデータは、リソースタイプ及びアプリケーション、または実行するサービスに応じて変えてもよい。ベースイメージ４５２は、ベースオペレーティングシステムファイルシステムを備えてもよい。ベースオペレーティングシステムは、読み取り専用であってもよい。ベースイメージ４５２はまた、実行されているものから独立しているオペレーティングシステムの基本ツールを備えてもよい。ベースイメージ４５２は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム４５３は、リソース、アプリケーション、またはサービスのための構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム４５４は、バイナリアプリケーション、特有アドレス、及び他の情報などの、その配備に固有の情報またはデータを含んでもよく、それは、パスワード、セッションキー、及びプライベートキーを含むがこれらに限定されない変数として構成されてもよく、または、構成されなくてもよい。ファイルシステムは、ｏｖｅｒｌａｙＦＳなどの技術を使用する１つの単一のファイルシステムとしてマウントされて、いくつかの読み取り専用及びいくつかの読み書きファイルシステムが、アプリケーションのために使用される重複データの量を減少させることを可能にしてもよい。
【０１４１】
図５Ａは、ＪＢＯＤまたは他のタイプの直接接続ストレージによるノードの形態をとってもよい、別のストレージリソース、すなわち、直接接続ストレージ５１０が、システムに対する追加のストレージリソースとしてストレージリソース４１０に連結された例を示す。ＪＢＯＤは通常、ストレージリソースを提供する、ノードに接続された外部ディスクアレイであり、図５Ａでは、ＪＢＯＤが直接接続ストレージ５１０の例示的な形態として使用されているが、他のタイプの直接接続ストレージが５１０として採用される可能性があることは理解されるべきである。
【０１４２】
コントローラ２００は、たとえば、図５Ａに関して記載されるように、ストレージリソース４１０及びＪＢＯＤ５１０をそのシステムに追加してもよい。ＪＢＯＤ５１０は、アウトオブバンド管理接続２６０を介してコントローラ２００に連結される。ストレージリソース４１０は、ネットワーク、つまり、アウトオブバンド管理接続２６０、インバンド管理接続２７０、ＳＡＮ２８０、及び任意選択的に、接続２９０に連結される。ストレージノード４１０は、ＳＡＳまたは他のディスクドライブファブリック５２０を通してＪＢＯＤ５１０のストレージと通信する。ＪＢＯＤ５１０は、アウトオブバンド管理接続２６０を通してコントローラと通信するアウトオブバンド管理デバイス５１５も備えてもよい。アウトオブバンド管理２６０を通して、コントローラ２００は、ＪＢＯＤ５１０及びストレージリソース４１０を検出してもよい。コントローラ２００は、たとえば、さまざまなアウトオブバンド管理回路に関して本明細書に記載されるような、オペレーティングシステムによって制御されない他のパラメータも検出してもよい。コントローラ２００グローバルシステムルール２１０は、まだ追加されていないＪＢＯＤ及びストレージノードのブートまたは起動のための構成起動ルールを提供する。ストレージリソースをオンにする順番は、グローバルルール２２０を使用して、コントローラロジック２０５によって制御されてもよい。グローバルシステムルール２２０の１つのセットに従って、コントローラは最初に、ＪＢＯＤ５１０の電源をオンにしてもよく、次いで、コントローラ２００は、図４に関して記載されたものと類似の方法で、ロードされたイメージ４５０を使用して、ストレージリソースの電源をオンにしてもよい。グローバルシステムルールの別のセットでは、コントローラ２００は、最初にストレージリソース４１０、次にＪＢＯＤ５１０をオンにしてもよい。他のグローバルシステムルールでは、さまざまなデバイス間の電源オンのタイミングまたはディレイが指定されてもよい。コントローラロジック２０５、グローバルシステムルール２１０、及び／またはテンプレート２３０によって、さまざまなリソースの準備状態または作動状態の検出が判定されてもよく、かつ／または、コントローラ２００によるデバイス割り当て管理において使用されてもよい。ＩＴシステム状態２２０は、ストレージリソース４１０との通信によって更新されてもよい。ストレージノード４１０は、ディスクファブリック５２０を通してＪＢＯＤにアクセスすることによって、ＪＢＯＤ５１０のストレージパラメータ及び構成を認識している。ストレージリソース４１０は、次いで、利用可能なストレージの量及び他の属性に関する情報でＩＴシステム状態２２０を更新するコントローラ２００に情報を提供する。ストレージリソース４１０がブートされて、ストレージリソース４１０がシステム１００のストレージリソース４００のプールの一部として認識されると、コントローラはＩＴシステム状態２２０を更新する。ストレージノードは、コントローラ２００によって設定された構成を使用して、ＪＢＯＤストレージリソースを制御するためのロジックを取り扱う。たとえば、コントローラは、ＲＡＩＤ１０または他の構成からプールを作成するために、ストレージノードにＪＢＯＤを構成するように指示してもよい。
【０１４３】
図５Ｂは、ストレージリソース４１０及びストレージリソース４１０のための直接接続ストレージ５１０をシステム１００に追加するための例示的なプロセスフローを示す。ステップ５００．１では、直接接続ストレージ５１０が、アウトオブバンド管理接続２６０を介して、電源オフ状態のコントローラ２００に連結される。ステップ５００．２では、ストレージリソース４１０が、アウトオブバンド管理接続２６０及びインバンド管理接続２７０を介して、電源オフ状態のコントローラ２００に連結され、同時に、ストレージリソース４１０が、たとえば、ディスクドライブファブリックなどのＳＡＳ５２０を介して、直接接続ストレージ５１０に連結される。
【０１４４】
次いで、コントローラロジック２０５が、ストレージリソース４１０及び直接接続ストレージ５１０を検出するために、アウトオブバンド管理接続２６０を調べてもよい（ステップ５００．３）。任意のネットワーク接続を使用することができるが、この例では、アウトオブバンド管理が、追加されているリソース（この場合、ストレージリソース４１０及び直接接続ストレージ５１０）ならびにそれらの構成のタイプを認識及び識別するコントローラロジックのために使用されてもよい（ステップ５００．４）。
【０１４５】
ステップ５００．５では、コントローラ２００が、リソース４１０及び５１０をシステム状態２２０に追加するために、各タイプのストレージデバイスに対する特定のタイプのストレージのためのテンプレート２３０を選択して使用する。ステップ５００．６では、コントローラ、電源をオンにするブート順を指定することができる次のグローバルシステムルール２１０が、そのような順番で、アウトオブバンド管理接続２６０を通して、直接ストレージ及びストレージノードをオンにする（５００．６）。グローバルシステムルール２１０を使用して、コントローラが、そのストレージリソース４１０のために選択されたテンプレート２３０からストレージリソース４１０のためのブートイメージを見いだしてロードし、次いで、ストレージリソースがイメージからブートされる（ステップ５００．７）。ストレージリソース４１０が、ディスクファブリック５２０を通して直接接続ストレージ５１０にアクセスすることによって、直接接続ストレージ５１０のストレージパラメータ及び構成を認識している。次いで、ストレージリソース４１０及び／または直接接続ストレージ５１０に関する追加情報が、ストレージリソースへのインバンド管理接続２７０を通して、コントローラに提供されてもよい（ステップ５００．８）。ステップ５００．９では、コントローラが、ステップ５００．８で得られた情報で、システム状態２２０を更新する。ステップ５００．１０では、コントローラが、直接接続ストレージ５１０を取り扱うストレージリソース４１０のための構成、及び直接接続ストレージを構成する方法を設定する。次いで、ステップ５００．１１では、直接接続ストレージ５１０とともにストレージリソース４１０を備える新しいリソースは、リソースプールに追加されてもよく、システム内に割り当てる準備ができている。
【０１４６】
例示的な実施形態の別の態様によると、コントローラは、コンピューティングまたはサービスに関与しなくてもよいスタックにおいて他のデバイスを認識するために、アウトオブバンド管理を使用してもよい。たとえば、そのようなデバイスは、冷却塔／空調装置、照明、温度、音、警報、電力システム、またはシステムと関連する任意の他のデバイスを含んでもよいが、それらに限定されない。
【０１４７】
システムへのネットワーキングリソースの追加
図６Ａは、システム１００へのネットワーキングリソース６１０の追加を示す。ある例示的な実施形態において、図３Ｃの例示的なプロセスフローは、システム１００にネットワーキングリソース６１０を追加するために従うことができ、ここで、追加されるネットワーキングリソース６１０は、コントローラ２００と同じノード上にない。また、ネットワーキングリソース６１０にイメージがプリロードされている場合、いずれかのネットワーク接続を、ネットワークリソース６１０と通信し、ネットワークリソース６１０をブートし、システム状態２２０に情報を追加するために使用することができる代替のステップに従ってもよいことに注目すべきである。
【０１４８】
ネットワーキングリソース６１０が追加されるとき、それはコントローラ２００に連結されて、電源オフであってもよい。ネットワーキングリソース６１０は、接続、つまり、アウトオブバンド管理接続２６０及び／またはインバンド管理接続２７０を介してコントローラ２００に連結されてもよい。ネットワーキングリソース６１０は任意選択的に、ＳＡＮ２８０及び／または接続２９０に接続される。ネットワーキングリソース６１０はまた、サービス、アプリケーションユーザ、及び／またはクライアントが互いに通信することができる１つまたは複数のアプリケーションネットワーク３９０に連結されてもよく、または、連結されなくてもよい。アウトオブバンド管理接続２６０は、ネットワーキングリソース６１０が接続されたときにオンになるネットワーキングリソース６１０の独立したアウトオブバンド管理デバイス６１５または回路に連結されてもよい。デバイス６１５は、デバイスの電源オン／オフ、コンソールへのアタッチ及びコマンドの打ち込み、温度及び他のコンピュータ健全性関連要素の監視、ならびに、ＢＩＯＳ設定及びオペレーティングシステムからのスコープ外の他の特徴の設定を含むがこれらに限定されない特徴を可能にしてもよい。コントローラ２００は、アウトオブバンド管理接続２６０を通してネットワーキングリソース６１０を参照してもよい。それは、ネットワーキングリソース及び／またはネットワークファブリックのタイプを識別してもよく、そして、インバンドまたはアウトオブバンド管理を使用して構成を識別してもよい。コントローラロジック２０５は、追加されるハードウェアのために、アウトオブバンド管理２６０またはインバンド管理２７０を調べるように構成される。ネットワーキングリソース６１０が検出された場合、コントローラロジック２０５は、ネットワーキングリソース６１０が自動的にまたはユーザとの対話によって構成されるかどうか判定するために、グローバルシステムルール２２０を使用してもよい。リソース６１０が自動的に追加された場合、セットアップは、コントローラ２００内のグローバルシステムルール２１０に従う。ユーザによって追加された場合、コントローラ２００内のグローバルシステムルール２１０は、リソースの追加及びユーザがリソースで行いたいことを確認するようにユーザに尋ねてもよい。コントローラ２００は、新しいリソースが許可されたことを確認するために、ＡＰＩアプリケーション（複数可）に問い合わせてもよく、あるいは、その他の場合には、ユーザまたはスタックを制御する任意のプログラムに要求してもよい。許可プロセスはまた、新しいリソースの妥当性を確認するために、暗号を使用して、自動的かつ確実に完了させてもよい。次いで、コントローラロジック２０５は、ネットワーキングリソース６１０をＩＴシステム状態２２０に追加してもよい。自身をコントローラに識別させることができないスイッチのために、ユーザは、システム状態にそれらを手動で追加してもよい。
【０１４９】
ネットワーキングリソースが物理的なものである場合、コントローラ２００は、アウトオブバンド管理接続２６０を通して、ネットワーキングリソース６１０の電源をオンにしてもよく、ネットワーキングリソース６１０は、グローバルシステムルール２１０及びコントローラロジック２０５を使用して、たとえば、ＳＡＮ２８０を介して、テンプレート２３０からロードされたイメージ６０５からブートしてもよい。イメージはまた、他のネットワーク接続を通して、または、他のリソースを介して間接的に、ロードされてもよい。ブートされると、ネットワーキングリソース６１０に関するインバンド管理接続２７０を通して受信された情報は、ＩＴシステム状態２２０に収集及び追加されてもよい。次いで、ネットワーキングリソース６１０は、ストレージリソースプールに追加されてもよく、それは、コントローラ２００によって管理されて、ＩＴシステム状態２２０においてトラッキングされるリソースになる。任意選択的に、いくつかのネットワーキングリソーススイッチは、アウトオブバンド管理２６０に接続されたコンソールポートを通して制御されてもよく、電源オン時に構成されてもよく、または、ブートローダを通して、たとえば、ＯＮＩＥを通してインストールされたスイッチオペレーティングシステムを有してもよい。
【０１５０】
ネットワーキングリソースが仮想的なものである場合、コントローラ２００は、インバンド管理ネットワーク２７０またはアウトオブバンド管理２６０のいずれかを通して、ネットワーキングリソースの電源をオンにしてもよい。ネットワーキングリソース６１０は、グローバルシステムルール２１０及びコントローラロジック２０５を使用して、ＳＡＮ２８０を介して、テンプレート２３０からロードされたイメージ６５０からブートしてもよい。ブートされると、ネットワーキングリソース６１０に関するインバンド管理接続２７０を通して受信された情報は、ＩＴシステム状態２２０に収集及び追加されてもよい。次いで、ネットワーキングリソース６１０は、ストレージリソースプールに追加されてもよく、それは、コントローラ２００によって管理されて、ＩＴシステム状態２２０においてトラッキングされるリソースになる。
【０１５１】
コントローラ２００は、物理的であろうと仮想的であろうと、異なる物理または仮想リソース、すなわち、接続、ストレージ、または本明細書で定義されるような計算に接続するために、ポートの割り当て、再割り当て、または移動をネットワーキングリソースに指示してもよい。これは、ＳＤＮ、インフィニバンドパーティショニング、ＶＬＡＮ、ｖＸＬＡＮを含むがこれらに限定されない技術を使用して行われてもよい。コントローラ２００は、仮想スイッチまたは仮想スイッチをホストするリソースとのネットワークまたはインターコネクト通信に仮想インタフェースを移動させるまたは割り当てるように、仮想スイッチに指示してもよい。いくつかの物理または仮想スイッチは、コントローラに連結されたＡＰＩによって制御されてもよい。
【０１５２】
そのような変更が可能であるとき、コントローラ２００はまた、計算、ストレージ、またはネットワーキングリソースにファブリックタイプを変更するように指示してもよい。ポートは、異なるファブリックにスイッチするように、たとえば、ハイブリッドインフィニバンド／イーサネットインタフェースのファブリックを切り換えるように構成されてもよい。
【０１５３】
コントローラ２００は、複数のアプリケーションネットワークをスイッチするスイッチまたは他のネットワーキングリソースを備えてもよいネットワーキングリソースに命令を与えてもよい。スイッチまたはネットワークデバイスは、異なるファブリックを備えてもよく、または、たとえば、それらは、好ましくは、ＳＤＮ機能及び複数のファブリックによって、インフィニバンドスイッチ、ＲＯＣＥスイッチ、及び／または他のスイッチに接続されてもよい。
【０１５４】
図６Ｂは、ネットワーキングリソースをブートするかつ／またはアプリケーションをロードするために、テンプレート２３０から（たとえば、別のリソースまたはデータベースを介して）ネットワーキングリソース６１０に直接的または間接的にロードされるイメージ６５０を示す。イメージ６５０は、リソースタイプ及びハードウェアのためのブートファイル６４０を備えてもよい。ブートファイル６４０は、配備されるリソース、アプリケーション、またはサービスに対応するカーネル６４１を備えてもよい。ブートファイル６４０は、ブートプロセスを支援するために使用されるｉｎｉｔｒｄまたは類似のファイルシステムを備えてもよい。ブートシステム６４０は、異なるハードウェアタイプ及びリソースタイプのために構成される複数のカーネルまたはｉｎｉｔｒｄを備えてもよい。さらに、イメージ６５０は、ファイルシステム６５１を備えてもよい。ファイルシステム６５１は、ベースイメージ６５２及び対応するファイルシステムと、サービスイメージ６５３及び対応するファイルシステムと、揮発性イメージ６５４及び対応するファイルシステムとを備えてもよい。ロードされるファイルシステム及びデータは、リソースタイプ及びアプリケーション、または実行するサービスに応じて変えてもよい。ベースイメージ６５２は、ベースオペレーティングシステムファイルシステムを備えてもよい。ベースオペレーティングシステムは、読み取り専用であってもよい。ベースイメージ６５２はまた、実行されているものから独立しているオペレーティングシステムの基本ツールを備えてもよい。ベースイメージ６５２は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム６５３は、リソース、アプリケーション、またはサービスのための構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム６５４は、バイナリアプリケーション、特有アドレス、及び他の情報などの、その配備に固有の情報またはデータを含んでもよく、それは、パスワード、セッションキー、及びプライベートキーを含むがこれらに限定されない変数として構成されてもよくて、または、構成されなくてもよい。ファイルシステムは、ｏｖｅｒｌａｙＦＳなどの技術を使用する１つの単一のファイルシステムとしてマウントされて、いくつかの読み取り専用及びいくつかの読み書きファイルシステムが、アプリケーションのために使用される重複データの量を減少させることを可能にしてもよい。
【０１５５】
リソース上へのアプリケーションまたはサービスの配備
図７Ａは、コントローラ２００と、第１の計算ノード３１１、第２の計算ノード３１２、及び第３の計算ノード３１３を備える物理及び仮想コンピューティングリソースと、ストレージリソース４１０と、ネットワークリソース６１０とを備えるシステム１００を示す。リソースは、図１〜６Ｂに関して本明細書に記載されるような方法で、セットアップされて、ＩＴシステム状態２２０に追加されるように示されている。
【０１５６】
複数の計算ノードがこの図に示されているが、ある例示的な実施形態による、単一の計算ノードが使用されてもよい。計算ノードは、物理または仮想コンピューティングリソースをホストしてもよく、物理または仮想計算ノード上でアプリケーションを実行してもよい。同様に、単一のネットワークプロバイダノード及びストレージノードが示されているが、これらのタイプの複数のリソースノードは、例示的な実施形態のシステムで使用されてもよく、または、使用されなくてもよいことが意図されている。
【０１５７】
サービスまたはアプリケーションは、ある例示的な実施形態によるシステムのいずれかに配備されてもよい。計算ノード上にサービスを配備する例は、図７Ａに関して記載されてもよいが、システム１００の異なる配置で同様に使用されてもよい。たとえば、図７Ａのコントローラ２００は、グローバルシステムルール２１０に従って、コンピューティングリソース３１０を計算ノード３１１、３１２、３１３の形態で自動的に構成してもよい。次いで、それらは、ＩＴシステム状態２２０に追加されてもよい。したがって、コントローラ２００は、（電源オフであってよい、または、電源オフでなくてもよい）コンピューティングリソース３１１、３１２、３１３、及び、場合によっては、コンピューティングリソースまたはノード上で実行する任意の物理または仮想アプリケーションを認識してもよい。コントローラ２００は、グローバルシステムルール２１０及びテンプレート２３０に従って、ストレージリソース（複数可）４１０及びネットワーキングリソース（複数可）６１０を自動的に構成してもよく、それらをＩＴシステム状態２２０に追加してもよい。コントローラ２００は、電力オフ状態で開始してもよい、または、開始しなくてもよいストレージリソース４１０及びネットワーキングリソース６１０を認識してもよい。
【０１５８】
図７Ｂは、ＩＴシステム１００にリソースを追加するための例示的プロセスを示す。ステップ７００．１では、新しい物理リソースがシステムに連結される。ステップ７００．２では、コントローラが新しいリソースに気付く。リソースは、リモートストレージに接続されてもよい（ステップ７００．４）。ステップ７００．３では、コントローラが、新しいリソースをブートする方法を構成する。リソースに行われるすべての接続は、システム状態２２０に記録することができる（ステップ７００．５）。上で論じられた図３Ｃは、図７Ｂに示されるものなどのプロセスフローの例示的な実施形態に関するさらなる詳細を提供する。
【０１５９】
図７Ｃ及び７Ｄは、複数のコンピューティングリソース、複数のサーバ、複数の仮想マシン、及び／または複数のサイトへのアプリケーションの配備のための例示的なプロセスフローを示す。本例のためのプロセスは、ＩＴシステム１００が、冗長で互いに関係するアプリケーション及び／またはサービスを連結するコンポーネントを必要とするという事実において、標準的なテンプレート配備と異なる。コントローラロジックは、ステップ７００．１１でメタテンプレートを処理してもよく、ここで、メタテンプレートは、複数のテンプレート２３０、ファイルシステムｂｌｏｂ２３２、及び、マルチホームサービスを構成するために必要とされる（他のテンプレート２３０の形態であってもよい）他のコンポーネントを含んでもよい。
【０１６０】
ステップ７００．１２では、コントローラロジック２０５が、利用可能なリソースのシステム状態２２０を確認する。しかしながら、十分なリソースがない場合、コントローラロジックは、配備されてもよい冗長なサービスの数を減らしてもよい（冗長なサービスの数が識別される７００．１６を参照）。ステップ７００．１３では、コントローラロジック２０５が、サービスを接続するために必要とされるネットワーキングリソース及び相互接続を構成する。サービスまたはアプリケーションが複数のサイトにわたって配備される場合、メタテンプレートは、サイト全体でのデータ同期及び相互運用性を可能にするテンプレートから任意選択的に構成されるサービスを含んでもよい（または、コントローラロジック２０５が、それらを構成してもよい）（７００．１５参照）。
【０１６１】
ステップ７００．１６では、コントローラロジック２０５が、システムルール、メタテンプレートデータ、及びリソース利用可能性から、冗長なサービスの数を決定してもよい（冗長なサービスが複数のホスト上にある場合）７００．１７では、他の冗長なサービスと連結し、マスタと連結している。複数の冗長なホストがある場合、テンプレート内のコントローラロジック２０５またはロジック（バイナリ２３４、デーモン２３２、またはオペレーティングシステムにおける設定を指示する構成ファイルを含んでもよいファイルシステムｂｌｏｂ）が、ネットワークアドレス及びホスト名の競合を防ぐことができる。任意選択的に、コントローラロジックは、ネットワークアドレス（７００．１８参照）を提供し、ＤＮＳ（７００．１９）及びシステム状態２２０（７００．１８）に各冗長なサービスを登録する。システム状態２２０は、冗長なサービスをトラッキングし、コントローラロジック２０５は、ホスト名、ｄｎｓ名などの競合するパラメータを有する冗長なサービスに気付いた場合、重複した登録を許可せず、ネットワークアドレスはすでにシステム状態２２０にある。
【０１６２】
図７Ｄによって示される構成ルーチンは、メタテンプレートのテンプレート（複数可）を処理する。構成ルーチンは、すべての冗長なサービスを処理し、マルチホストまたはクラスタ化サービスを複数のホストに配備し、ホストを連結するサービスを配備する。システムルールからＩＴシステムを配備することができる任意のプロセスが、構成ルーチンを実行することができる。マルチホストサービスの場合、例示的なルーチンは、７００．３２のようにサービステンプレートを処理し、７００．３３のようにストレージリソースをプロビジョニングし、７００．３５のようにホストの電源をオンにし、７００．３６のようにホスト／コンピューティングリソースをストレージリソースと連結（かつ、システム状態２２０に登録）してもよい（次いで、冗長なサービスの数だけ繰り返す（７００．３８））。毎回、システム状態２２０に登録し（７００．２０参照）、コントローラロジックを使用して、個別のサービスをトラッキングして、競合を防ぐ情報を記録する（７００．３１参照）。
【０１６３】
サービステンプレートのいくつかは、マルチホストサービスを連結させることができるサービス及びツールを含んでもよい。これらのサービスのいくつかは、依存関係として扱われてもよく（７００．３９）、次いで、７００．４０の連結ルーチンが、サービスの連結、及びシステム状態２２０への連結の登録に使用されてもよい。さらに、サービステンプレートの１つは、マスタテンプレートであってもよく、その場合、７００．３９の従属サービステンプレートは、スレーブまたは二次サービスであり、７００．４０の連結ルーチンは、それらを接続する。ルーチンは、メタテンプレートで定義することができる。たとえば、冗長なｄｎｓ構成のために、７００．４０の連結ルーチンは、マスタｄｎｓへのスレーブｄｎｓの接続、及び、ｄｎｓｓｅｃとのゾーン転送の構成を含んでもよい。いくつかのサービスは、性能を改善するために、物理ストレージ（７００．３４参照）を使用してもよく、それは、図５Ｂで開示された予備ＯＳがロードされてもよい。連結サービスのためのツールは、テンプレート自体に含まれていてもよく、サービス間の構成は、マルチノードアプリケーション／サービスにおいてコントローラ及び／または他のホストでアクセスできるＡＰＩによって行われてもよい。
【０１６４】
コントローラ２００により、ユーザまたはコントローラは、アプリケーションのために使用する適切な計算バックエンドを決定することができてもよい。コントローラ２００により、ユーザまたはコントローラは、リソースの使用状況を判定することによって、適切な物理または仮想コンピューティングリソースにアプリケーションを最適に配置することができてもよい。ハイパーバイザまたは他の計算バックエンドが計算ノードに配備されるとき、それらは、インバンド管理接続２７０を通して、コントローラリソース使用統計を折り返し報告してもよい。コントローラが、その独自のロジック及びグローバルシステムルール、または、ユーザ入力のいずれかから、仮想コンピューティングリソース上のアプリケーションを作成することに決めたとき、それは、最も適したホスト上のハイパーバイザを自動的に選択して、そのホスト上の仮想コンピューティングリソースの電源をオンにしてもよい。
【０１６５】
たとえば、コントローラ２００は、テンプレート（複数可）２３０を使用して、１つまたは複数のコンピューティングリソースにアプリケーションまたはサービスを配備する。そのようなアプリケーションまたはサービスは、たとえば、アプリケーションまたはサービスを実行する仮想マシンであってもよい。ある例において、図７Ａは、複数の計算ノード上への複数の仮想マシン（ＶＭ）の配備を示し、示されるコントローラ２００は、複数のコンピューティングリソース３１０が計算ノード３１１、３１２、３１３の形態でそのコンピューティングリソースプールにあることを認識することができる。計算ノードは、たとえば、ハイパーバイザが配備されてもよく、または、代わりに、仮想マシンの使用が速度のために好ましくないことがあるベアメタル上にあってもよい。この例において、コンピューティングリソース３１０は、ハイパーバイザアプリケーションがロードされて、計算ノード３１１上に構成及び配備されたＶＭ（１）３２１及びＶＭ（２）３２２を有する。たとえば、計算ノード３１１が、追加のＶＭのためのリソースを有しない場合、または、特定のサービスのために、他のリソースが好ましい場合、コントローラ２００は、スタック状態２２０に基づいて、利用可能なリソースが計算ノード３１１上にないこと、または、異なるリソースで新しいＶＭを準備することが好ましいことを認識してもよい。ハイパーバイザがコンピューティングリソース３１２上にロードされ、たとえば、他の目的のために使用されるベアメタル計算ノードであることがあるリソース３１３上にロードされないことも認識されてもよい。よって、インストールされているサービスまたはアプリケーションテンプレートの要求、及びシステム状態２２０のステータスに従って、本例のコントローラは、次に必要とされるリソースＶＭ（３）３２３の配備のための計算ノード３１３を選択してもよい。
【０１６６】
システムのコンピューティングリソースは、ストレージノードのためにストレージリソース上でストレージを共有するように構成されてもよい。
【０１６７】
ユーザは、ユーザインタフェース１１０またはアプリケーションを通して、サービスがシステム１００のためにセットアップされることを要求してもよい。サービスは、電子メールサービス、ウェブサービス、ユーザ管理サービス、ネットワークプロバイダ、ＬＤＡＰ、Ｄｅｖツール、ＶＯＩＰ、認証ツール、会計を含んでもよいが、これらに限定されるものではない。
【０１６８】
ＡＰＩアプリケーション１２０は、ユーザまたはアプリケーションの要求を変換し、メッセージをコントローラ２００に送信する。コントローラ２００のサービステンプレートまたはイメージ２３０は、どのリソースがサービスのために必要とされるかを識別するために使用される。次いで、使用されるリソースは、ＩＴシステム状態２２０による利用可能性基づいて識別される。コントローラ２００は、必要とされる計算サービスのための計算ノード３１１、３１２、または３１３のうちの１つまたは複数に対する要求、必要とされるストレージリソースのためのストレージリソース４１０に対する要求、及び、必要とされるネットワーキングリソースのためのネットワークリソース６１０に対する要求を行う。次いで、ＩＴシステム状態２２０は更新され、割り当てられるリソースを識別する。次いで、サービスは、サービスまたはアプリケーションのためのテンプレート２３０に従って、グローバルシステムルール２１０を使用して割り当てられたリソースにインストールされる。
【０１６９】
例示的な実施形態によると、複数の計算ノードは、同じサービスまたは異なるサービスのためかどうかにかかわらず使用されてもよく、一方、たとえば、ストレージサービス及び／またはネットワークプロバイダプールは、計算ノード間で共有されてもよい。
【０１７０】
図８Ａを参照すると、システム１００が示されており、コントローラ２００、ならびに、コンピューティングリソース３００、ストレージリソース４００、及びネットワーキングリソース６００が、単一のノードなどの、同じまたは共有物理ハードウェア上にある。図１〜１０に示されて記載されるさまざまな特徴は、単一のノードに組み込まれてもよい。ノードの電源がオンにされたとき、コントローライメージはノード上にロードされる。コンピューティングリソース３００、ストレージリソース４００、及びネットワーキングリソース６００は、テンプレート２３０によって、グローバルシステムルール２１０を使用して構成される。コントローラ２００は、コンピューティングリソースとして計算バックエンド３１８、３１９をロードするように構成されてもよく、それは、ノードまたは異なるノード（複数可）上に追加されてもよく、または、追加されなくてもよい。このようなバックエンド３１８、３１９は、仮想コンピューティングリソース、ネットワーキングリソース、及びストレージリソースを作成するために、仮想化、コンテナ、及びマルチテナントプロセスを含んでもよいが、これらに限定されるものではない。
【０１７１】
アプリケーションまたはサービス７２５、たとえば、ウェブ、電子メール、コアネットワークサービス（ＤＨＣＰ、ＤＮＳなど）、共同ツールは、コントローラ２００と共有されたノード／デバイス上の仮想リソース上にインストールされてもよい。これらのアプリケーションまたはサービスは、コントローラ２００から独立している物理リソースまたは仮想リソースの方へ移動されてもよい。アプリケーションは、単一のノード上の仮想マシン上で実行されてもよい。
【０１７２】
図８Ｂは、単一のノードから、（たとえば、図８Ａに示されるようなノード３１８及び／または３１９による）複数のノードシステムにシステムを拡張するための例示的なプロセスフローを示す。そこで、図８Ａ及び８Ｂを参照すると、単一のサーバ上で実行しているコントローラ２００を有するＩＴシステムを考えることができ、ＩＴシステムをマルチノードＩＴシステムとし拡張することが望ましい。よって、拡張前、ＩＴシステムは単一ノード状態にある。図８Ａで示されるように、コントローラ２００は、ストレージリソース、コンピューティングリソース、ハイパーバイザ、及び／またはコンテナホストを含んでもよいが、それらに限定されないさまざまなＩＴシステム管理アプリケーション及び／またはリソースを動かすために、マルチテナント単一ノードシステム上で実行される。
【０１７３】
ステップ８００．２では、新しい物理リソースが、新しい物理リソースをアウトオブバンド管理接続２６０、インバンド管理接続２７０、ＳＡＮ２８０、及び／またはネットワーク２９０通して接続することによって、単一のノードシステムに連結される。本例については、この新しい物理リソースも、ハードウェアまたはホストと呼ぶことができる。コントローラ２００は、マネージメントネットワーク上で新しいリソースを検出してもよく、次いで、デバイスに問い合わせてもよい。あるいは、新しいデバイスは、自身をコントローラ２００に知らせるメッセージをブロードキャストしてもよい。たとえば、新しいデバイスは、ＭＡＣアドレス、アウトオブバンド管理、ならびに／または、予備ＯＳのブート及びインバンド管理の使用及びそれによるハードウェアタイプの識別によって識別することができる。いずれにしても、ステップ８００．３では、新しいデバイスは、そのノードタイプ及びその現在利用可能なハードウェアリソース及びソフトウェアリソースに関する情報をコントローラに提供する。次いで、コントローラ２００は、新しいデバイス及びその機能を認識する。
【０１７４】
ステップ８００．４では、コントローラ２００を実行するシステムに割り振られるタスクが、新しいホストに割り当てられてもよい。たとえば、ホストに、オペレーティングシステム（ストレージホストオペレーティングシステムまたはハイパーバイザなど）がプリロードされる場合、コントローラ２００は、新しいハードウェアリソース及び／または機能を割り当てる。次いで、コントローラは、イメージを提供して、新しいハードウェアをプロビジョニングしてもよい、または、新しいハードウェアはコントローラからイメージを要求してもよく、上でかつ下で開示される方法を使用して自身を構成してもよい。新しいホストがストレージリソースまたは仮想コンピューティングリソースをホストすることができる場合、新しいリソースは、コントローラ２００に利用可能とすることができる。次いで、コントローラ２００は、既存のアプリケーションを新しいリソースに移動及び／もしくは割り当てしてもよく、または、新たに作成されたアプリケーションまたはその後作成されるアプリケーションのために新しいリソースを使用してもよい。
【０１７５】
ステップ８００．５では、ＩＴシステムが、コントローラ上で実行しているその現在のアプリケーションを保持してもよく、または、それらを新しいハードウェアに移行してもよい。仮想コンピューティングリソースを移行する場合、ＶＭ移行技術（たとえば、ｑｅｍｕ＋ｋｖｍの移行ツール）が使用されてもよく、新しいシステムルールとともにシステム状態を更新する。以下で論じられる変更管理技術は、これらの変更を確実かつ安全に行うために使用することができる。より多くのアプリケーションがシステムに追加されてもよいので、コントローラは、システムのリソースを割り当てる方法を決定するためのさまざまな技術の任意のものを使用してもよく、それらの技術は、ラウンドロビン技術、重み付きラウンドロビン技術、最少利用技術、重み付き最少利用技術、利用に基づくアシストトレーニングによる予測技術、計画技術、所望能力技術、及び、最大サイズ技術を含むがこれらに限定されない。
【０１７６】
図８Ｃは、ストレージリソースの新しい物理ストレージリソースへの移行のための例示的なプロセスフローを示す。次いで、ストレージリソースは、ミラーリングされてもよく、移行されてもよく、またはその組合せであってもよい（たとえば、ストレージはミラーリングされてもよく、次いで、元のストレージリソースは切断される）。ステップ８２０では、ストレージリソースは、コントローラに連絡している、または、コントローラにそれを発見させる新しいストレージリソースのいずれかによってシステムに連結される。これは、アウトオブバンド管理接続２６０、インバンド管理接続２７０、ＳＡＮネットワーク２８０で行うことができ、または、フラットネットワークでは、アプリケーションネットワークは、その組合せを使用していてもよい。インバンド管理によって、オペレーティングシステムはプリブートされてもよく、新しいリソースはコントローラに接続してもよい。
【０１７７】
ステップ８２２では、新しいストレージターゲットが、新しいストレージリソース上に作成され、これは、ステップ８２４でデータベースに記録することができる。ある例において、ストレージターゲットは、ファイルをコピーすることによって作成されてもよい。別の例において、ストレージターゲットは、ブロックデバイスを作成して、（ファイルシステムｂｌｏｂ（複数可）の形態であってもよい）データをコピーすることによって作成されてもよい。別の例において、ブロックデバイス間に２つ以上のストレージリソースをミラーリング（たとえば、ＲＡＩＤを作成）し、任意選択的に、ｉｓｃｓｉ、ｉｓｅｒ、ｎｖｍｅｏｆ、ｎｆｓ、ｎｆｓ  ｏｖｅｒ  ｒｄｍａ、ｆｃ、ｆｃｏｅ、ｓｒｐなどを含むがこれらに限定されないリモートストレージトランスポート（複数可）を通して接続することによって、ストレージターゲットは作成されてもよい。ステップ８２４でのデータベースへのエントリは、ストレージリソースが他のリソースまたはホストと同じデバイス上にある場合、リモートまたはローカルで新しいストレージリソースに接続するために、コンピューティングリソース（または、他のタイプのリソース及び／またはホスト）のための情報を含んでもよい。
【０１７８】
ステップ８２６では、ストレージリソースが同期される。たとえば、ストレージはミラーリングすることができる。別の例として、ストレージはオフラインで同期することができる。ｒａｉｄ１（または、他のタイプのｒａｉｄ、通常、ｒａｉｄ１またはｒａｉｄ０、しかし、必要に応じて、ｒａｉｄ１１０であってもよい（ミラーリングされたｒａｉｄ１０））などの技術（ｍｄａｄｍ、ｚｆｓ、ｂｔｒｆｓ、ハードウェアｒａｉｄ）が、ステップ８２６で採用されてもよい。
【０１７９】
次いで、古いストレージリソースからのデータは、ステップ８２８でのデータベースログインの後、任意選択的に接続される（それが後で行われるときは、そのようなデータを記録しなければならない場合、データベースはデータをコピーするステータスに関連する情報を含んでもよい）。ストレージターゲットが前のホストから離れて移行されている（たとえば、以前に示されたように、図８Ａ及び８Ｂの通り、単一のノードシステムから、マルチノード及び／または分散ＩＴシステムへ移動する）場合、新しいストレージリソースは、ステップ８３０において、コントローラ、システム状態、コンピューティングリソース、またはそれらの組合せによって、一次ストレージリソースと呼ばれてもよい。これは、古いストレージリソースを削除するステップとして行われてもよい。場合によっては、次に、リソースに接続される物理または仮想ホストを更新する必要があり、場合によっては、ステップ８３２において、移行中、電源をオフにしてもよい（次いで、電源をオンに戻してもよい）（物理または仮想ホストの電源をオンにするための本明細書で開示された技術を使用することができる）。
【０１８０】
図８Ｄは、マルチテナントシステムの単一ノード上の仮想マシン、コンテナ、及び／またはプロセスを、計算及びストレージのための別々のハードウェアを有してもよいマルチノードシステムに移行するための例示的なプロセスフローを示す。ステップ８５０では、コントローラ２００は、新しいノード上にあってもよい新しいストレージリソースを作成する（たとえば、図８Ａのノード３１８及び３１９参照）。次に、ステップ８５２では、古いアプリケーションホストは電源をオフにされてもよい。次いで、ステップ８５４では、データは、コピーまたは同期される。ステップ８５４でのコピー／同期前に、ステップ８５２で電源を落とすことによって、移行が単一ノードからのＶＭの移行を含む場合に、移行はより安全であろう。電源オフは、ＶＭから物理マシンへの移動にとっても有益であろう。ステップ８５４は、データ事前同期ステップ８６２を介して電源を落とす前に実現されてもよく、それは、関連するダウンタイムを最小限に抑えることができる。さらに、ホストは、ステップ８５２と同様に電源を落とさなくてもよく、その場合、新しいホストの準備ができる（または、新しいストレージリソースの準備ができる）まで、古いホストはオンラインのままである。電源オフステップ８５２を回避するための技術は、後でさらに詳細に論じられる。ステップ８５４では、ストレージリソースがホットスタンバイを使用してミラーリングまたは同期されない限り、データは任意選択的に同期することができる。
【０１８１】
ここで、新しいストレージリソースは、稼働中であり、ステップ８５６でデータベースにログインされてもよく、そのため、コントローラ２００は、ステップ８５８で、新しいホストを新しいストレージリソースに接続することができる。複数の仮想ホストによって単一のノードから移行されるとき、このプロセスは、複数のホストに対して繰り返される必要があることがある（ステップ８６０）。それらがトラッキングされる場合、ブートの順番は、アプリケーションの依存関係を使用して、コントローラロジックによって決定されてもよい。
【０１８２】
図８Ｅは、システムにおける単一ノードから複数ノードへの拡張のための別の例示的なプロセスフローを示す。ステップ８７０では、新しいリソースが単一のノードシステムに連結される。コントローラは、システムのためのシステムルール及び／または拡張ルールの組を有してもよい（または、それは、サービス実行、それらのテンプレート、及びサービスの互いへの依存に基づく拡張ルールを得てもよい）。ステップ８７２では、コントローラは、拡張を容易にするために使用されるそのようなルールをチェックする。
【０１８３】
新しい物理リソースがストレージリソースを含む場合、ストレージリソースは、ステップ８７４において、より単純なＩＴシステムの単一ノードまたは他の形態から移動されてもよい（または、ストレージリソースがミラーリングされてもよい）。ストレージリソースが移動される場合、ストレージリソースが移動された後、コンピューティングリソースまたは実行中のリソースは、ステップ８７６においてリロードされてもよく、またはリブートされてもよい。別の例において、コンピューティングリソースは、ステップ８７６において、ミラーリングされたストレージリソースに接続されてもよく、実行しているままでもよい、一方、単一ノードシステム上の古いストレージリソースまたは前のシステムのハードウェアリソースは、切断されてもよく、または、無効にされてもよい。たとえば、実行中のサービスは、２つのミラーリングされたブロックデバイスに連結されてもよく（一方は単一ノードサーバ上（たとえば、ｍｄａｄｍ  ｒａｉｄ１を使用）、及び他方はストレージリソース上）、次いで、データが同期されると、単一ノードサーバ上のドライブは切断されてもよい。前のハードウェアは、ＩＴシステムの一部を含んだままでもよく、混合モード（ステップ８７８）におけるコントローラとして、同じノード上でそれを実行してもよい。元のノードがコントローラを動かすのみになるまで、システムはこの移行プロセスを繰り返し続けてもよく、そこで、システムは分散される（ステップ８８０）。さらにまた、図８Ｅのプロセスフローのステップのそれぞれにおいて、コントローラは、システム状態２２０を更新することができ、データベースにシステムに対する変更を記録することができる（ステップ８８２）。
【０１８４】
図９Ａを参照すると、アプリケーション９１０は、リソース９００上にインストールされる。リソース９００は、本明細書に記載されるような図１〜１０に関する計算リソース３１０、ストレージリソース４１０、またはネットワーキングリソース６１０であってもよい。リソース９００は物理リソースであってもよい。物理リソースは、物理マシンまたは物理ＩＴシステムコンポーネントを備えてもよい。リソース９００は、たとえば、物理計算リソース、物理ストレージリソース、または物理ネットワーキングリソースであってもよい。リソース９００は、本明細書の図２Ａ〜１０に関して記載されるような計算リソース、ネットワーキングリソース、またはストレージリソースの他のリソースによって、システム１００のコントローラ２００に連結されてもよい。
【０１８５】
リソース９００は、初めは電源が落とされていてもよい。リソース９００は、ネットワーク、つまり、アウトオブバンド管理接続２６０、インバンド管理接続２７０、ＳＡＮ２８０、及び／またはネットワーク２９０を介してコントローラに連結されてもよい。リソース９００はまた、サービス、アプリケーションユーザ、及び／またはクライアントが互いに通信することができる１つまたは複数のアプリケーションネットワーク３９０に連結されてもよい。アウトオブバンド管理接続２６０は、リソース９００が接続されたときにオンになるリソース９００の独立したアウトオブバンド管理デバイス９１５または回路に連結されてもよい。デバイスは、デバイスの電源オン／オフ、コンソールへのアタッチ及びコマンドの打ち込み、温度及び他のコンピュータ健全性関連要素の監視、ならびに、ＢＩＯＳ設定１９５及びオペレーティングシステムからのスコープ外の他の特徴の設定を含むがこれらに限定されない特徴を可能にしてもよい。
【０１８６】
コントローラ２００は、アウトオブバンド管理ネットワーク２６０を通してリソース９００を検出してもよい。それは、リソースのタイプを識別してもよく、そして、インバンド管理またはアウトオブバンド管理を使用してその構成を識別してもよい。コントローラロジック２０５は、追加のハードウェアのために、アウトオブバンド管理２６０またはインバンド管理２７０を調べるように構成されてもよい。リソース９００が検出された場合、コントローラロジック２０５は、リソース９００が自動的にまたはユーザとの対話によって構成されるかどうか判定するために、グローバルシステムルール２２０を使用してもよい。リソース９００が自動的に追加された場合、セットアップは、コントローラ２００内のグローバルシステムルール２１０に従う。リソース９００がユーザによって追加された場合、コントローラ２００内のグローバルシステムルール２１０は、リソースの追加及びユーザがコンピューティングリソースで行いたいことを確認するようにユーザに尋ねてもよい。コントローラ２００は、新しいリソースが許可されたことの確認のために、ＡＰＩアプリケーションに問い合わせてもよく、あるいは、その他の場合には、ユーザまたはスタックを制御する任意のプログラムに要求してもよい。許可プロセスはまた、新しいリソースの妥当性を確認するために、暗号を使用して、自動的かつ確実に完了させてもよい。次いで、リソース９００は、リソース９００が接続されるスイッチまたはネットワークを含むＩＴシステム状態２２０に追加される。
【０１８７】
コントローラ２００は、アウトオブバンド管理ネットワーク２６０を通して、リソースの電源をオンにしてもよい。コントローラ２００は、物理リソースの電源をオンにし、ＢＩＯＳ１９５を構成するために、アウトオブバンド管理接続２６０を使用してもよい。コントローラ２００は、自動的に、コンソール１９０を使用してもよく、所望のＢＩＯＳオプションを選択してもよく、それは、コントローラ２００が、画像認識でコンソールイメージを読み取り、アウトオブバンド管理を通してコンソール１９０を制御することによって実現されてもよい。ブートアップ状態は、リソース９００のコンソールを通した画像認識、仮想キーボードによるアウトオブバンド管理、リソースを利用しているサービスを問い合わせること、または、アプリケーション９１０のサービスを問い合わせることによって判定されてもよい。いくつかのアプリケーションは、コントローラ２００が、監視する、または、場合によっては、インバンド管理２７０を使用してアプリケーション９１０の設定を変更することを可能にするプロセスを有してもよい。
【０１８８】
物理リソース９００上の（または、本明細書の図１〜１０に関して記載されるようなリソース３００、３１０、３１１、３１２、３１３、４００、４１０、４１１、４１２、６００、６１０の）アプリケーション９１０は、ＢＩＯＳブートオプション、または、ＰＸＥブートもしくはＦｌｅｘブートを可能にすることなどのリモートブートを構成する他の方法を使用して、ＳＡＮ２８０または別のネットワークを介してブートしてもよい。さらに、または、あるいは、コントローラ２００は、物理リソース９００にイメージ９５０のアプリケーションイメージをブートするように指示するために、アウトオブバンド管理２６０及び／またはインバンド管理接続２７０を使用してもよい。コントローラは、リソース上のブートオプションを構成してもよく、または、ＰＸＥブートまたはＦｌｅｘブートなどの既存の使用可能リモートブート方法を使用してもよい。コントローラ２００は、ＩＳＯイメージからブートし、ローカルディスクを構成し、次いで、ローカルディスク（複数可）９２０からのブートをリソースに指示するために、アウトオブバンド管理２６０を任意選択的にまたは代替的に使用してもよい。ローカルディスク（複数可）は、ブートファイルをロードされてもよい。これは、アウトオブバンド管理２６０、画像認識、及び仮想キーボードを使用することによって実現されてもよい。リソースは、ブートファイル及び／またはブートローダもインストールされてもよい。リソース９００及びアプリケーションは、グローバルシステムルール２１０及びコントローラロジック２０５を使用して、たとえば、ＳＡＮ２８０を介して、テンプレート２３０からロードされたイメージ９５０をからブートしてもよい。グローバルシステムルール２２０は、ブートの順番を指定してもよい。たとえば、グローバルシステムルール２２０は、最初にリソース９００をブートし、次いでアプリケーション９１０をブートすることを要求してもよい。イメージ９５０を使用してリソース９００がブートされると、リソース９００に関するインバンド管理接続２７０を通して受信された情報は、ＩＴシステム状態２２０に収集及び追加されてもよい。リソース９００は、ストレージリソースプールに追加されてもよく、それは、コントローラ２００によって管理されて、ＩＴシステム状態２２０においてトラッキングされるリソースになる。アプリケーション９１０は、イメージ９５０またはリソース９００上にロードされたアプリケーションイメージ９５６を使用して、グローバルシステムルール２２０で指定された順番でブートされてもよい。
【０１８９】
コントローラ２００は、アウトオブバンド管理接続２６０または別の接続によって、アプリケーション９１０をアプリケーションネットワーク３９０に接続するネットワーキングリソース６１０を構成してもよい。物理リソース９００は、ＩＳＥＲ（ＩＳＣＳＩ  ｏｖｅｒ  ＲＤＭＡ）、ＮＶＭＥＯＦ  ＦＣＯＥ、ＦＣ、もしくはＩＳＣＳＩを含むがこれらに限定されないブロックストレージリソースなどのリモートストレージ、または、ＳＷＩＦＴ、ＧＦＵＳＴＥＲ、もしくはＣＥＰＨＦＳなどの別のストレージバックエンドに接続されてもよい。サービスまたはアプリケーションが稼働可能であるとき、ＩＴシステム状態２２０は、アウトオブバンド管理接続２６０及び／またはインバンド管理接続２７０を使用して更新されてもよい。コントローラ２００は、物理リソース９００の電源状態、すなわち、オンかオフかを判定するために、アウトオブバンド管理接続２６０またはインバンド管理接続２７０を使用してもよい。コントローラ２００は、サービスまたはアプリケーションが実行中またはブートアップ状態であるかどうかを判定するために、アウトオブバンド管理接続２６０またはインバンド管理接続２７０を使用してもよい。コントローラは、それが受信する情報及びグローバルシステムルール２１０に基づいて、他の機能を実行してもよい。
【０１９０】
図９Ｂは、アプリケーション９１０をブートするために、テンプレート２３０から計算ノードに（たとえば、別のリソースまたはデータベースを介して）直接的または間接的にロードされるイメージ９５０を示す。イメージ９５０は、アプリケーション９１０のためのカスタムカーネル９４１を備えてもよい。
【０１９１】
イメージ９５０は、リソースタイプ及びハードウェアのためのブートファイル９４０を備えてもよい。ブートファイル９４０は、配備されるリソース、アプリケーション、またはサービスに対応するカーネル９４１を備えてもよい。ブートファイル９４０は、ブートプロセスを支援するために使用されるｉｎｉｔｒｄまたは類似のファイルシステムを備えてもよい。ブートシステム９４０は、異なるハードウェアタイプ及びリソースタイプのために構成される複数のカーネルまたはｉｎｉｔｒｄを備えてもよい。さらに、イメージ４５０は、ファイルシステム９５１を備えてもよい。ファイルシステム９５１は、ベースイメージ９５２及び対応するファイルシステムと、サービスイメージ９５３及び対応するファイルシステムと、揮発性イメージ９５４及び対応するファイルシステムとを備えてもよい。ロードされるファイルシステム及びデータは、リソースタイプ及びアプリケーション、または実行するサービスに応じて変えてもよい。ベースイメージ９５２は、ベースオペレーティングシステムファイルシステムを備えてもよい。ベースオペレーティングシステムは、読み取り専用であってもよい。ベースイメージ９５２はまた、実行されているものから独立しているオペレーティングシステムの基本ツールを備えてもよい。ベースイメージ９５２は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム９５３は、リソース、アプリケーション、またはサービスのための構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム５９４は、バイナリアプリケーション、特有アドレス、及び他の情報などの、その配備に固有の情報またはデータを含んでもよく、それは、パスワード、セッションキー、及びプライベートキーを含むがこれらに限定されない変数として構成されてもよく、または、構成されなくてもよい。ファイルシステムは、ｏｖｅｒｌａｙＦＳなどの技術を使用する１つの単一のファイルシステムとしてマウントされて、いくつかの読み取り専用及びいくつかの読み書きファイルシステムが、アプリケーションのために使用される重複データの量を減少させることを可能にしてもよい。
【０１９２】
図９Ｃは、テンプレート２３０の１つのタイプとすることができるＮＴパッケージからアプリケーションをインストールする例を示す。ステップ９００．１では、コントローラは、パッケージｂｌｏｂがインストールされる必要があることを判定する。ステップ９００．２では、コントローラは、ｂｌｏｂタイプ（ブロック、ファイル、ファイルシステム）に対して、デフォルトデータストア上にストレージリソースを作成する。ステップ９００．３では、コントローラは、ストレージリソースタイプに対して利用可能なストレージトランスポートを介してストレージリソースに接続する。ステップ９００．４では、コントローラは、パッケージｂｌｏｂを接続されたストレージリソースへコピーする。次いで、コントローラは、ストレージリソースから切断し（ステップ９００．５）、ストレージリソースを読み取り専用に設定する（ステップ９００．６）。次いで、パッケージｂｌｏｂは正常にインストールされる（ステップ９００．７）。
【０１９３】
別の例において、付属書類Ｂは、システムがコンピューティングリソースをｏｖｅｒｌａｙｆｓに接続する方法に関する例示的な詳細を記載する。このような技術は、図９Ａに従ってリソース上にアプリケーションをインストールすること、または、図２Ｆのステップ２０５．１１に従ってストレージリソースからコンピューティングリソースを起動することを容易にするのに使用することができる。
【０１９４】
図９Ｄは、リソース９００上に配備されるアプリケーション９１０を示す。リソース９００は、仮想コンピューティングリソースを備えてもよい、たとえば、ハイパーバイザ９２０、１つもしくは複数の仮想マシン９２１、９２２、及び／またはコンテナを備えてもよい計算ノードを備えてもよい。リソース９００は、リソース９００上にロードされたイメージ９５０を使用して、図１〜図１０に関して本明細書に記載されるのと類似の方法で構成されてもよい。この例において、リソース９２０は、仮想マシン９２１、９２２を管理するハイパーバイザとして示される。コントローラ２００は、インバンド管理２７０を使用して、リソースを作成するハイパーバイザ９２０をホストするリソース９００と通信し、リソースを構成して、ＣＰＵ、ＲＡＭ、ＧＰＵ、（別のホストにリモート接続するためにＲＤＭＡを使用してもよい）リモートＧＰＵ、ネットワーク接続、ネットワークファブリック接続、ならびに／または、パーティショニングされたかつ／もしくはセグメント化されたネットワークへの仮想及び物理接続を含むがこれらに限定されない適切なハードウェアリソースを割り当ててもよい。コントローラ２００は、リソース９００及びハイパーバイザ９２０を制御するために、仮想コンソール１９０（たとえば、ＳＰＩＣＥまたはＶＮＣを含むがこれらに限定されない）及び画像認識を使用してもよい。追加的にまたは代替的に、コントローラ２００は、グローバルシステムルール２１０を使用して、ハイパーバイザ９２０にテンプレート２３０からのアプリケーションイメージ９５０をブートするように指示するために、アウトオブバンド管理２６０またはインバンド管理接続２７０を使用してもよい。イメージ９５０は、コントローラ２００上に記憶されてもよく、または、コントローラ２００は、それらをストレージリソース４１０に移動またはコピーしてもよい。ＶＭ９２１、９２２のためのブートイメージは、たとえば、イメージ９５０、またはブロックデバイスもしくはリモートホストのファイルとしてローカルに記憶されてもよく、そして、たとえば、ｑｃｏｗ２またはｒａｗなどのイメージタイプを使用するＮＦＳ  ｏｖｅｒ  ＲＤＭＡ／ＮＦＳなどのファイル共有によって共有されてもよく、または、それは、ＩＳＣＳＩ、ＩＳＥＲ、ＮＶＭＥＯＦ、ＦＣ、ＦＣＯＥを使用するリモートブロックデバイスを使用してもよい。イメージ９５０の一部は、ストレージリソース４１０または計算ノード３１０上で記憶されてもよい。コントローラ２００は、グローバルルール及び／またはテンプレートを使用して、アウトオブバンド管理接続２６０または別の接続によって、アプリケーションを適切にサポートするネットワーキングリソース６１０を構成してもよい。リソース９００の上のアプリケーション９１０は、ＢＩＯＳブートオプションを使用してＳＡＮ２８０もしくは別のネットワークによってロードされたイメージ９５０を使用すること、または、リソース９００上のハイパーバイザ９２０が、ＩＳＥＲ（ＩＳＣＳＩ  ｏｖｅｒ  ＲＤＭＡ）、ＮＶＭＥＯＦ  ＦＣＯＥ、ＦＣ、もしくはＩＳＣＳＩを含むがこれらに限定されないブロックストレージリソース、もしくは、ＳＷＩＦＴ、ＧＦＵＳＴＥ��、もしくはＣＥＰＨＦＳなどの別のストレージバックエンドに接続することを可能にすることを介してブートしてもよい。ストレージリソースは、ストレージリソース上のテンプレートターゲットからコピーされてもよい。ＩＴシステム状態２２０は、情報のためにハイパーバイザ９２０に問い合わせることによって更新されてもよい。インバンド管理接続２７０は、ハイパーバイザ９２０と通信してもよく、リソースの電源状態、すなわち、オンかオフかを判定するために、または、ブートアップ状態を判定するために、使用されてもよい。ハイパーバイザ９２０は、仮想化されたアプリケーション９１０への仮想インバンド接続９２３を使用してもよく、アウトオブバンド管理に類似した機能のためにハイパーバイザ９２０を使用してもよい。この情報は、電源が入れられているまたはブートされているために、サービスまたはアプリケーションが稼働可能かどうかを示してもよい。
【０１９５】
ブートアップ状態は、リソース９００のコンソール１９０を通した画像認識、仮想キーボードによるアウトオブバンド管理２６０、リソースを利用しているサービスを問い合わせること、または、アプリケーション９１０自体のサービスを問い合わせることによって判定されてもよい。いくつかのアプリケーションは、コントローラ２００が、監視する、または、場合によっては、インバンド管理２７０を使用してアプリケーション９１０の設定を変更することを可能にするプロセスを有してもよい。いくつかのアプリケーションは仮想リソース上にあってもよく、コントローラ２００は、インバンド管理２７０（または、アウトオブバンド管理２６０）を使用して、ハイパーバイザ９２０と通信することによって監視してもよい。アプリケーション９１０は、入力の監視及び／または追加のためのこのようなプロセス（または、リソースを保存するために切り換えられてもよいこのようなプロセス）を有していなくてもよい。そのような場合、コントローラ２００は、アウトオブバンド管理接続２６０を使用してもよく、変更及び／または管理プロセス上での切り換えを行うために、画像処理及び／またはシステムにログオンする仮想キーボードを使用してもよい。仮想コンピューティングリソースと同様に、仮想マシンコンソール１９０が使用されてもよい。
【０１９６】
図９Ｅは、仮想コンピューティングリソースホストをＩＴシステム１００に追加するための例示的なプロセスフローを示す。ステップ９００．１１では、仮想コンピューティングリソースとして使用可能であるホストが、システムに追加される。コントローラは、図１５Ｂのプロセスフローに従ってベアメタルサーバを構成してもよい（ステップ９００．１２）。または、オペレーティングシステムはプリロードされてもよく、かつ／もしくは、ホストは事前に構成されてもよい（ステップ９００．１３）。次いで、リソースは、仮想コンピューティングリソースプールとしてシステム状態２２０に追加され（ステップ９００．１４）、リソースは、コントローラ２００からのＡＰＩによってアクセスできるようになる（ステップ９００．１５）。ＡＰＩは通常、インバンド管理接続２７０を通してアクセスされる。しかしながら、インバンド管理接続２７０は、仮想キーボードで選択的に有効及び／または無効にされてもよい。そして、コントローラは、アウトオブバンド接続２６０を通して通信するために、アウトオブバンド管理接続２６０ならびに仮想キーボード及びモニタを使用してもよい（ステップ９００．１６）。ここで、ステップ９００．１７では、コントローラは、仮想コンピューティングリソースとして新しいリソースを利用することができる。
【０１９７】
例示的なマルチコントローラシステム
図１０を参照すると、複数の物理計算ノード３１１、３１２、３１３を備える、本明細書で図１〜１０に関して記載されるコンピューティングリソース３００、３１０と、複数のストレージノード４１１、４１２及びＪＢＯＤ４１３の形態で本明細書に記載されるストレージリソース４００、４１０と、コンポーネント２０５、２１０、２２０、２３０（図１〜９Ｃ）を含み、本明細書に記載されるコントローラ２００として構成される複数のコントローラ２００ａ、２００ｂと、複数のファブリック６１１、６１２、６１３を含み、本明細書に記載されるネットワーキングリソース６００、６１０と、アプリケーションネットワーク３９０とを有するシステム１００が示されている。
【０１９８】
図１０は、例示的な実施形態のシステム１００のコンポーネントの可能な構成を示しているが、システム１００のコンポーネントの可能な構成を限定するものではない。
【０１９９】
ユーザインターフェースまたはアプリケーション１１０は、コントローラ２００ａまたは２００ｂのいずれかまたは両方と通信するＡＰＩアプリケーション１２０と通信する。コントローラ２００ａ、２００ｂは、アウトオブバンド管理接続２６０、インバンド管理接続２７０、ＳＡＮ２８０またはネットワークインバンド管理接続２９０に結合してよい。本明細書の図１〜図９Ｃを参照して説明するように、コントローラ２００ａ、２００ｂは、計算ノード３１１、３１２、３１３、ＪＢＯＤ４１３を含むストレージ４１１、４１２及びネットワーキングリソース６１０に接続２６０、２７０、２８０及び任意には２９０を介して結合される。アプリケーションネットワーク３９０は、計算ノード３１１、３１２、３１３、ストレージリソース４１１、４１２、４１３及びネットワーキングリソース６１０に結合される。
【０２００】
コントローラ２００ａ、２００ｂは、並列して動作してよい。コントローラ２００ａまたは２００ｂのいずれかは、本明細書の図１から図９Ｃに関して説明されるように、最初はマスタコントローラ２００として動作してよい。コントローラ２００ａ、２００ｂ（複数可）は、システム１００全体を電源オフ状態から構成するように構成されてよい。コントローラ２００ａ、２００ｂのうちの１つはさらに、アウトオブバンド及びインバンド接続２６０、２７０のいずれかを通じて他のコントローラを探索することによって、既存の構成からシステム状態２２０を生成することができる。コントローラ２００ａ、２００ｂのいずれかが、１つまたは複数の接続２６０、２７０を通じてリソースまたは他のコントローラからリソースステータス及び関連情報にアクセスするか、またはこれらを受信してよい。コントローラまたは他のリソースは他のコントローラを更新してよい。したがって、追加のコントローラがシステムに追加されると、このコントローラはシステム１００をシステム状態２２０に戻すように構成されてよい。コントローラのうちの１つまたはマスタコントローラに障害が発生した場合、他のコントローラをマスタコントローラとして指定してよい。ＩＴシステム状態２２０はさらに、利用可能またはリソース上に格納されたステータス情報から再構築可能であってよい。例えば、アプリケーションは、システム状態が格納または複製される仮想コンピューティングリソースを作成するようにアプリケーションが構成されているコンピューティングリソース上に配備されてよい。グローバルシステムルール２１０、システム状態２２０及びテンプレート２３０はさらに、リソースまたはリソースの組み合わせに保存またはコピーされてよい。したがって、全てのコントローラがオフラインになり、新しいコントローラが追加された場合、新しいコントローラがシステム状態２２０を回復できるようにシステムを構成してよい。
【０２０１】
ネットワーキングリソース６１０は、複数のネットワークファブリックを備えてよい。例えば、図１０に示すように、複数のネットワークファブリックには、ＳＤＮイーサネットスイッチ６１１、ＲＯＣＥスイッチ６１２、Ｉｎｆｉｎｉｂａｎｄスイッチ６１３もしくは他のスイッチまたはファブリック６１４のうち１つまたは複数が含まれ得る。ハイパーバイザは、必要なファブリックのうちの１つまたは複数を利用して、物理スイッチまたは仮想スイッチに接続し得る計算ノード上に仮想マシンを備える。ネットワーク構成は、例えば、セキュリティまたは他のリソース最適化のために、例えば、セグメント化されたネットワークを通じて物理ネットワークの制限を許可してよい。
【０２０２】
本明細書の図１〜図１０に説明されているコントローラ２００を通じたシステム１００は、サービスまたはアプリケーションを自動的にセットアップしてよい。ユーザは、ユーザインターフェース１１０またはアプリケーションを通じて、システム１００のためにサービスをセットアップするよう要求してよい。サービスは、電子メールサービス、Ｗｅｂサービス、ユーザ管理サービス、ネットワークプロバイダ、ＬＤＡＰ、開発者ツール、ＶＯＩＰ、認証ツール、会計ソフトウェアを含んでよいが、これらに限定されない。ＡＰＩアプリケーション１２０は、ユーザまたはアプリケーション要求を変換し、メッセージをコントローラ２００に送信する。コントローラ２００のサービステンプレートまたはイメージ２３０は、サービスに必要なリソースを識別するために使用される。必要なリソースは、システム状態２２０に応じた利用可能性に基づいて識別される。コントローラ２００は、必要な計算サービスのために、コンピューティングリソース３１０または計算ノード３１１、３１２または３１３に要求を出し、必要なストレージリソースのためにストレージリソース４１０に要求を出し、必要なネットワーキングリソースのためにネットワーキングリソース６１０に要求を出す。次に、システム状態２２０が更新され、割り当てられることになるリソースが識別される。次に、サービステンプレートに従って、グローバルシステムルール２１０を使用して、割り当てられたリソースにサービスがインストールされる。
【０２０３】
システムセキュリティの向上
図１３Ａを参照するとＩＴシステム１００が示されており、ここでシステム１００はリソース１３１０を含み、リソース１３１０はベアメタルまたは物理リソースの場合がある。図１３Ａは、システム１００に接続された単一のリソース１３１０のみを示しているが、システム１００は複数のリソース１３１０を含み得ることを理解されたい。リソース１３１０（複数可）は、ベアメタルクラウドノードであり得るか、またはそれを備え得る。ベアメタルクラウドノードには、物理ホストまたは仮想マシンへのリモートアクセスを許可し、仮想マシンの作成を許可し、外部ユーザによるリソース（複数可）上でのコードの実行を許可するようにする外部ネットワーク１３８０に接続されているリソースが含まれ得るが、これに限定されない。リソース１３１０（複数可）は、外部ネットワーク１３８０またはアプリケーションネットワーク３９０に直接的または間接的に接続され得る。外部ネットワーク１３８０は、コントローラ２００またはＩＴシステム１００のコントローラによって管理されないインターネットまたは他のリソース（複数可）であり得る。外部ネットワーク１３８０は、インターネット、インターネット接続（複数可）、コントローラによって管理されないリソース（複数可）、他の広域ネットワーク（例えば、Ｓｔｒａｔｃｏｍ、ピアツーピアメッシュネットワークまたは公的にアクセス可能であるかどうかに関わらない他の外部ネットワーク）または他のネットワークを含み得るが、これらに限定されない。
【０２０４】
物理リソース１３１０がＩＴシステム１００ａに追加されると、コントローラ２００に結合され、電源をオフにしてよい。リソース１３１０は、アウトオブバンド管理（ＯＯＢＭ）接続２６０、任意にはインバンド管理（ＩＢＭ）接続２７０及び任意にはＳＡＮ接続２８０などの、１つまたは複数のネットワークを介してコントローラ２００ａに結合される。本明細書で使用されるＳＡＮ２８０は、構成ＳＡＮを備えてもよく、備えなくてもよい。構成ＳＡＮは、物理リソースの電源オンまたは構成に使用されるＳＡＮを備えてよい。構成ＳＡＮは、ＳＡＮ２８０の一部であってよく、またはＳＡＮ２８０から分離されていてもよい。インバンド管理はさらに、本明細書に示すように、ＳＡＮ２８０であってもよく、そうでなくてもよい構成ＳＡＮを備えてよい。さらに、リソースが使用されている場合、構成ＳＡＮが無効になっているか、切断されているか、利用できなくてもよい。ＯＯＢＭ接続２６０はシステム１００のＯＳからは表示されないが、ＩＢＭ接続２７０及び／または構成ＳＡＮはシステム１００のＯＳからは表示されてよい。図１３Ａのコントローラ２００は、本明細書の図１〜図１２Ｂを参照して説明されるコントローラ２００と同様に構成されてよい。リソース１３１０は、内部ストレージを備え得る。いくつかの構成では、コントローラ２００は、ストレージを生成してよく、データ及び／または情報をフェッチするためにＳＡＮに接続するようにリソースを一時的に構成してよい。アウトオブバンド管理接続２６０は、独立したアウトオブバンド管理デバイス３１５またはリソース１３１０がプラグインされたときに電源がオンになるリソース１３１０の回路に結合されてよい。デバイス３１５は、デバイスの電源オン／オフ、コンソールへの接続及びコマンドの入力、温度及び他のコンピュータの健全性関連要素の監視ならびにＢＩＯＳ設定の設定及びオペレーティングシステムの範囲外の他の機能を含むが、これらに限定されない機能を可能にし得る。コントローラ２００は、アウトオブバンド管理ネットワーク２６０を通じてリソース１３１０を参照することができる。コントローラは、リソースのタイプを識別し、インバンド管理またはアウトオブバンド管理を使用してその構成を識別することもできる。以下で説明する図１３Ｃ〜図１３Ｅは、システムセキュリティを強化する方法で物理リソース１３１０をＩＴシステム１００ａに追加するための、及び／またはシステム１００を起動または管理するための様々なプロセスフローを示す。
【０２０５】
ネットワーク、ネットワーキングリソース、ネットワークデバイス及び／またはネットワークインターフェースを参照して本明細書で使用される「無効」という用語は、そのようなネットワーク、ネットワーキングリソース、ネットワークデバイス及び／またはネットワークインターフェースが（手動または自動により）電源オフになるか、物理的に切断されるか、及び／または仮想的に切断されるか、いくつかの他の方法で（例えば、フィルタリングにより）ネットワーク、仮想ネットワーク（例えば、ＶＬＡＮ、ＶＸＬＡＮ、ＩｎｆｉｎｉＢａｎｄパーティションを含むが、これらに限定されない）から切断されるアクションを指す。「無効」という用語には、（送信元からデータを受信または読み取る機能を有しつつ）リソースが宛先にデータを送信または書き込みできないようにすること、（宛先にデータを送信または書き込む機能を有しつつ）リソースが送信元からデータを受信または読み取りできないようにするなどの、操作性の一方向または単向性の制限も含まれる。そのようなネットワーク、ネットワーキングリソース、ネットワークデバイス及び／またはネットワークインターフェースは、追加のネットワーク、仮想ネットワークまたはリソースの結合から切断され、以前に接続されたネットワーク、仮想ネットワークまたはリソースの結合に接続されたままになってよい。加えて、そのようなネットワーキングリソースまたはデバイスは、あるネットワーク、仮想ネットワークまたはリソースの結合から別のものに切り替えることができる。
【０２０６】
ネットワーク、ネットワーキングリソース、ネットワークデバイス及び／またはネットワークインターフェースを参照して本明細書で使用される「有効」という用語は、そのようなネットワーク、ネットワーキングリソース、ネットワークデバイス及び／またはネットワークインターフェースが（手動または自動により）電源オンになるか、物理的に接続されるか、及び／または仮想的に接続されるか、いくつかの他の方法でネットワーク、仮想ネットワーク（例えば、ＶＬＡＮ、ＶＸＬＡＮ、ＩｎｆｉｎｉＢａｎｄパーティションを含むが、これらに限定されない）に接続するアクションを指す。そのようなネットワーク、ネットワーキングリソース、ネットワークデバイス及び／またはネットワークインターフェースは、既に別のシステムコンポーネントに接続されている場合、追加のネットワーク、仮想ネットワークまたはリソースの結合に接続されてよい。加えて、そのようなネットワーキングリソースまたはデバイスは、あるネットワーク、仮想ネットワークまたはリソースの結合から別のものに切り替えることができる。「有効」という用語には、（送信元からのデータを制限する機能を有しつつ）リソースが宛先に対してデータを送信、書き込みまたは受信できるようにすること、（宛先からのデータを制限する機能を有しつつ）リソースが送信元からデータを送信、受信または読み取りできるようにするなどの、操作性の一方向または単向性の制限も含まれる。
【０２０７】
コントローラロジック２０５は、追加されたハードウェアのアウトオブバンド管理接続２６０またはインバンド管理接続２７０及び／または構成ＳＡＮ２８０を調べるように構成される。リソース１３１０が検出された場合、コントローラロジック２０５は、グローバルシステムルール２２０を使用して、リソースを自動的に構成するかどうか、またはユーザと対話することによって構成するかどうかを決定してよい。自動的に追加される場合、セットアップはコントローラ２００内のグローバルシステムルール２１０に従うことになる。ユーザによって追加される場合、コントローラ２００内のグローバルシステムルール２１０は、リソースの追加及びユーザがリソース１３１０で行いたいことをユーザに問い合わせてよい。コントローラ２００は、新しいリソースが認証されていることを確認するために、ＡＰＩアプリケーションに問い合わせるか、別様にはユーザまたはスタックを制御している任意のプログラムに要求を出してよい。認証プロセスは、新しいリソースの正当性を確認するために暗号を使用して自動的かつ安全に完了することもできる。次に、コントローラロジック２０５は、リソース１３１０がプラグインされているスイッチまたはネットワークを含むＩＴシステム状態２２０にリソース１３１０を追加する。
【０２０８】
リソースが物理的な場合、コントローラ２００はアウトオブバンド管理ネットワーク２６０を通じてリソースの電源をオンにしてよく、リソース１３１０は、グローバルシステムルール２１０及びコントローラロジック２０５を使用して、例えばＳＡＮ２８０を介して、テンプレート２３０からロードされたイメージ３５０をブートオフすることができる。イメージは、他のネットワーク接続を通じて、または別のリソースを介して間接的にロードすることができる。一旦ブートされると、リソース１３１０に関する情報も収集され、ＩＴシステム状態２２０に追加され得る。これは、インバンド管理及び／または構成ＳＡＮまたはアウトオブバンド管理接続を通じて行われ得る。リソース１３１０は、グローバルシステムルール２１０及びコントローラロジック２０５を使用して、例えば、ＳＡＮ２８０を介して、テンプレート２３０からロードされたイメージ３５０をブートオフすることができる。イメージは、他のネットワーク接続を通じて、または別のリソースを介して間接的にロードすることができる。一旦ブートされると、コンピューティングリソース３１０に関してインバンド管理接続２７０を通じて受信された情報も収集され、ＩＴシステム状態２２０に追加され得る。次に、リソース１３１０はストレージリソースプールに追加されてよく、これは、コントローラ２００によって管理されてＩＴシステム状態２２０で追跡されるリソースになる。
【０２０９】
インバンド管理及び／または構成ＳＡＮは、リソース１３１０をセットアップ、管理、使用またはそれと通信し、任意のコマンドまたはタスクを実行するために、コントローラ２００によって使用され得る。しかしながら、任意には、インバンド管理接続２７０は、いつでも、またはシステム１００またはコントローラ２００のセットアップ、管理、使用または動作中にオフまたは無効になるようにコントローラ２００によって構成されてよい。インバンド管理は、いつでも、またはシステム１００またはコントローラ２００のセットアップ、管理、使用または動作中にオンまたは有効になるようにさらに構成されてもよい。任意には、コントローラ２００は、インバンド管理接続２７０からコントローラ２００（複数可）にリソース１３１０を制御可能または切り替え可能に切断してよい。そのような切断または切断可能性は物理的であってよく、例えば、自動物理スイッチまたはネットワークへのリソースのインバンド管理接続及び／または構成ＳＡＮの電源をオフにするスイッチを使用する。例えば、切断は、リソース１３１０のインバンド管理２７０及び／または構成ＳＡＮ２８０に接続されたポートへの電源を遮断するネットワークスイッチによって実行されてよい。このような切断または部分的な切断は、ソフトウェア定義ネットワークを使用して行ってよいか、またはソフトウェア定義ネットワークを使用してコントローラに対して物理的にフィルタリングしてよい。このような切断は、インバンド管理またはアウトオブバンド管理のいずれかを通じて、コントローラを介して行ってよい。例示的な実施形態によれば、リソース１３１０がＩＴシステムに追加される前、その間、またはその後の任意の時点で、コントローラ２００からの選択的な制御命令に応答して、リソース１３１０をインバンド管理接続２７０から切断することができる。
【０２１０】
ソフトウェア定義ネットワークを使用して、インバンド管理接続２７０及び／または構成ＳＡＮ２８０は、一部の機能を保持してもよく、または保持しなくてもよい。インバンド管理２７０及び／または構成ＳＡＮ２８０は、コントローラ２００または他のリソースとの間の通信のために、制限された接続として使用され得る。接続２７０は、攻撃者がコントローラ２００、他のネットワークまたは他のリソースにピボットするのを防ぐために制限され得る。システムは、コントローラ２００及びリソース１３１０などのデバイスがオープンに通信することを防ぎ、リソース１３１０を危険にさらすのを防ぐように構成されてよい。例えば、インバンド管理２７０及び／または構成ＳＡＮ２８０において、ソフトウェア定義ネットワークまたは（電子的な制限など）ハードウェア変更方法を通じて、インバンド管理及び／または構成ＳＡＮのデータ送信のみを許可し、何らかの受信を禁止してよい。インバンド管理及び／または構成ＳＡＮは、物理的に、またはコントローラからリソースへの書き込みのみを許可するソフトウェア定義ネットワークを使用してのいずれかで、一方向の書き込みコンポーネントになるように、またはコントローラ２００からリソース１３１０への一方向の書き込み接続として、構成され得る。接続の一方向の書き込みの性質はさらに、セキュリティの望ましい状況及びシステムの動作の様々な段階または時間に従って、制御されるか、あるいはオンまたはオフにすることができる。システムはさらに、例えば、ログまたはアラートを通信するようにリソースからコントローラへの書き込みまたは通信を制限するように構成することができる。インターフェースはさらに、ソフトウェア定義ネットワーク、ＶＬＡＮ、ＶＸＬＡＮ及び／またはＩｎｆｉｎｉＢａｎｄパーティショニングを含むがこれらに限定されない技術によって、他のネットワークへの移動またはネットワークへの追加または削除を行うことができる。例えば、インターフェースを設定ネットワークに接続し、そのネットワークから削除して、ランタイムに使用されるネットワークに移動することができる。コントローラからリソースへの通信は切断されるか、または制限されることがあり、その結果、コントローラがリソース１３１０から送信された任意のデータに物理的に応答できなくなる場合がある。一例によれば、リソース１３１０が追加されてブートすると、インバンド管理２７０は、物理的に、またはソフトウェア定義ネットワークを使用してのいずれかで、スイッチを切るか、またはフィルタリングすることができる。インバンド管理は、ログ管理専用の別のリソースにデータを送信することができるように構成され得る。
【０２１１】
インバンド管理は、アウトオブバンド管理またはソフトウェア定義ネットワークを使用してオンとオフを切り替えることができる。インバンド管理が切断されていると、デーモンを実行する必要がなくなり、キーボード機能を使用してインバンド管理を再度有効にすることができる。
【０２１２】
さらに、任意には、リソース１３１０はインバンド管理接続を有さなくてよく、リソースはアウトオブバンド管理を通じて管理してよい。
【０２１３】
アウトオブバンド管理は、代替的または追加的には、例えば、キーボード、仮想キーボード、ディスクマウントコンソール、仮想ディスクの接続、ＢＩＯＳ設定の変更、ブートパラメータ及びシステムの他の態様の変更、ブート可能なイメージもしくはインストールＣＤに存在し得る既存スクリプトの実行またはリソース１３１０で実行するオペレーティングシステムへの公開の有無に関わらずコントローラ２００及びリソース１３１０を通信可能にするアウトオブバンド管理の他の機能を含むがこれらに限定されない方法でシステムの様々な態様を操作するために使用することができる。例えば、コントローラ２００は、アウトオブバンド管理２６０を介して、そのようなツールを使用してコマンドを送信することができる。コントローラ２００はさらに、リソース１３１０の制御を支援するためにイメージ認識を使用することができる。したがって、アウトオブバンド管理接続を使用して、システムは、アウトオブバンド管理接続を介してシステムに接続されるリソースの望ましくない操作を防止または回避することができる。アウトオブバンド管理接続は、システムの動作中またはシステムの動作中の選択された時間に、一方向通信システムとして構成することもできる。
【０２１４】
さらに、アウトオブバンド管理接続２６０は、実施者が望む場合には、インバンド管理接続と同じ方法で、コントローラ２００によって選択的に制御することもできる。
【０２１５】
コントローラ２００は、リソースをオフにして電力を節約する、リソースをオンにしてアプリケーションの性能を向上させる、またはＩＴシステムユーザが考え得る任意の他の理由など、ＩＴシステムユーザが決定した理由で、グローバルシステムルールに従ってリソースを自動的にオン及びオフし、ＩＴシステムの状態を更新することができる。コントローラはさらに、構成ＳＡＮ、インバンド及びアウトオブバンド管理接続をオン及びオフにすることができるか、システム操作中に常時または様々なセキュリティ目的でこのような接続を一方向の書き込み接続として指定することができることがある（例えば、リソース１３１０が外部ネットワーク１３８０または内部ネットワーク３９０に接続されている間に、インバンド管理接続２７０または構成ＳＡＮ２８０を無効にする）。一方向のインバンド管理はさらに、例えば、システムの健全性を監視するために使用されてよく、オペレーティングシステムに表示される可能性のあるログ及び情報を監視することになる。
【０２１６】
リソース１３１０はさらに、サービス、アプリケーションユーザ及び／またはクライアントが互いに通信することができるアプリケーションネットワークなどの１つまたは複数の内部ネットワーク３９０に結合されてよい。このようなアプリケーションネットワーク３９０はさらに、外部ネットワーク１３８０に接続され得るか、接続可能であり得る。図２Ａ〜図１２Ｂを含むがこれらに限定されない、本明細書の例示的な実施形態によれば、インバンド管理は、リソースまたはアプリケーションネットワーク３９０から切断されるか、切断可能であり得、あるいはリソースまたはアプリケーションネットワークが外部ネットワークに接続されている場合、またはリソースが外部ネットワークに接続されていないアプリケーションネットワークに接続されている場合に、追加のセキュリティを提供するために、コントローラからの一方向の書き込みを提供してよい。
【０２１７】
図１３ＡのＩＴシステム１００は、図３Ｂに示されるＩＴシステム１００と同様に構成され得る。イメージ３５０は、コンピューティングリソースのブート及び／またはアプリケーションのロードのために、テンプレート２３０からリソース１３１０に直接的または間接的に（別のリソースまたはデータベースを通じて）ロードされ得る。イメージ３５０は、リソースタイプ及びハードウェアのためのブートファイル３４０を備え得る。ブートファイル３４０は、配備されるリソース、アプリケーションまたはサービスに対応するカーネル３４１を備えることができる。ブートファイル３４０はさらに、ブートプロセスを支援するために使用されるｉｎｉｔｒｄまたは同様のファイルシステムを備え得る。ブートシステム３４０は、異なるハードウェアタイプ及びリソースタイプのために構成された複数のカーネルまたはｉｎｉｔｒｄを備え得る。加えて、イメージ３５０は、ファイルシステム３５１を備え得る。ファイルシステム３５１は、ベースイメージ３５２及び対応するファイルシステム、ならびにサービスイメージ３５３及び対応するファイルシステムならびに揮発性イメージ３５４及び対応するファイルシステムを備え得る。ロードされるファイルシステム及びデータは、リソースタイプ及び実行されるアプリケーションまたはサービスによって異なる可能性がある。ベースイメージ３５２は、ベースオペレーティングシステムファイルシステムを含み得る。ベースオペレーティングシステムは読み取り専用であり得る。ベースイメージ３５２はさらに、実行中のものとは独立したオペレーティングシステムの基本的なツールを備え得る。ベースイメージ３５２は、ベースディレクトリ及びオペレーティングシステムツールを備え得る。サービスファイルシステム３５３は、リソース、アプリケーションまたはサービスのための構成ファイル及び仕様を含み得る。揮発性ファイルシステム３５４には、バイナリアプリケーション、特定のアドレス及びその他の情報など、その配備に固有の情報またはデータが含まれてよく、これらはパスワード、セッションキー及びプライベートキーを含むが、これらに限定されない変数として構成してもよく、構成しなくてもよい。ファイルシステムは、ｏｖｅｒｌａｙＦＳなどの技術を使用して単一のファイルシステムとして組み込まれ、一部の読み取り専用ファイルシステム及び一部の読み取り／書き込みファイルシステムはアプリケーションで使用される重複データの量を削減することができる。
【０２１８】
図１３Ｂは複数のリソース１３１０を示し、それぞれは１つまたは複数の仮想マシンをホストするか、または備える１つまたは複数のハイパーバイザ１３１１を備える。コントローラ２００ａは、それぞれがベアメタルリソースを備えるリソース１３１０に結合される。図１３Ｂを参照して図示及び説明されるように、リソース１３１０はそれぞれコントローラ２００ａに結合される。本明細書の例示的な実施形態によれば、インバンド管理接続２７０、構成ＳＡＮ２８０及び／またはアウトオブバンド管理接続２６０は、図１３Ａに関して説明したように構成することができる。１つまたは複数の仮想マシンまたはハイパーバイザは危険にさられるか、危険にさられた状態になる可能性がある。従来のシステムでは、その後、他のハイパーバイザ上の他の仮想マシンが危険にさられた状態になる可能性がある。例えば、これは仮想マシン内で実行されるハイパーバイザの悪用から発生する可能性がある。例えば、ピボットは、危険にさられたハイパーバイザからコントローラ２００ａに移動し、そこで危険にさられたコントローラ２００ａからコントローラ２００ａに結合された他のハイパーバイザに移動する可能性がある。例えば、危険にさられたハイパーバイザとターゲットのハイパーバイザとの間で、両方に接続されたネットワークを使用してピボットが発生する可能性がある。図１３Ｂに示すコントローラ２００ａ及びリソース１３１０のインバンド管理２７０、構成ＳＡＮ２８０またはアウトオブバンド管理２６０の構成では、コントローラ２００ａとリソース１３１０との間の所定リンクでインバンド（または構成ＳＡＮ）及び／またはアウトオブバンド接続を無効にするために、一部または全てを選択的に制御することができ、これは、危険にさられた仮想マシンが１つのハイパーバイザから発生し他のリソースにピボットするために使用されることを防止し得る。
【０２１９】
上記の図１から図１２に関して説明したように、インバンド管理接続２７０及びアウトオブバンド管理接続２６０はさらに、図１３Ａ及び１３Ｂに関して説明したのと同様に構成することができる。
【０２２０】
図１３Ｃは、ベアメタルノードなどの物理リソースをシステム１００に追加するか、または管理するための例示的なプロセスフローを示す。本明細書の図１３Ａ及び１３Ｂに示されるか、図１〜図１２に関して示されるリソース１３１０は、システム１００のコントローラへのアウトオブバンド管理接続２６０及びインバンド管理接続２７０及び／またはＳＡＮを介して接続され得る。
【０２２１】
リソース接続のインスタンスの後、ステップ１３７０で、外部ネットワーク及び／またはアプリケーションネットワークが無効になる。上述のように、この無効化には、様々な技術のいずれかを使用することができる。例えば、システムのセットアップ、リソースの追加、システムのテスト、システムの更新またはその他のタスクもしくはコマンドの実行の前に、図１３Ａ及び１３Ｂに関して説明したように、インバンド管理接続または構成ＳＡＮを使用して、システム１００のコンポーネント（または攻撃に対して脆弱なもののみ）を外部ネットワークまたはアプリケーションネットワークから無効にするか、切断するか、またはフィルタリングする。
【０２２２】
ステップ１３７０の後、次にステップ１３７１で、インバンド管理接続及び／または構成ＳＡＮが有効になる。したがって、ステップ１３７０と１３７１との組み合わせは、インバンド管理及び／またはＳＡＮ接続が通じている間、外部ネットワーク及び／またはアプリケーションネットワークからリソースを分離する。次に、インバンド管理接続を介してコントローラ２００の制御下でリソースにコマンドを実行することができる（ステップ１３７２を参照）。例えば、図１〜図１３Ｂに関して本明細書で説明されているものなどを含むがこれらに限定されないセットアップ及び構成ステップは、インバンド管理及び／または構成ＳＡＮを使用してステップ１３７２で実行することができる。代替的または追加的には、インバンド管理及び／または構成ＳＡＮを使用して、ステップ１３７２で、システムの動作、更新または管理（任意の変更管理またはシステム更新を含み得るがこれらに限定されない）、テスト、更新、データ転送、性能及び健全性に関する情報の収集（エラー、ＣＰＵ使用率、ネットワーク使用率、ファイルシステム情報及びストレージ使用率を含むがこれらに限定されない）及びログの収集ならびに本明細書の図１から図１３Ｂに説明されているシステム１００を管理するために使用され得る他のコマンドを含むがこれらに限定されない他のタスクを実行することができる。
【０２２３】
図１３Ａ及び１３Ｂに関して本明細書で説明されるように、リソースの追加、システムのセットアップ及びそのようなタスクまたはコマンドの実行後、リソースとコントローラまたはシステムの他のコンポーネントとの間のインバンド管理接続２７０及び／または構成ＳＡＮ２８０は、ステップ１３７３で、１つまたは複数の方向で無効化することができる。そのような無効化は、上述のように、切断、フィルタリングなどを使用することができる。ステップ１３７３の後、ステップ１３７４で、外部ネットワーク及び／またはアプリケーションネットワークへの接続を復元することができる。例えば、コントローラは、リソース１３１０がアプリケーションネットワークまたはインターネットに接続できるようにネットワーキングリソースに通知することができる。システムをテストまたは更新する場合も同じステップを実行することができる、つまり、外部ネットワーク及び／またはアプリケーションネットワークへのインバンド管理接続を切断するか、またはフィルタリングしてから、（一方向または両方向で）リソースへのインバンド管理接続を有効にするか、または接続することができる。したがって、リソースが外部ネットワーク及び／またはアプリケーションネットワークに接続されている間、ステップ１３７３及び１３７４は同時に動作して、インバンド管理接続及び／または構成ＳＡＮを通じたコントローラへの接続からリソースを分離する。
【０２２４】
アウトオブバンド管理は、システムまたはリソースの管理、システムまたはリソースのセットアップ、構成、ブートあるいはシステムまたはリソースの追加に使用することができる。アウトオブバンド管理は、本明細書の任意の実施形態で使用される場合、ブート前に設定を変更するために仮想キーボードを使用してマシンにコマンドを送信することができ、仮想キーボードに入力することによってオペレーティングシステムにコマンドを送信することもできる。マシンがログインしていない場合、アウトオブバンド管理は仮想キーボードを使用してユーザ名及びパスワードを入力し、イメージ認識を使用してログオンを確認し、入力したコマンドを確認し、それらが実行されたかどうかを確認することができる。物理リソースにグラフィカルコンソールしかない場合は、仮想マウスも使用することができ、イメージ認識によりアウトオブバンド管理は変更を行うことができるだろう。
【０２２５】
図１３Ｄは、ベアメタルノードなどの物理リソースをシステム１００に追加するか、これを管理するための別の例示的なプロセスフローである。ステップ１３８０で、本明細書の図１３Ａ及び１３Ｂまたは図１〜図１２に示されるリソースは、アウトオブバンド管理２６０を介してシステムまたはリソースに接続され得る。コントローラによって容易になるアウトオブバンド管理を通じてディスクイメージ（例えば、ＩＳＯイメージ）へのアクセスを提供することにより、ディスクを仮想的に接続することができる（ステップ１３８１を参照）。次に、リソースまたはシステムをディスクイメージからブートしてよく（ステップ１３８２）、次にファイルをディスクイメージからブート可能なディスクにコピーする（ステップ１３８３を参照）。これは、アウトオブバンド管理を使用してこの方法でリソースがセットアップされているシステムのブートにも使用することもできる。これは、複数のリソースがコントローラをさらに備えるか、システムを構成するかに関わらず、（ネットワーキングリソースを含むがこれに限定されない）共に結合可能な複数のリソースを構成及び／またはブートするために使用することもできる。したがって、仮想ディスクを使用して、仮想ディスクがリソースに接続されているかのように、コントローラがディスクイメージをリソースに接続することが可能になり得る。アウトオブバンド管理は、リソースにファイルを送信するために使用することもできる。＿データは、ステップ１３８３で仮想ディスクからローカルディスクにコピーすることができる。ディスクイメージには、リソースがコピーして操作時に使用することができるファイルが含まれる場合がある。ファイルは、スケジュールされたプログラムまたはアウトオブバンド管理からの指示のいずれかを通じて、コピーまたは使用することができる。コントローラは、アウトオブバンド管理を通じて、仮想キーボードを使用してリソースにログオンし、コマンドを入力して、ファイルを仮想ディスクからコントローラ自体のディスクまたはリソースにアクセス可能な他のストレージにコピーすることができる。ステップ１３８４では、システムまたはリソースは、ＢＩＯＳ、ＥＦＩまたはブート順序設定を設定することによりブートするように構成され、これによりブート可能ディスクからブートすることになる。ブート構成では、ｅｆｉｂｏｏｔｍｇｒなどのオペレーティングシステムのＥＦＩマネージャを使用してよく、これは、アウトオブバンド管理から直接実行されるか、インストーラスクリプトに含めることで実行することができる（例えば、リソースのブート時に、ｅｆｉｂｏｏｔｍｇｒを使用するスクリプトが自動的に実行される）。加えて、ブートオプションまたは他のＢＩＯＳの変更は、ブート順序コマンドを使用するか、ＢＩＯＳ構成（Ｓｕｐｅｒｍｉｃｒｏ  Ｕｐｄａｔｅ  ＭａｎａｇｅｒでサポートされているＸＭＬ  ＢＩＯＳ構成など）をアップロードするかのいずれかを使用するＳｕｐｅｒｍｉｃｒｏ  Ｂｏｏｔ  Ｍａｎａｇｅｒなどのアウトオブバンド管理ツールを通じて設定されてよい。ＢＩＯＳは、キーボード及びコンソールからのイメージ認識を使用して、ブート順序を含む適切なＢＩＯＳ設定を設��するように構成することもできる。インストーラは、ロードされた構成済みイメージに対して実行することができる。構成は、画面を見てイメージ認識を使用することによってテストすることができる。構成の後、リソースを有効にする（例えば、電源をオンにする、ブートする、アプリケーションネットワークに接続する、またはそれらの組み合わせ）ことができる（ステップ１３８５）。
【０２２６】
図１３Ｅは、ベアメタルノードなどの物理リソースをシステム１００に追加するか、または管理するための別の例示的なプロセスフローであり、この場合、ＰＸＥ、Ｆｌｅｘｂｏｏｔまたは類似するネットワークブートを使用している。ステップ１３９０では、本明細書の図１３Ａ及び図１３Ｂに示されるか、または図１〜図１２に関して示されるリソース１３１０は、システム１００のコントローラへの（１）インバンド管理接続２７０及び／またはＳＡＮ及び（２）アウトオブバンド管理接続２６０を介して接続され得る。次に、外部ネットワーク及び／またはアプリケーションネットワーク接続は、ステップ１３９１（ステップ１３７０に関連して上述したものと同様）において、無効化され得る（例えば、ＳＤＮを用いて物理的に、または仮想的に、全体的にまたは部分的に、フィルタリングまたは切断される）。例えば、システムのセットアップ、リソースの追加、システムのテスト、システムの更新またはその他のタスクもしくはコマンドの実行の前に、図１３Ａ及び図１３Ｂに関して説明したように、インバンド管理接続またはＳＡＮを使用して、システム１００のコンポーネント（または攻撃に対して脆弱なもののみ）を外部ネットワークまたはアプリケーションネットワークから無効にするか、切断するか、またはフィルタリングする。
【０２２７】
ステップ１３９２では、リソースのタイプが決定される。例えば、リソースに関する情報は、アウトオブバンド管理ツールを使用して、またはディスクがリソースに接続されているかのようにディスクイメージ（例えば、ＩＳＯイメージ）をリソースに接続して、リソース情報を識別するために使用することができるツールを有するオペレーティングシステムを一時的にブートすることによって、ｍａｃアドレスから収集することができる。次に、ステップ１３９３では、リソースは、構成されるか、またはＰＸＥまたはｆｌｅｘｂｏｏｔなどのために事前に構成されているとして識別される。次に、ステップ１３９４では、リソースの電源がオンになり、ＰＸＥ、Ｆｌｅｘｂｏｏｔまたは同様のブートが行われる（または、リソースが一時的にブートし、再度電源がオンにされた場合）。次に、ステップ１３９５で、リソースはインバンド管理接続またはＳＡＮからブートする。ステップ１３９６では、データは、図１３Ｄのステップ１３８３を参照して説明したのと同様の方法で、リソースによってアクセス可能なディスクにコピーされる。ステップ１３９７では、リソースは、図１３Ｄのステップ１３８４に関して上に説明したのと同様の方法で、ディスク（複数可）からブートするように構成される。リソースがＰＸＥ、ｆｌｅｘｂｏｏｔなどのために事前に構成されていると識別される場合、ファイルは、１３９３から１３９６までの任意のステップでコピーされ得る。インバンド管理が有効にされた場合、ステップ１３９８で無効化することができ、ステップ１３９９でアプリケーションネットワークまたは外部ネットワークを再接続するか、または有効にすることができる。
【０２２８】
さらに、ＯＯＢＭ以外の技術を使用して、リソースをリモートで有効にし（電源をオンにするなど）、リソースがブートされたことを確認することができることを理解されたい。例えば、システムは、ユーザに電源ボタンを押すように促し、システムがブートしたことをコントローラに手動で伝える（または、キーボード／コントローラへのコンソール接続を使用する）。さらに、システムは、システムがブートされ、コントローラがログオンし、リブートするように指示すると、ＩＢＭを通じてコントローラにｐｉｎｇすることができる（例えば、ｓｓｈ、ｔｅｌｎｅｔまたはネットワーク上の別の方法を通じて）。例えば、コントローラはｓｓｈを使用してリブートコマンドを送信することができる。ＰＸＥが使用されていて、ＯＯＢＭがない場合は、いずれの場合でも、システムにはリソースにリモートで電源をオンにように指示するか、またはユーザに手動で電源をオンにするように指示する方法を有するはずである。
【０２２９】
コントローラ及び／または環境の配備
例示的な実施形態では、コントローラは、発信コントローラ２００からシステム内に配備されてよい（このような発信コントローラ２００は、「メインコントローラ」と呼ばれる場合がある）。したがって、メインコントローラは、分離されるか、または分離可能なＩＴシステムまたは環境であり得るシステムまたは環境をセットアップし得る。
【０２３０】
本明細書に記載される環境は、互いに相互運用することができるコンピュータシステム内のリソースの集合を指す。コンピュータシステムは、その中に複数の環境を含むことができるが、これは必須ではない。環境のリソース（複数可）は、その環境で実行される１つまたは複数のインスタンス、アプリケーションまたはサブアプリケーションを備え得る。さらに、環境は、１つまたは複数の環境またはサブ環境を備えることができる。環境は、コントローラを含む場合と含まない場合があり、環境は、１つまたは複数のアプリケーションを動作させる場合がある。環境のそのようなリソースは、例えば、環境内のアプリケーションを含む特定の環境を実行するために使用されるネットワーキングリソース、コンピューティングリソース、ストレージリソース及び／またはアプリケーションネットワークを含むことができる。したがって、環境は、１つまたは複数のアプリケーションの機能を提供し得ることを理解されたい。いくつかの例では、本明細書に記載される環境は、他の環境から物理的または仮想的に分離されるか、または分離可能であり得る。さらに、他の例では、環境は、他の環境へのネットワーク接続を有し、そのような接続は、必要に応じて無効または有効にすることができる。
【０２３１】
加えて、メインコントローラは、様々な環境において、または別個のシステムとして、１つまたは複数の追加のコントローラをセットアップ、配備及び／または管理することができる。このような追加のコントローラは、メインコントローラから独立しても、独立状態であってもよい。このような追加のコントローラは、たとえメインコントローラから独立していても、または疑似的に独立していても、動作中の様々な時点で、メインコントローラ（または監視アプリケーションを介した別個のモニタまたは環境）から指示を受けるか、またはメインコントローラに情報を送信することができる。環境は、セキュリティのために（例えば、環境を互いに及び／またはメインコントローラから分離可能にすることによって）及び／または様々な管理のために構成することができる。環境は外部ネットワークに接続することができるが、別の関連環境は外部ネットワークに接続することも、接続しないこともできる。
【０２３２】
メインコントローラは、環境またはアプリケーションが別個のシステムであるかどうか、及びそれらがコントローラまたはサブコントローラを備えるかどうかに関わらず、環境またはアプリケーションを管理することができる。メインコントローラは、グローバル構成ファイルまたは他のデータの共有ストレージを管理することもできる。メインコントローラは、グローバルシステムルール（例えば、システムルール２１０）またはメインコントローラのサブセットを、異なるコントローラに対して、それらの機能に応じて解析することもできる。各々の新しいコントローラ（「サブコントローラ」と呼ばれる場合がある）は、メインコントローラの構成ルールのサブセットであり得る新しい構成ルールを受信することができる。コントローラに配備されるグローバル構成ルールのサブセットは、セットアップされているＩＴシステムのタイプに依存するか、またはそれに対応する場合がある。メインコントローラは、新しいコントローラまたは別個のＩＴシステムをセットアップまたは配備することができ、これらは、その後、例えば、出荷または配送またはその他のために、メインコントローラから永久的に分離される。グローバル構成ルール（またはそのサブセット）は、様々な環境においてアプリケーションまたはサブアプリケーションをセットアップするためのフレームワーク、及びそれらが相互に作用し得る方法を定義することができる。このようなアプリケーションまたは環境は、メインコントローラによって配備されるグローバル構成ルールのサブセットを備えるサブコントローラ上で実行することができる。いくつかの例では、そのようなアプリケーションまたは環境は、メインコントローラによって管理することができる。しかしながら、他の例では、そのようなアプリケーションまたは環境は、メインコントローラによって管理されない。アプリケーションまたは環境を管理するためにメインコントローラから新しいコントローラが生成される場合、新しいコントローラによる制御を容易にするために、複数のアプリケーションにまたがってアプリケーションの依存度チェックを行うことができる。
【０２３３】
したがって、例示的な実施形態では、システムは、別のコントローラを配備するように構成されたメインコントローラ、またはそのような他のコントローラを備えるＩＴシステムを備えることができる。このような実装システムは、メインコントローラから完全に切断されるように構成することができる。一旦独立すると、そのようなシステムは、スタンドアロンシステムとして動作するように構成されてもよく、または動作中の様々な離散時間または連続時間において、メインコントローラなどの別のコントローラ（またはアプリケーションを備えた環境）によって制御または監視されてよい。
【０２３４】
図１４Ａは、メインコントローラ１４０１が、異なるシステム１４００ａ及び１４００ｂ上にそれぞれ配備されたコントローラ１４０１ａ及び１４０１ｂを有する例示的なシステムを示す（ここで、１４００ａ及び１４００ｂは、サブシステムと呼ばれ得る。ただし、サブシステム１４００ａ及び１４００ｂは、環境としても機能し得ることを理解されたい）。メインコントローラ１４０１は、上述のコントローラ２００と同様の方法で構成することができる。したがって、コントローラロジック２０５、グローバルシステムルール２１０、システム状態２２０及びテンプレート２３０を含むことができる。
【０２３５】
システム１４００ａ及び１４００ｂはそれぞれ、リソース１４２０ａ、１４２０ｂにそれぞれ結合されたコントローラ１４０１ａ、１４０１ｂを備える。メインコントローラ１４０１は、サブシステム１４００ａのコントローラ１４０１ａ及びサブシステム１４００ｂのコントローラ１４０１ｂなどの１つまたは複数の他のコントローラに結合することができる。メインコントローラ１４００のグローバルルール２１０は、他のコントローラを管理及び制御することができるルールを含むことができる。メインコントローラ１４０１は、コントローラロジック２０５、システム状態２２０及びテンプレート２３０と共にそのようなグローバルルール２１０を使用して、本明細書の図１〜図１３Ｅを参照して説明したのと同様の方法で、コントローラ１４０１ａ、１４０１ｂを通じてサブシステム１４００ａ、１４００ｂをセットアップ、プロビジョニング及び配備することができる。
【０２３６】
例えば、メインコントローラ１４０１は、グローバルルール２１０（またはそのサブセット）がコントローラ１４０１ａ、１４０１ｂ及びそのサブシステム１４００ａ、１４００ｂの動作を指示する方法で、グローバルルール２１０（またはそのサブセット）をそれぞれルール１４１０ａ、１４１０ｂとしてサブシステム１４００ａ、１４００ｂにロードすることができる。各コントローラ１４０１ａ、１４０１ｂは、グローバルルール２１０の同じサブセットまたは異なるサブセットであり得るルール１４１０ａ、１４１０ｂを有してよい。例えば、グローバルルール２１０のどのサブセットが所与のサブシステムにプロビジョニングされるかは、配備されるサブシステムのタイプに依存し得る。さらに、コントローラ１４０１は、システムリソース１４２０ａ、１４２０ｂまたはコントローラ１４０１ａ、１４０１ｂにロードされることになるデータをロードするか、または送ることができる。
【０２３７】
メインコントローラ１４０１は、インバンド管理接続２７０（複数可）及び／またはアウトオブバンド管理接続２６０（複数可）またはＳＡＮ接続２８０を通じて他のコントローラ１４０１ａ、１４０１ｂに接続されてよく、これらは、例えば、図１３Ａ〜図１３Ｅに説明されるリソースの配備及び管理を参照して、本明細書に説明されるような方法で、配備または管理の様々な段階において有効または無効にすることができる。インバンド管理接続２７０またはアウトオブバンド管理接続２６０の選択的な有効化及び無効化を使用して、サブシステム１４００ａ、１４００ｂは、サブシステム１４００ａ、１４００ｂが、様々な時点で、メインシステム１００またはコントローラ１４０１または互いに関しての知識を全く有さない（または、知識が制限されているか、制御されているか、または禁止されている）方法で配備され得る。
【０２３８】
例示的な実施形態では、メインコントローラ１４０１は、メインコントローラ１４０１が複数のＩＴシステムを配備及び／または実行できるように、メインコントローラ１４０１によって配備及び構成されたローカルコントローラ１４０１ａ、１４０１ｂを有する集中型のＩＴシステムを動作させることができる。このようなＩＴシステムは、互いに独立していても、独立していなくてもよい。メインコントローラ１４０１は、それが作成したＩＴシステムから隔離されるか、またはエアギャップされた別個のアプリケーションとして監視をセットアップすることができる。監視のための別個のコンソールは、メインコントローラとローカルコントローラ（複数可）との間の接続、及び／または選択的に有効化または無効化され得る環境間の接続を備え得る。コントローラ１４０１は、例えば、ビジネス、データストレージを備えた製造システム、データセンタならびに他の様々な機能ノードを含むが、これらに限定されず、各々が停止または危険にさられる場合に異なるコントローラを有する様々な用途のための隔離されたシステムを配備することができる。このような分離は完全であっても永久的であってもよく、または、例えば、一時的、時間またはタスクに依存して、通信方向に依存して、または他のパラメータに依存して、疑似的に分離されていてよい。例えば、メインコントローラ１４０１は、いくつかの定義済みの状況に限定されていても、限定されていなくてもよいシステムに対して指示を提供するように構成することができ、一方、サブシステムは、メインコントローラと通信する能力が限定されているか、または全くない場合がある。したがって、このようなサブシステムは、メインコントローラ１４０１を危険にさらすことができない可能性がある。メインコントローラ１４０１及びサブコントローラ１４０１ａ、１４０１ｂは、例えば、インバンド管理２７０を無効にすることによって、一方向の書き込みによって及び／または通信をアウトオブバンド管理２６０に制限することによって、本明細書に説明するように（以下に説明される特定の例で）互いから分離され得る。例えば、侵害が発生した場合、１つまたは複数のコントローラは、１つまたは複数の他のコントローラに対してインバンド管理接続２７０を無効にして、侵害またはアクセスの拡散を防ぐことができる。システムセクションは、オフにすることも、分離することもできる。
【０２３９】
サブシステム１４００ａ、１４００ｂはさらに、インバンド管理２７０またはアウトオブバンド管理２６０を通じて別の環境またはシステムとリソースを共有するか、またはこれらに接続することができる。
【０２４０】
図１４Ｂ及び図１４Ｃは、メインコントローラを備えたコントローラをプロビジョニングするための可能なステップを示す例示的なフローである。
【０２４１】
図１４Ｂにおいて、ステップ１４６０では、メインコントローラは、リソース１４２０ａまたは１４２０ｂなどのリソースをプロビジョニングまたはセットアップする。ステップ１４６１では、メインコントローラは、サブコントローラをプロビジョニングまたはセットアップする。メインコントローラは、システム内にリソースをセットアップしてステップ１４６０及び１４６１を実行するために、上述の技術を使用することができる。さらに、図１４Ｂは、ステップ１４６１の前にステップ１４６０が実行されることを示すが、これは必須ではないことを理解されたい。メインコントローラ１４０１は、そのシステムルール２１０を使用して、どのリソースが必要であるかを判断し、システムまたはネットワーク上にリソースを配置することができる。メインコントローラは、ステップ１４６１において、サブコントローラをセットアップするためにシステムにシステムルール２１０をロードすることによって（または、それ自体のシステムルールをセットアップして取得する方法についてサブコントローラに指示を提供することによって）、サブコントローラをセットアップまたは配備することができる。これらの指示には、リソースの構成、アプリケーションの構成、サブコントローラによって実行されるＩＴシステムを作成するためのグローバルシステムルール、メインコントローラに再接続して新規のまたは変更されたルールを収集する指示、アプリケーションネットワークから切断して新しい本番環境のためのスペースを作成する指示が含まれ得るが、これらに限定されない。リソースを配備した後、ステップ１４６３において、メインコントローラは、システムルール２１０及び／またはシステム状態２２０への更新を介して、サブコントローラにリソースを割り当てることができる。
【０２４２】
図１４Ｃは、配備の代替的なプロセスフローを示す。図１４Ｃの例では、メインコントローラは、ステップ１４７０でサブコントローラを配備する（ステップ１４６１に関して説明したように進めることができる）。次に、ステップ１４７５において、サブコントローラは、例えば図３Ｃ及び図７Ｂに示すような技術を使用してリソースを配備する。
【０２４３】
図１５Ａは、システム１００のメインコントローラ１５０１が環境１５０２、１５０３及び１５０４を生成する例示的なシステムを示す。環境１５０２はリソース１５２２を含み、環境１５０３はリソース１５２３を含み、環境１５０４はリソース１５２４を含む。さらに、環境１５０２、１５０３、１５０４は、共有リソース１５２５のプールへのアクセスを共有することができる。このような共有リソースは、例えば、互いに通信する必要がある共有データセット、ＡＰＩまたは実行中のアプリケーションを含み得ることができるが、これらに限定されない。
【０２４４】
図１５Ａの例では、各環境１５０２、１５０３、１５０４は、メインコントローラ１５０１を共有する。メインコントローラ１５０１のグローバルシステムルール２１０は、環境を配備及び管理するルールを含むことができる。リソース１５２２、１５２３及び／または１５２４は、１つまたは複数のアプリケーションを管理するために、それぞれの環境１５０１、１５０２、１５０３によって必要とされ得る。そのようなアプリケーションのための構成ルールは、そのような各環境の動作方法ならびに他のアプリケーション及び環境との相互作用方法を定義するために、メインコントローラ（または、存在する場合は、環境内のローカルコントローラ）によって実施されてもよい。メインコントローラ１４０１は、コントローラロジック２０５、システム状態２２０及びテンプレート２３０と共にグローバルルール２１０を使用して、本明細書の図１〜図１４Ｃを参照して説明したリソース及びシステムの配備と同様の方法で、環境をセットアップ、プロビジョニング及び配備することができる。環境がローカルコントローラを備える場合、メインコントローラ１５０１は、グローバルルール（またはそのサブセット）がその環境の動作を定義するように、グローバルルール２１０（またはそのサブセット）をローカルコントローラまたは関連するストレージにロードすることができる。
【０２４５】
コントローラ１５０１は、システムルール２１０を有する構成ルールを使用して、環境１５０２、１５０３、１５０４のそれぞれのリソース１５２２、１５２３、１５２４及び／または共有リソース１５２５を配備及び構成することができる。コントローラ１５０１はさらに、環境を監視するか、リソース１５２２、１５２３、１５２４（または共有リソース１５２５）を構成して、それぞれの環境１５０２、１５０３、１５０４の監視を可能にすることができる。このような監視は、有効または無効にすることができる別個の監視コンソールへの接続を介するか、またはメインコントローラを通じたものであってよい。メインコントローラ１５０１は、図１３Ａ〜図１３Ｅ及び図１４Ａのリソースの配備及び管理を参照して本明細書に説明されるような方法で、配備または管理の様々な段階で有効または無効にすることができるインバンド管理接続２７０（複数可）及び／またはアウトオブバンド管理接続２６０（複数可）またはＳＡＮ接続２８０を通じて、環境１５０２、１５０３、１５０４のうちの１つまたは複数に接続することができる。インバンド管理接続２７０またはアウトオブバンド管理接続２６０またはＳＡＮ接続２８０の有効化及び無効化を使用して、環境１５０２、１５０３、１５０４は、それらが様々な時点で、メインシステム１００またはコントローラ１５０１の知識を全く有さないか、知識が制限されているか、制御されているか、または互いの接続に関して知識を全く有さないか、知識が制限されているか、制御されている方法で配備され得る。
【０２４６】
環境は、外部である外部環境に接続する外部ネットワーク１５８０と結合されるか、他のリソースと相互作用する１つのリソースまたは複数のリソースを備えることができる。環境は、物理的であっても非物理的であってもよい。この文脈での「非物理的」とは、環境が同じ物理ホスト（複数可）を共有しているが、仮想的に互いに分離されていることを意味する。環境及びシステムは、同一のハードウェア、類似しているが異なるハードウェアまたは同一ではないハードウェアに配備することができる。いくつかの例では、環境１５０２、１５０３、１５０４は互いの有効なコピーであり得るが、他の例では、環境１５０２、１５０３、１５０４は、互いに異なる機能性を提供し得る。一例として、環境のリソースは、サーバであってもよい。
【０２４７】
本明細書に説明される技術に従って、システム及びリソースを別個の環境またはサブシステムに配置することにより、セキュリティ及び／または性能のために、アプリケーションを分離することが可能になり得る。環境を分離することで、危険にさられたリソースの影響を軽減することもできる。例えば、ある環境には機密データが含まれる場合があり、インターネットへの露出が少なくなるように構成することができ、一方、別の環境では、インターネット向けアプリケーションをホストすることができる。
【０２４８】
図１５Ｂは、図１５Ａに示すコントローラが環境をセットアップする例示的なプロセスフローを示す。このような例では、システムは、新しい環境を作成しセットアップするようにタスクを与えられてもよい。これは、ユーザの要求によって、または特定のタスクまたは一連のタスクを処理するときに実行されるシステムルールによってトリガされ得る。以下に説明する図１７Ａ〜図１８Ｂは、システムが新しい環境を作成する特定の変更管理タスクまたは一連のタスクの例を示す。しかしながら、コントローラが新しい環境を作成してセットアップし得る状況は多数存在し得る。
【０２４９】
したがって、図１５Ｂを参照すると、新しい環境をセットアップする際に、コントローラは、環境ルールを選択する（ステップ１５００．１）。環境ルールに従って、グローバルシステムルール２１０及びテンプレート２３０を使用して、コントローラは、環境のためにリソースを見つける（ステップ１５００．２）。ルールは、環境に必要なリソースが見つかるまでコントローラが通過する好適なリソース選択の階層を有し得る。ステップ１５００．３において、コントローラは、例えば、図３Ｃまたは図７Ｂに説明される技術を使用して、ステップ１５００．２で見つけたリソースを環境に割り当てる。次に、コントローラは、新しい環境と他のシステムコンポーネントとの間の互換性のある効率的な接続を確保するために、新しい環境に関してシステムのネットワーキングリソースを構成する（ステップ１５００．４）。システム状態は、各リソースが有効になり、各テンプレートが処理されると、ステップ１５００．５で更新される。次に、コントローラは、環境のリソースの統合及び相互運用性をセットアップして有効にし、新しい環境を配備するために任意のアプリケーションの電源をオンにする（ステップ１５００．６）。システム状態は、環境が利用可能になると、ステップ１５００．７で再び更新される。
【０２５０】
図１５Ｃは、図１５Ａに示すコントローラが複数の環境をセットアップする例示的なプロセスフローを示す。複数の環境をセットアップする場合は、各環境に対して図１５Ｂに説明する技術を使用して、環境を並列にセットアップすることができる。しかしながら、環境は、図１５Ｃに説明されるように、連続した順序または連続してセットアップされ得ることを理解されたい。図１５Ｃを参照すると、ステップ１５００．１０において、コントローラは、第１の新しい環境（図１５Ｂのステップ１５００．１に関して説明してように実行することができる）をセットアップし、配備する。異なるタイプの環境及び異なる環境の相互運用方法には、異なる環境ルールが存在し得る。ステップ１５００．１１において、コントローラは、次の環境に対する環境ルールを選択する。ステップ１５００．１２において、コントローラは、システムルール２１０によって定義することができる優先順位に従ってリソースを見つける。ステップ１５００．１３において、コントローラは、ステップ１５００．１２で見つけたリソースを次の環境に割り当てる。環境はリソースを共有してよく、共有しなくてもよい。ステップ１５００．１４において、コントローラは、システムルール２１０を使用して、次の環境に関して及び依存関係を有する環境間で、システムのネットワーキングリソースを構成する。システム状態は、ステップ１５００．１５において、各リソースが有効であり、テンプレートが処理され、ネットワーキングリソースが環境の依存関係を含めて構成されるときに更新される。次に、コントローラは、次の環境及び環境間のリソースの統合及び相互運用性をセットアップして有効にし、新しい環境を配備するために任意のアプリケーションの電源をオンにする（ステップ１５００．１６）。システム状態は、次の環境が利用可能になると、ステップ１５００．１７で更新される。
【０２５１】
監視をサポートする一方向通信
図１６Ａは、第１のコントローラ１６０１が、１６０１ａ、１６０１ｂ及び／または１６０１ｂなどの１つまたは複数のコントローラをセットアップするためのメインコントローラとして動作する例示的な実施形態を示す。メインコントローラ１６０１は、コントローラ２００／１４０１／１５０１などのコントローラに関して上述した技術を使用して、動作において互いに依存してもよく、依存しなくてもよい環境１６０２、１６０３、１６０４として、複数のクラウドホスト、システム及び／またはアプリケーションを生成するために使用されてよい。図１６Ａに示されるように、ＩＴシステム、環境、クラウド及び／またはそれらの任意の組み合わせ（複数可）は、環境１６０２、１６０３、１６０４として生成され得る。環境１６０２は第２のコントローラ１６０１ａを備え、環境１６０３は第３のコントローラ１６０１ｂを備え、環境１６０４は第４のコントローラ１６０１ｃを備える。環境１６０２、１６０３、１６０４はそれぞれ、１つまたは複数のリソース１６４２、１６４３、１６４４をそれぞれ備えることもできる。リソースは、それらの上で実行され得る１つまたは複数のアプリケーション１６４２、１６４３、１６４４を備え得る。これらのアプリケーションは、共有されているかどうかに関わらず、割り当てられたリソースに接続できる。これらのまたは他のアプリケーションは、インターネット上で、または共有アプリケーションまたはアプリケーションネットワークを備えることもできるプール１６６０内の１つまたは複数の共有リソース上で実行することができる。アプリケーションは、ユーザまたは環境もしくはクラウドのうちの１つまたは複数にサービスを提供することができる。環境１６０２、１６０３、１６０４は、リソースまたはデータベースを共有することができ、及び／または特定の環境に特定的に割り当てられたプール１６６０内のリソースを備えるか、または使用することができる。メインコントローラ１６０１及び／または１つまたは複数の環境を含むシステムの様々なコンポーネントは、アプリケーションネットワークまたはインターネットなどの外部ネットワーク１６１５に接続可能であってもよい。
【０２５２】
任意のリソース、環境またはコントローラと、別のリソース、環境、コントローラまたは外部接続との間に、本明細書の図１３Ａ〜図１３Ｅに関して説明される方法で、選択的に有効及び／または無効にされるように構成され得る接続が存在し得る。例えば、インバンド管理接続２７０、アウトオブバンド管理接続２７０またはＳＡＮ接続２８０を介して、または物理的に切断することによって、任意のリソース、コントローラ、環境または外部接続を無効にするか、またはコントローラ１６０１、環境１６０２、環境１６０３及び／または環境１６０４、リソース、あるいはアプリケーションから切断することができる。一例として、コントローラ１６０１と環境１６０２、１６０３、１６０４のいずれかとの間のインバンド管理接続２７０は、コントローラ１６０１を保護するために無効にすることができる。別の例として、このようなインバンド管理接続２７０（複数可）は、環境１６０２、１６０３、１６０４の動作中に選択的に無効または有効にしてよい。本明細書の図１３Ａ〜図１３Ｅに関して説明したセキュリティ目的に加えて、環境１６０２、１６０３、１６０４からメインコントローラ１６０１を無効にするか、または切断することにより、メインコントローラ１６０１は、環境１６０２、１６０３、１６０４を、その後、メインコントローラ１６０１または他のクラウドもしくは環境から分離することができるクラウドとしてスピンさせることが可能でもよい。この意味で、コントローラ１６０１は、複数のクラウド、ホストまたはシステムを生成するように構成される。
【０２５３】
本明細書に説明される無効化または切断要素を使用して、ユーザは、特定の用途のために、メインコントローラ１６０１を通じた環境への限定的なアクセスを許可され得る。例えば、開発者は、開発環境へのアクセスを提供され得る。別の例として、アプリケーションの管理者は、特定のアプリケーションまたはアプリケーションネットワークに限定され得る。別の例として、ログは、メインコントローラ１６０１を通じて表示されてよく、メインコントローラが生成する環境またはコントローラによって、危険にさらすことなくデータを収集する。
【０２５４】
メインコントローラ１６０１が環境１６０２をセットアップした後、環境１６０２は、メインコントローラ１６０１から切断され、このとき、環境１６０２は、メインコントローラ１６０１とは独立して動作することができ、及び／またはメインコントローラ１６０１または、環境１６０２に関連付けられるか、もしくは環境によって実行される他のアプリケーションによって選択的に監視及び維持されることができる。
【０２５５】
環境１６０２などの環境は、購入者またはユーザによる環境１６０２へのアクセスを可能にするユーザインターフェースまたはコンソール１６４０に結合され得る。環境１６０２は、アプリケーションとしてユーザコンソールをホストすることができる。環境１６０２は、ユーザによってリモートにアクセスすることができる。各環境１６０２、１６０３、１６０４は、共通のまたは別個のユーザインターフェースまたはコンソールによってアクセスすることができる。
【０２５６】
図１６Ｂは、環境１６０２、１６０３、１６０４が別の環境１６４１に書き込むように構成され得る例示的なシステムを示し、ここで、例えば、コンソール（環境１６４１と直接的または間接的のいずれかで接続することができる任意のコンソールの場合がある）を使用してログを参照することができる。このようにして、環境１６４１は、環境１６０２、１６０３、１６０４のうちの１つまたは複数がイベントを書き込むログサーバとして機能することができる。次に、メインコントローラ１６０１は、後述するように、このような環境１６０２、１６０３、１６０４との直接的な接続を維持することなく、ログサーバ１６４１にアクセスして、環境１６０２、１６０３、１６０４上のイベントを監視することができる。環境１６４１はさらに、メインコントローラ１６０１から選択的に切断されることがあり、他の環境１６０２、１６０３、１６０４からの読み取り専用となるように構成され得る。
【０２５７】
メインコントローラ１６０１は、図１６Ｃに示すように、メインコントローラ１６０１がその環境１６０２、１６０３、１６０４のいずれかから切断されていても、その環境１６０２、１６０３、１６０４の一部または全てを監視するように構成することができる。図１６Ｃは、メインコントローラ１６０１と環境１６０２、１６０３、１６０４との間のインバンド管理接続２７０が切断されており、これは、環境１６０２、１６０３、１６０４が危険にさられた場合にメインコントローラ１６０１を保護するのに役立つことが可能であることを示す。図１６Ｃに示されるように、アウトオブバンド接続２６０は、メインコントローラ１６０１と環境１６０２との間のインバンド接続２７０が切断されていても、メインコントローラ１６０１と１６０２などの環境との間で継続して維持することができる。さらに、環境１６４１は、選択的に有効または無効にすることができるメインコントローラ１６０１への接続を有することができる。メインコントローラ１６０１は、環境１６０２、１６０３、１６０４から隔離されるか、またはエアギャップされた環境１６４１内の別個のアプリケーションとして監視をセットアップすることができる。メインコントローラ１６０１は、監視のために一方向通信を使用することができる。例えば、ログは、環境１６０２、１６０３、１６０４から環境１６４１への一方向通信を通じて提供されてもよい。このような一方向の書き込みを通じて、かつ環境１６４１とメインコントローラ１６０１との間の接続を介して、メインコントローラ１６０１は、メインコントローラ１６０１と環境１６０２、１６０３、１６０４との間にインバンド接続２７０がない場合であっても、環境１６４１を介してデータを収集して環境１６０２、１６０３、１６０４を監視することができ、これによって環境１６０２、１６０３、１６０４がメインコントローラ１６０１を危険にさらすリスクを軽減することができる。アクセスは、フィルタリングされるか、または制御されていてもよく、及び／またはアクセスは、インターネットから独立していてもよい。例えば、図１６Ｄに示すように、メインコントローラ１６０１と環境１６０２との間のインバンド接続２７０が接続されている場合、メインコントローラ１６０１は、ネットワークスイッチ１６５０を制御して、環境１６０２をインターネットなどの外部ネットワーク１６１５から切断することができる。環境１６０２がインバンド接続２７０によってメインコントローラ１６０１と接続されているときに、環境１６０２を外部ネットワーク１６１５から切断すると、メインコントローラ１６０１のセキュリティを向上させることができる。
【０２５８】
したがって、図１６Ｂ〜図１６Ｄの例示的な実施形態は、環境１６０２、１６０３、１６０４への公開を最小限に抑えながら、メインコントローラがこれらの環境１６０２、１６０３、１６０４を安全に監視することができる方法を示すことを理解されたい。したがって、メインコントローラ１６０１は、環境１６０２、１６０３、１６０４が一方向の書き込み権限を有することができる環境１６４１のログサーバを介してそれらの環境を監視するための機構を継続して維持しながら、環境１６０２、１６０３、１６０４からコントローラ自体を切断する（または少なくともインバンドリンクからコントローラ自体を切断する）ことができる。したがって、環境１６４１のログをレビューする過程で、環境１６０２がマルウェアによって危険にさられる可能性があることをメインコントローラ１６０１が発見した場合、メインコントローラ１６０１は、ＳＤＮツールを使用して、アウトオブバンド接続２６０のみが存在するように環境１６０２を分離することができる（例えば、図１６Ｃを参照）。さらに、コントローラ１６０１は、環境１６０２の管理者に潜在的な問題に関する通知を送信することができる。コントローラはさらに、危険にさられた環境と他の環境１６０３、１６０４のいずれかとの間の任意の接続（例えば、インバンド管理接続２７０）を選択的に無効にすることによって、危険にさられた環境１６０２を分離することができる。別の例では、メインコントローラ１６０１は、ログを通じて、環境１６０３内のリソースが過度にホットに動作していることを発見することができる。これにより、メインコントローラが介入し、アプリケーションまたはサービスを環境１６０３から別の環境（既存の環境または新しく生成された環境のいずれであっても）に移行することができる。
【０２５９】
コントローラ１６０１はさらに、購入者またはユーザの要求に従って同様の１つまたは複数のシステムをセットアップすることもできる。図１６Ｅに示されるように、購入アプリケーション１６５０は、例えば、コンソールまたはその他で提供されてよく、これにより購入者のためにセットアップされるクラウド、ホスト、システム環境またはアプリケーションを購入者が購入または要求することを可能にする。購入アプリケーション１６５０は、環境１６０２をセットアップするようにコントローラ１６０１に指示することができる。環境１６０２は、例えば、リソースを環境１６０２に割り当てるか、またはアサインすることによって、ＩＴシステムを配備または構築するコントローラ１６０１ａを備えることができる。
【０２６０】
図１６Ｆは、環境１６０２、１６０３、１６０４がそれぞれクラウドとして動作し、コントローラを備える場合も、備えない場合もある環境で使用され得るユーザインターフェース１６３２、１６３３、１６３４を示す。ユーザインターフェース１６３２、１６３３、１６３４（それぞれ、環境１６０２、１６０３、１６０４に対応する）は、それぞれ、ユーザインターフェースと環境との接続を管理するメインコントローラ１６０１を通じて接続することができる。代替的、または追加的に、インターフェース１６４０ａ（コンソールの形態をとることができる）を環境１６０２に直接的に結合してよく、インターフェース１６４０ｂ（コンソールの形態をとることができる）を環境１６０３に直接的に結合してよく、インターフェース１６４０ｃ（コンソールの形態をとることができる）を環境１６０４に直接的に結合してよい。メインコントローラ１６０１との接続が分離されているか、切断されているか、または無効にされているかに関わらず、ユーザは、インターフェースのうちの１つまたは複数を使用して、環境またはクラウドを使用することができる。
【０２６１】
変更管理サポートのためのシステムのクローニング及びバックアップ
環境１６０２、１６０３、１６０４のいくつかは、開発者が使用する典型的なセットアップソフトウェアのクローンであり得る。また、これらの環境は、例えば、異なる位置にある別のデータセンタの環境をクローンすることで位置が原因の遅延を削減するなど、拡張の方法として、現在の作業環境のクローンとすることもできる。
【０２６２】
したがって、システム及びリソースを個別の環境またはサブシステムにセットアップするメインコントローラは、ＩＴシステムの一部のクローニングまたはバックアップを可能にし得ることを理解されたい。これは、本明細書で説明するように、テスト及び変更管理で使用することができる。このような変更には、コード、構成ルール、セキュリティパッチ、テンプレートへの変更及び／または他の変更が含まれ得るが、これらに限定されない。
【０２６３】
例示的な実施形態によれば、本明細書に説明されるＩＴシステムまたはコントローラは、１つまたは複数の環境をクローンするように構成され得る。新しい環境またはクローン環境には、元の環境と同じリソースを備える場合と、備えない場合がある。例えば、新しい環境またはほぼクローンされた環境では、物理リソース及び／または仮想リソースの全く異なる組み合わせを使用することが望ましいか、あるいは必要になる場合がある。使用の最適化を管理することができる異なる位置または時間帯に環境をクローンすることが望ましい場合がある。仮想環境に環境をクローンすることが望ましい場合がある。環境のクローンの際、コントローラまたはメインコントローラのグローバルシステムルール２１０及びグローバルテンプレート２３０は、様々なタイプのハードウェアを構成及び／または実行する方法に関する情報を備えることができる。システムルール２１０内の構成ルールは、特定の利用可能なリソースを考慮して、リソース及びアプリケーションがより最適になるように、リソースの配置及び使用を指示することができる。
【０２６４】
メインコントローラ構造は、システム及びリソースを別個の環境またはサブシステムにセットアップする機能を提供し、クローン環境のための構造を提供し、開発環境を作成するための構造を提供し、及び／またはアプリケーション及び／またはリソースの標準化されたセットを配備するための構造を提供する。このようなアプリケーションまたはリソースには、例えば、アプリケーションの開発及び／または実行、あるいはＩＴシステム及び他の災害復旧アプリケーションの一部のバックアップまたはバックアップからの復元（例えば、ＬＡＭＰ（ａｐａｃｈｅ、ｍｙｓｑｌ、ｐｈｐ）スタック、ウェブフロントエンド及びｒｅａｃｔ／ｒｅｄｕｘを実行するサーバを含むシステム、ならびにｎｏｄｅ．ｊｓを実行するリソースならびにｍｏｎｇｏデータベース及び他の標準化された「スタック」）に使用可能なものを含み得るが、これらに限定されない。場合により、メインコントローラは、別の環境のクローンである環境を配備し得、元の環境を作成するために使用された構成ルールのサブセットから構成ルールを派生させることがある。
【０２６５】
例示的な実施形態によれば、システムまたはシステムのサブセットの変更管理は、１つまたは複数の環境、及びそのような環境の構成ルールまたは構成ルールのサブセットをクローンすることによって実行することができる。例えば、コード、構成ルール、セキュリティパッチ、テンプレートへの変更、ハードウェアの変更、コンポーネント及び依存アプリケーションの追加／削除、ならびにその他の変更を行うために、変更が必要になる場合がある。
【０２６６】
例示的な実施形態によれば、システムに対するそのような変更は、変更の直接的な手動入力のエラーを回避するために自動化され得る。変更は、稼働中のシステムに変更を自動的に実施する前に、開発環境でユーザがテストすることができる。例示的な実施形態によれば、本番環境と同じ構成ルールを使用して構成される環境を、コントローラを使用して、自動的に電源をオンにする、プロビジョニングする及び／または構成することによって、稼働中の本番環境をクローンすることができる。クローン環境は、実行して稼働させることができる（一方、バックアップ環境は、変更をロールバックする必要がある場合に備えて、好適には緊急用にそのままにしておくことができる。これは、システムルール２１０、テンプレート２３０及び／またはシステム状態２２０を使用して、上の図１〜図１６Ｆを参照して説明したような新しいシステムまたは環境を作成、構成及び／またはプロビジョニングするために、コントローラを使用して行うことができる。後で本番環境に実装する変更をテストするために、新しい環境を開発環境として使用することができる。コントローラは、そのような環境のインフラストラクチャを、ソフトウェアで定義された構造から開発環境に生成することができる。
【０２６７】
本明細書で定義される本番環境とは、開発及びテスト専用の環境、すなわち開発環境とは対照的に、システムを動作させるために使用されている環境を意味する。
【０２６８】
本番環境がクローンされると、インフラストラクチャまたはクローン開発環境は、本番環境と同様に、グローバルシステムルール２１０に従ってコントローラによって構成及び生成される。開発環境の変更は、コード、テンプレート２３０（既存のテンプレートの変更または新しいテンプレートの作成に関連する変更のいずれか）、セキュリティ及び／またはアプリケーションまたはインフラストラクチャ構成に対して行うことができる。開発環境に実装された新しい変更が、開発及び／またはテストを通じて必要に応じて準備されると、システムは自動的に開発環境に変更を加え、その後、本番環境として稼働状態になるか、配備されることになる。次に、新しいシステムルール２１０は、環境のコントローラ及び／または特定の環境に対してシステムルールの変更を適用するメインコントローラのいずれかにアップロードされる。システム状態２２０は、コントローラ内で更新され、追加または修正されたテンプレート２３０を実装することができる。したがって、インフラストラクチャの完全なシステム知識は、それを再作成する機能と共に、開発環境及び／またはメインコントローラによって維持され得る。本明細書で使用される完全なシステム知識には、リソースの状態、リソースの利用可能性及びシステム構成のシステム知識が含まれ得るが、これらに限定されない。完全なシステム知識は、コントローラによって、システムルール２１０、システム状態２２０から収集され得る、及び／またはインバンド管理接続２７０（複数可）、アウトオブバンド管理接続２６０（複数可）及び／またはＳＡＮ接続２８０（複数可）を使用してリソースを問い合わせることによって、収集され得る。リソースはとりわけ、リソース、ネットワークまたはアプリケーション使用率、構成の状態または利用可能性を判断するために問い合わせることができる。
【０２６９】
クローンされたインフラストラクチャまたは環境は、システムルール２１０を介して定義されたソフトウェアであってもよいが、これは必須ではない。クローンされたインフラストラクチャまたは環境は、一般に、フロントエンドまたはユーザインターフェースと、計算、ネットワーク、ストレージ及び／またはアプリケーションネットワーキングリソースを含むことも、含まないこともある１つまたは複数の割り当てリソースとを備えてもよく、備えなくてもよい。この環境は、フロントエンド、ミドルウェア及びデータベースとして構成することも、しないこともできる。サービスまたは開発環境は、本番環境のシステムルール２１０でブートすることができる。コントローラが使用するために割り当てられるインフラストラクチャまたは環境は、特にクローンのためにソフトウェアで定義される場合がある。したがって、環境は、システムルール２１０によって配備可能であり、同様の手段によってクローン可能である。クローン環境または開発環境は、変更が望まれる前または変更が望まれるときに、システムルール２１０を使用してローカルまたはメインコントローラによって自動的にセットアップされ得る。
【０２７０】
本番環境のデータは、開発環境が本番環境から分離されるまで、読み取り専用のデータストレージに書き込まれてよく、その後、開発環境によって開発及びテストプロセスで使用されることになる。
【０２７１】
ユーザまたはクライアントは、本番環境がオンラインである間に、開発環境で変更を行い、テストすることができる。データストレージ内のデータは開発中に変更されることがあり、開発環境で変更がテストされる。揮発性または書き込み可能なシステムでは、開発環境がセットアップまたは配備された後に、本番環境のデータとのホット同期も使用することができる。システム、アプリケーション及び／または環境に対する所望の変更を開発環境に対して行い、テストすることができる。次に、システムルール２１０のスクリプトに対して所望の変更を行い、環境またはシステム全体及びメインコントローラに対して新しいバージョンを作成する。
【０２７２】
別の例示的な実施形態によれば、新しく開発された環境は、その後、以前の本番環境が維持されるか、または完全に機能する一方で、新しい本番環境として自動的に実装されてもよく、したがって、大量のデータを失うことなく、以前の状態の本番環境への復帰が可能である。次に、システムルール２１０内の新しい構成ルールで開発環境がブートされ、データベースが本番データベースと同期され、書き込み可能データベースに切り替えられる。その後、元の本番データベースを読み取り専用データベースに切り替えることができる。以前の本番環境に戻すことが望ましい場合には、以前の本番環境は、以前の本番環境のコピーとして、必要な期間そのまま維持される。
【０２７３】
環境は、物理ホスト及び／または仮想ホスト、ネットワーク及びその他のリソースを含むことができる単一のサーバまたはインスタンスとして構成することができる。別の例示的な実施形態では、環境は、物理ホスト及び／または仮想ホスト、ネットワーク及び他のリソースを含む複数のサーバとすることができる。例えば、ロードバランシングされたインターネット向けアプリケーションを形成する複数のサーバが存在してよく、それらのサーバは、複数のＡＰＩ／ミドルウェアアプリケーション（１つまたは複数のサーバ上でホストされてもよい）に接続されてよい。環境のデータベースは、ＡＰＩが環境内でクエリを通信する１つまたは複数のデータベースを備えることができる。環境は、静的または揮発性の形態でシステムルール２１０から構築することができる。環境またはインスタンスは、仮想的であっても、物理的であっても、それぞれの組み合わせであってもよい。
【０２７４】
アプリケーションの構成ルールまたはシステムルール２１０内のシステムの構成ルールは、様々な計算バックエンド（例えば、ベアメタル、ＡＭＤ  ｅｐｙｃサーバ、ｑｅｍｕ／ｋｖｍ上のＩｎｔｅｌ  Ｈａｓｗｅｌｌ）を指定することができ、新しい計算バックエンド上でアプリケーションまたはサービスを実行する方法に関するルールを含むことができる。したがって、例えば、テスト用のリソースの利用可能性が低下する状況がある場合には、アプリケーションを仮想化することができる。
【０２７５】
本明細書に説明される例を使用し、これらによれば、テスト環境は、元の環境が物理リソースを使用する仮想リソース上に配備され得る。図１〜図１８Ｂを参照して本明細書に説明されるコントローラを使用し、さらに本明細書に説明するように、システムまたは環境は、物理環境から、全体的または部分的に仮想リソースを備える場合も、備えない場合もある環境にクローンされ得る。
【０２７６】
図１７Ａは、システム１００が、コントローラ１７０１及び、１つまたは複数の環境、例えば、１７０２、１７０３、１７０４を備える例示的な実施形態を示す。システム１００は静的システムであってよく、すなわち、アクティブなユーザデータがシステムの状態を絶えず変化させたり、頻繁にデータを操作したりしないシステム、例えば、静的ウェブページのみをホストするシステムであってもよい。システムは、ユーザ（またはアプリケーション）インターフェース１１０に結合することができる。
【０２７７】
コントローラ１７０１は、本明細書に説明されるコントローラ２００／１４０１／１５０１／１６０１と同様の方法で構成することができ、同様に、グローバルシステムルール２１０、コントローラロジック２０５、テンプレート２３０及びシステム状態要素２２０を含むことができる。コントローラ１７０１は、本明細書の図１４Ａ〜図１６Ｆを参照して説明したような方法で、１つまたは複数の他のコントローラまたは環境に結合することができる。コントローラ１７０１のグローバルルール２１０は、他のコントローラ及び／または環境を管理及び制御することができるルールを含むことができる。そのようなグローバルルール２１０、コントローラロジック２０５、システム状態２２０及びテンプレート２３０を使用して、本明細書の図１〜図１６Ｆを参照して説明したのと同様の方法で、コントローラ１７０１を通じてシステムまたは環境をセットアップ、プロビジョニング及び配備することができる。各環境は、他の環境に関して含む環境の動作を定義するグローバルシステムルール２１０のサブセットを使用して構成することができる。
【０２７８】
グローバルシステムルール２１０は、変更管理ルール１７１１を備えることもできる。変更管理ルール１７１１は、システム１００、グローバルシステムルール２１０及び／またはコントローラロジック２０５への変更が望まれ得る場合に使用され得るルール及び／または指示のセットを備える。変更管理ルール１７１１は、ユーザまたは開発者が変更を開発し、テスト環境で変更をテストし、その後、変更をシステムルール２１０内の構成ルールの新しいセットに自動的に変換することによって変更を実施することを可能にするように構成することができる。変更管理ルール１７１１は、（図１７Ａに示すように）グローバルシステムルール２１０のサブセットであってよく、またはグローバルシステムルール２１０とは別個であってよい。変更管理ルールは、グローバルシステムルール２１０のサブセットを使用することができる。例えば、グローバルシステムルール２１０は、新しい環境を作成するように構成された環境作成ルールのサブセットを備えることができる。変更管理ルール１７１１は、システム１００の一部または全ての態様をコピー及びクローンするために、コントローラ１７０１によって構成及びセットアップされたシステムまたは環境をセットアップ及び使用するように構成することができる。変更管理ルール１７１１は、テスト及び実装のためにシステムのクローンを使用することによって、実装前に、システムに対して提案された新しい変更のテストを可能にするように構成することができる。
【０２７９】
図１７Ａに示されるようなクローン１７０５は、特定の環境またはシステム１００の一部のルール、ロジック、アプリケーション及び／またはリソースを備えることができる。クローン１７０５は、システム１００と同様の、または異なるハードウェアを備えることができ、仮想リソースを使用してもよく、使用しなくてもよい。クローン１７０５は、アプリケーションとしてセットアップ可能である。クローン１７０５は、システム１００またはコントローラ１７０１のシステムルール２１０内の構成ルールを使用してセットアップ及び構成することができる。クローン１７０５は、コントローラを備えてもよく、備えなくてもよい。クローン１７０５は、上でより詳細に説明したように、割り当てられたネットワーク、コンピューティングリソース、アプリケーションネットワーク及び／またはデータストレージリソースを備えることができる。このようなリソースは、コントローラ１７０１によって制御される変更管理ルール１７１１を使用して割り当てることができる。クローン１７０５は、ユーザがクローン１７０５に変更を加えることを可能にするユーザインターフェースに結合することができる。ユーザインターフェースは、システム１００のユーザインターフェース１１０と同じであっても、異なっていてもよい。クローン１７０５は、システム１００全体、または１つまたは複数の環境及び／またはコントローラなどのシステム１００の一部に使用することができる。クローン１７０５は、システム１００の完全なコピーであっても、そうでなくてもよい。クローン１７０５は、完全に選択的に有効及び／または無効にすることができ、及び／または単一方向の読み取り及び／または書き込み接続に変換することができる、インバンド管理接続２７０、アウトオブバンド管理接続２６０及び／またはＳＡＮ接続２８０を介してシステム１００に結合することができる。したがって、クローン環境１７０５がテスト中に本番環境から分離されるとき、またはクローン環境１７０５が新しい本番環境としてオンラインになる準備ができるまで、クローン環境１７０５内のデータへの接続を変更して、クローンデータを読み取り専用にすることができる。例えば、クローン１７０５に環境１７０２へのデータ接続がある場合、このデータ接続は分離のために読み取り専用にすることができる。
【０２８０】
任意のバックアップ１７０６は、システム全体、または１つまたは複数の環境及び／またはコントローラなどのシステムの一部に使用してもよく、または使用しなくてもよい。バックアップ１７０６は、上でより詳細に説明したように、ネットワーク、計算、アプリケーションネットワーク及び／またはデータストレージリソースを備えることができる。バックアップ１７０６は、コントローラを備えてもよく、備えなくてもよい。バックアップ１７０６は、システム１００の完全なコピーであってよい。バックアップ１７０６は、アプリケーションとして、またはシステム１００と同様の、または異なるハードウェアを使用してセットアップすることができる。バックアップ１７０６は、完全に選択的に有効及び／または無効にすることができ、及び／または単一方向の読み取り及び／または書き込み接続に変換することができる、インバンド管理接続２７０、アウトオブバンド管理接続２６０及び／またはＳＡＮ接続２８０を介してシステム１００に結合することができる。
【０２８１】
図１７Ｂは、システム変更管理で図１７Ａのクローン及びバックアップシステムを使用するための例示的なプロセスフローを示す。ステップ１７８５において、ユーザまたは管理アプリケーションは、システムに対する変更を開始する。このような変更には、コード、構成ルール、セキュリティパッチ、テンプレートへの変更、ハードウェアの変更、コンポーネント及び／または依存アプリケーションの追加／削除ならびにその他の変更が含まれ得るが、これらに限定されない。ステップ１７８６において、コントローラ１７０１は、図１４Ａ〜図１６Ｆに関して説明した方法で環境をセットアップして、クローン環境１７０５となる（ここで、クローン環境は、それ自体の新しいコントローラを有してもよいか、または元の環境に対して同じコントローラを使用してもよい）。
【０２８２】
ステップ１７８７において、コントローラ１７０１は、変更管理ルール１７１１を含むグローバルルール２１０を使用して、システムの１つまたは複数の環境（例えば、「本番環境」）の全てまたは一部を、クローン環境１７０５（例えば、ここでクローン環境１７０５は、「開発環境」として機能することができる）にクローンすることができる。したがって、コントローラ１７０１は、リソースを識別して割り当て、システムルール２１０を使用して、クローンリソースをセットアップして割り当て、データ、構成、コード、実行ファイル及びアプリケーションの起動に必要な他の情報のうちのいずれかを環境からクローンにコピーする。ステップ１７８８において、コントローラ１７０１は、任意には、システムルール２１０内の構成ルールを使用して（コントローラの有無に関わらず）バックアップ１７０６として機能する別の環境をセットアップすることによってシステムをバックアップし、テンプレート２３０、コントローラロジック２０５及びグローバルルール２１０をコピーする。
【０２８３】
クローン１７０５が本番環境から作成された後、クローン１７０５は、クローンのコード、構成ルール、セキュリティパッチ、テンプレートへの変更及びその他の変更を行うことができる開発環境として使用することができる。ステップ１７８９において、開発環境への変更は、実装の前にテストすることができる。テスト中、クローン１７０６は、本番環境（システム１００）またはシステムの他のコンポーネントから分離することができる。これは、コントローラ１７０１に、システム１００とクローン１７０６との間の接続のうち１つまたは複数を選択的に無効にすることによって（例えば、インバンド管理接続２７０を無効にし、及び／またはアプリケーションネットワーク接続を無効にすることによって）実行することができる。ステップ１７９０では、変更された開発環境の準備ができているかどうかが判定される。ステップ１７０９において、開発環境がまだ準備できていないと判定された場合（これは、通常、開発者によって行われる判定である）、プロセスフローは、クローン環境１７０５に対するさらなる変更のためにステップ１７８９に戻る。ステップ１７９０において、開発環境が準備できていると判定された場合、ステップ１７９１において、開発環境と本番環境を切り替えることができる。すなわち、コントローラは、開発環境１７０５を新しい本番環境に変更し、開発／新しい本番環境への移行が完了し良好な状態になるまで、以前の本番環境を維持することができる。
【０２８４】
図１８Ａは、システムの変更管理においてセットアップされ使用され得るシステム１００の別の例示的な実施形態を示す。図１８Ａの例では、システム１００は、コントローラ１８０１及び、１つまたは複数の環境１８０２、１８０３、１８０４、１８０５を備える。システムは、クローン環境１８０７及びバックアップシステム１８０８と共に示されている。
【０２８５】
コントローラ１８０１は、本明細書に説明されるコントローラ２００／１４０１／１５０１／１６０１／１７０１と同様の方法で構成され、グローバルシステムルール２１０、コントローラロジック２０５、テンプレート２３０及びシステム状態２２０の要素を含むことができる。コントローラ１８０１は、本明細書の図１４Ａ〜図１６Ｆを参照して説明したような方法で、１つまたは複数の他のコントローラまたは環境に結合することができる。コントローラ１８０１のグローバルルール２１０は、他のコントローラ及び／または環境を管理及び制御することができるルールを含むことができる。そのようなグローバルルール２１０、コントローラロジック２０５、システム状態２２０及びテンプレート２３０を使用して、本明細書の図１〜図１７Ｂを参照して説明したのと同様の方法で、コントローラ１８０１を通じて、システムまたは環境をセットアップ、プロビジョニング及び配備することができる。各環境は、他の環境に関する動作を含む環境の動作を定義するグローバルルール２１０のサブセットを使用して構成することができる。
【０２８６】
グローバルルール２１０は、変更管理ルール１８１１を備えることもできる。変更管理ルール１８１１は、システム、グローバルルール及び／またはロジックへの変更が望まれる場合に使用され得るルール及び／または指示のセットを備えてよい。変更管理ルールは、ユーザまたは開発者が変更を開発し、テスト環境で変更をテストし、その後、変更をシステムルール２１０内の構成ルールの新しいセットに自動的に変換することによって変更を実施することを可能にするように構成することができる。変更管理ルール１７１１は、（図１８Ａに示すように）グローバルシステムルール２１０のサブセットであってよく、またはグローバルシステムルール２１０とは別個であってよい。変更管理ルール１７１１は、グローバルシステムルール２１０のサブセットを使用することができる。例えば、グローバルシステムルール２１０は、新しい環境を作成するように構成された環境作成ルールのサブセットを備えることができる。変更管理ルール１８１１は、システム１００の一部または全ての態様をコピー及びクローンするために、コントローラ１８０１によってセットアップ及び配備されたシステムまたは環境をセットアップ及び使用するように構成することができる。変更管理ルール１８１１は、テスト及び実装のためにシステムのクローンを使用することによって、実装前に、システムに対して提案された新しい変更のテストを可能にするように構成することができる。
【０２８７】
図１８Ａに示されるように、クローン環境１８０７は、１つまたは複数の環境に割り当てられ、コントローラ１８０１のグローバルシステムルール２１０及び変更管理ルール１８１１に従ってセットアップされ得る、ルール、コントローラロジック、テンプレート、システム状態データ及び割り当てられたリソース１８２０を有するコントローラ１８０７ａを備え得る。バックアップシステム１８０８はさらに、１つまたは複数の環境に割り当てられ、コントローラ１８０１のグローバルシステムルール２１０及び変更管理ルール１８１１に従ってセットアップされ得る、ルール、コントローラロジック、テンプレート、システム状態データ及び割り当てられたリソース１８２１を有するコントローラ１８０８ａを備え得る。システムは、ユーザ（またはアプリケーション）インターフェース１１０または別のユーザインターフェースに結合することができる。
【０２８８】
クローン環境１８０７は、特定の環境またはシステムの一部のルール、ロジック、テンプレート、システム状態、アプリケーション及び／またはリソースを備えることができる。クローン１８０７は、システム１００と同様の、または異なるハードウェアを備えることができ、クローン１８０７は、仮想リソースを使用しても、使用しなくてもよい。クローン１８０７は、アプリケーションとしてセットアップ可能である。クローン１８０７は、環境のために、システム１００またはコントローラ１８０１のシステムルール２１０内の構成ルールを使用してセットアップ及び構成することができる。クローン１８０７は、コントローラを備えていても、備えていなくてもよく、本番環境とコントローラを共有してもよい。クローン１８０７は、上でより詳細に説明したように、割り当てられたネットワーク、コンピューティングリソース、アプリケーションネットワーク及び／またはデータストレージリソースを備えることができる。このようなリソースは、コントローラ１８０１によって制御される変更管理ルール１８１１を使用して割り当てることができる。クローン１８０７は、ユーザがクローン１８０７に変更を加えることを可能にするユーザインターフェースに結合することができる。ユーザインターフェースは、システム１００のユーザインターフェース１１０と同じであっても、異なっていてもよい。
【０２８９】
クローン１８０７は、システム全体、または１つまたは複数の環境及び／またはコントローラなどのシステムの一部に使用することができる。例示的な実施形態では、クローン１８０７は、環境１８０２のデータリソース１８２０に結合されたホットスタンバイデータリソース１８２０ａを含むことができる。ホットスタンバイデータリソース１８２０ａは、クローン１８０７のセットアップ時及び変更のテスト時に使用することができる。ホットスタンバイデータリソース１８２０ａは、例えば、図１８Ｂに関して本明細書に説明されるように、変更管理の間、ストレージリソース１８２０から選択的に切断可能であるか、または分離され得る。クローン１８０７は、システム１００の完全なコピーであっても、そうでなくてもよい。クローン１８０７は、完全に選択的に有効及び／または無効にすることができ、及び／または単一方向の読み取り及び／または書き込み接続に変換することができる、インバンド管理接続２７０、アウトオブバンド管理接続２６０及び／またはＳＡＮ接続２８０を介してシステム１００に結合することができる。したがって、クローン環境１８０７がテスト中に本番環境から分離されるとき、またはクローン環境が新しい本番環境としてオンラインになる準備ができるまで、クローン環境１８０７内の揮発性データへの接続を変更して、クローンデータを読み取り専用にすることができる。
【０２９０】
古い本番環境を新しい本番環境に切り替える場合、コントローラ１８０１は、フロントエンド、ロードバランサまたは他のアプリケーションもしくはリソースに、新しい本番環境を指すように指示することができる。したがって、ユーザ、アプリケーションリソース及び／または他の接続は、変更が行われるときにリダイレクトされ得る。これは、例えば、ｉｐ／ｉｐｏｉｂアドレス、ｉｎｆｉｎｉｂａｎｄ  ＧＵＩＤ、ｄｎｓサーバ、ｉｎｆｉｎｉｂａｎｄパーティション／ｏｐｅｎｓｍ構成のリスト変更、または、ネットワーキングリソースに指示を送信することによって実行され得るソフトウェア定義ネットワーク（ＳＤＮ）構成の変更を含むがこれらに限定されない方法によって実行され得る。フロントエンド、ロードバランサまたは他のアプリケーション及び／またはリソースは、システム、環境及び／または他のアプリケーションを指し得、データベース、ミドルウェア及び／または他のバックエンドを含むがこれらに限定されない。このようなロードバランサを変更管理に使用して、古い本番環境から新しい環境に切り替えることができる。
【０２９１】
クローン１８０７及びバックアップ１８０８は、システムに対する変更の態様を管理する際にセットアップされ、使用され得る。このような変更には、コード、構成ルール、セキュリティパッチ、テンプレートへの変更、ハードウェアの変更、コンポーネント及び／または依存アプリケーションの追加／削除ならびにその他の変更が含まれ得るが、これらに限定されない。バックアップ１８０８は、システム全体、または１つまたは複数の環境及び／またはコントローラ１８０１などのシステムの一部に使用することができる。バックアップ１８０８は、上でより詳細に説明したように、ネットワーク、コンピューティングリソース、アプリケーションネットワーク及び／またはデータストレージリソースを備えることができる。バックアップ１８０８は、コントローラを備えてもよく、備えなくてもよい。バックアップ１８０８は、システム１００の完全なコピーであってもよい。バックアップ１８０８は、バックアップに含まれる構成ルールからシステム／環境／アプリケーションを再構築するために必要なデータを備えることができ、全てのアプリケーションデータを含むことができる。バックアップ１８０８は、アプリケーションとして、またはシステム１００と同様の、または異なるハードウェアを使用してセットアップすることができる。バックアップ１８０８は、選択的に有効及び／または無効にすることができ、及び／または一方向の読み取り及び／または書き込み接続に変換することができる、インバンド管理接続２７０、アウトオブバンド管理接続２６０及び／またはＳＡＮ接続２８０を介してシステム１００に結合することができる。
【０２９２】
図１８Ｂは、変更管理における図１８Ａのシステムの使用を示す例示的なプロセスフローであり、特に、図１８Ａのシステムが揮発性データを含む場合、またはデータベースが書き込み可能な場合を示す。このようなデータベースは、システム内の環境によって使用されるストレージリソースの一部である可能性がある。ステップ１８７０では、システムは、グローバルシステムルールを使用して配備される（本番環境を含む）。
【０２９３】
次に、ステップ１８７１において、変更管理ルール１８１１を含むグローバルシステムルール２１０と、メインコントローラ１８０１またはクローン環境内のコントローラによるリソース割り当てとを使用して、クローン環境がシステムへの書き込みを禁止される読み取り専用環境を作成するために、本番環境がクローンされる。クローン環境はその後、開発環境として使用することができる。
【０２９４】
ステップ１８７２では、ホットスタンバイ１８２０ａが有効になり、システム１００内で変更されている任意の揮発性データを格納するためにクローン環境１８０７に割り当てられる。クローンデータが更新され、開発環境内の新しいバージョンを更新データでテストすることができる。ホット同期データは、いつでもオフにすることができる。例えば、古い環境または本番環境から開発環境への書き込みがテストされているときに、ホット同期データをオフにすることができる。
【０２９５】
次に、ステップ１８７３において、ユーザは、クローン環境１８０７を開発環境として使用して、変更を行うことができる。次に、ステップ１８７４で、開発環境に対する変更がテストされる。ステップ１８７５では、変更された開発環境の準備ができているかどうかが判定される（通常、このような判定は開発者によって行われる）。ステップ１８７５において、変更の準備ができていないと判定された場合、ユーザが戻って開発環境に他の変更を加えることができるように、プロセスフローはステップ１８７３に戻ることができる。ステップ１８７５において、変更を有効にする準備ができていると判定された場合、プロセスフローはステップ１８７６に進み、ここで、特定の環境に関してシステムまたはコントローラ内で構成ルールが更新され、新しい更新された環境を配備するために使用されることになる。
【０２９６】
ステップ１８７７において、次に、開発環境（または、新しい環境）が、稼働前に、所望のリソース及びハードウェア割り当てを有する所望の最終構成で変更を伴って再配備されてよい。次のステップ１８７８において、元の本番環境の書き込み機能が無効にされ、元の本番環境は、読み取り専用になる。元の本番環境が読み取り専用である一方、１８７８の一部として、元の本番環境（または、おそらく、新しい本番環境も）からの新しいデータはいずれも、移行データとしてキャッシュ及び識別されてよい。一例として、データは、データベースサーバまたは他の適切な場所（例えば、共有環境）にキャッシュされてよい。次に、開発環境（または、新しい環境）と古い本番環境が、ステップ１８７９で切り替えられて、開発環境（または、新しい環境）が、本番環境になる。
【０２９７】
この切り替えの後、新しい本番環境は、ステップ１８８０で、書き込み可能にされる。ステップ１８８１で、新しい本番環境が開発者が決定したように機能しているとみなされると、切り替えプロセス中のデータ損失は全て（このようなデータはステップ１８７８でキャッシュされている）は、データが新しい環境に書き込まれて、ステップ１８８４で照合されてよい。このような照合の後、変更が完了する（ステップ１８８５）。
【０２９８】
ステップ１８８１の結果、新しい本番環境が機能していない（例えば、システムを古いシステムに戻す必要がある問題が識別される）と判断された場合、ステップ１８８２で、環境は戻されて、古い本番環境が再び本番環境になる。ステップ１８２の一部として、コントローラ１８０１の対象環境の構成ルールは、現在戻されている本番環境に対して使用されていた以前のバージョンに戻される。
【０２９９】
ステップ１８８３において、データベースの変更が、例えば、キャッシュデータを用いて決定されてよく、データは、古い構成ルールを有する古い本番環境に復元される。ステップ１８８３をサポートするために、データベースは、データベースに行われた変更のログを維持できるので、ステップ１８８３は、無効にすることが必要な可能性のある変更を判別できる。キャッシュデータを追跡及び時間を記録するバックアップデータベースを使用して、上記のようにデータをキャッシュしてよく、クロックを戻して、どの変更を行ったかを判別することができる。スナップショット及びログをこの目的のために使用してよい。
【０３００】
１８８３でキャッシュデータを復元した後、再び、開始したい場合、プロセスはステップ１８７１に戻ってよい。
【０３０１】
本明細書に記載の変更管理システムの例は、例えば、ハードウェアまたはソフトウェアを更新、追加、もしくは、削去する時、ソフトウェアにパッチを適用する時、システム障害が検出された時、ハードウェア障害または検出中にホストを移行させる時、動的なリソース移行のために、構成ルールもしくはテンプレートの変更のために、及び／または、任意の他のシステムに関連する変更を行う際に、使用されてよい。コントローラ１８０１またはシステム１００は、障害を検出するように構成されてよく、障害を検出すると、システムがコントローラに利用可能な他のハードウェアに、変更管理ルールまたは既存の構成ルールを自動的に実施してよい。使用可能な障害検出法の例は、ホストにｐｉｎｇすること、アプリケーションにクエリすること、及び、様々なテストもしくはテストスイートを実行することを含むが、これらに限定されない。本明細書に記載の変更管理構成ルールは、障害が検出されると、実施されてよい。このようなルールは、障害が検出されると、バックアップ環境の自動生成、コントローラが実施しているデータもしくはリソースの自動的な移行をトリガしてよい。バックアップリソースの選択は、リソースパラメータに基づいてよい。このようなリソースパラメータは、使用情報、速度、構成ルール、並びに、データ容量及び使用量を含んでよいが、これらに限定されない。
【０３０２】
本明細書に記載するように、変更が生じる時はいつも、コントローラは、変更のログと、実際に実行されたことを作成する。セキュリティまたはシステムの更新のために、本明細書に記載のコントローラは、構成ルールに従って自動的にオンオフし、且つ、ＩＴシステム状態を更新するように構成されてよい。コントローラは、リソースをオフにして電力を節約してよい。コントローラは、時間によって効率を異ならせるためにリソースをオンにしてよい、または、移行してよい。移行時は、構成ルールに従い、環境またはシステムのバックアップまたはコピーが作成されてよい。セキュリティ侵害があった場合、コントローラは、攻撃されたエリアを切り離し、遮断してよい。
【０３０３】
例示の実施形態に関して発明を記載したが、発明の範囲内にある様々な修正を行ってよい。発明へのこのような修正は、本明細書の教示を読むと認識できる。
【０３０４】
付属書類Ａ：ストレージ接続プロセスの例
複数のシステム間でストレージリソースを共有することに関するプロセスの例とルールの例を記載する。これは、ストレージ接続プロセスのほんの一例にすぎず、コンピューティングリソースをストレージリソースに接続する他の技術を使用できることを理解されたい。別段の記載のない限り、これらのルールは、ストレージ接続の開始を試みる全てのシステムに当てはまる。
この付属書類Ａにおける定義
ストレージリソース：ストレージトランスポートを介して共有できるブロック、ファイル、または、ファイルシステム
ストレージトランスポート：ストレージリソースをローカルにまたはリモートに共有する方法。例は、ｉＳＣＳＩ／ｉＳＥＲ、ＮＶＭＥｏＦ、ＮＦＳ、Ｓａｍｂａファイル共有である。
システム：指定されたストレージトランスポートを介してストレージリソースに接続を試みる任意のもの。システムは、任意の数のストレージトランスポートをサポートしてよく、どのトランスポートを使用するべきかをシステム自体が決定できてよい。
読み取り専用：読み取り専用ストレージリソースは、そのストレージリソースが含むデータの修正を許可しない。この制約は、ストレージトランスポートでストレージリソースのエクスポートを処理するストレージデーモンによって課される。さらに保証するために、幾つかのデータストアが、データをバックアップするストレージリソースを読み取り専用に設定してよい（例えば、ＬＶＭ  ＬＶを読み取り専用に設定）。
読み書き（または、揮発性）：読み書き（揮発性）ストレージリソースは、そのコンテンツがストレージリソースに接続するシステムによって修正されてよいストレージリソースである。
ルール：システムが所与のストレージリソースに接続し得るか否かをコントローラが判断する時、従わなければならないルールのセットがある。
１．読み書きストレージリソースは、１つのストレージトランスポートでのみエクスポートされるものとする。
２．読み書きストレージリソースは、１つのシステムによってのみ接続されるものとする。
３．読み書きストレージリソースは、読み取り専用として接続されてはならない。
４．読み取り専用ストレージリソースは、複数のストレージトランスポートでエクスポートされてよい。
５．読み取り専用ストレージリソースは、複数のシステムから接続されてよい。
６．読み取り専用ストレージリソースは、読み書きとして接続されてはならない。
プロセス
接続プロセスを関数と考える場合、接続プロセスは、２つの独立変数を取る。
１．ストレージリソースＩＤ
２．サポートされたストレージトランスポートのリスト（順序によって優先付け）
最初に、要求されたストレージリソースが、読み取り専用か読み書きかを判断する。
読み書きである場合、読み書きストレージリソースは１つの接続に制限されるので、ストレージリソースが既に接続されているか否かをチェックしなければならない。既に接続を有する場合、ストレージリソースを要求しているシステムが、現在接続されているシステムであることを確認する（これは、例えば、再接続の場合に生じる場合がある）。そうでない場合、複数のシステムは同じ読み書きストレージリソースに接続できないので、エラーを出す。要求しているシステムが、このストレージリソースに接続されているシステムである場合、利用可能なストレージトランスポートのうちの１つが、このストレージリソースの現在のエクスポートに一致することを確認する。一致する場合、接続情報を要求しているシステムに伝える。一致しない場合、複数のストレージトランスポートで読み書きストレージリソースを供給できないので、エラーを出す。
読み取り専用ストレージリソース及び接続されていない読み書きストレージリソースに関しては、供給されたストレージトランスポートのリストを順に処理し、そのトランスポートを用いて、ストレージリソースのエクスポートを試みる。エクスポートに失敗すると、エクスポートに成功するまで、または、ストレージトランスポートが無くなるまで、リストの順にエクスポートの試みを継続する。ストレージトランスポートが無くなると、要求しているシステムに、ストレージリソースは接続できなかったことを通知する。エクスポートに成功すると、接続情報と、新しい（リソース、トランスポート）＝＞（システム）関係とをデータベースに記憶する。次に、要求しているシステムは、ストレージトランスポート接続情報を伝えられる。
システム：ストレージ接続は、現在、通常動作中、コントローラと計算デーモンによって行われる。しかしながら、将来の繰り返しは、サービスが、ストレージリソースに直接接続し、計算デーモンをバイパスしてよい。これは、サービスの物理的配備の例の要件であってよく、仮想マシン配備に対しても同じプロセスを使用することは理に適う。
【０３０５】
付属書類Ｂ：ＯｖｅｒｌａｙＦＳへの接続の例
サービスは、ＯｖｅｒｌａｙＦＳを利用して、共通ファイルシステムのオブジェクトを再利用し、サービスパッケージサイズを低減する。
この例のサービスは、３つ以上のストレージリソースを含む。
１．プラットフォーム。これは、ベースのｌｉｎｕｘファイルシステムを含み、読み取り専用でアクセスされる。
２．サービス。これは、サービスのオペレーションに直接関連する全てのソフトウェア（ＮｅｔＴｈｕｎｄｅｒ  ＳｅｒｖｉｃｅＤａｅｍｏｎ、ＯｐｅｎＲＣスクリプト、バイナリ等）を含む。このストレージリソースは、読み取り専用でアクセスされる。
３．揮発性。これらのストレージリソースは、システムに対する全ての変更を含み、（物理的、コンテナ、及び、仮想マシン配備のために）サービス内からＬＶＭによって管理される。
仮想マシンで実行する時、サービスは、以下を行うロジックを含むｉｎｉｔｒａｍｆｓと共にカスタムのＬｉｎｕｘカーネルを用いて、Ｑｅｍｕでカーネルから直接ブート（Ｄｉｒｅｃｔ  Ｋｅｒｎｅｌ  Ｂｏｏｔ）される。
１．利用可能な読み書きディスクからＬＶＭボリュームグループ（ＶＧ）をアセンブル
＊このＶＧは、サービスのための全ての揮発性ストレージデータを含む１つのロジカルボリューム（ＬＶ）を含む。
２．プラットフォーム、サービス、及び、ＬＶをマウント
３．ユニオンファイルシステム（ここでは、ＯｖｅｒｌａｙＦＳ）を用いて、３つのファイルシステムを結合
同じプロセスが、物理的配備に使用できる。１つの選択肢は、ＰＸＥＢｏｏｔまたはＩＰＭＩ  ＩＳＯ  Ｂｏｏｔを介してブートされた軽量ＯＳにリモートでカーネルを提供し、次に、新しい実際のカーネルにｋｅｘｅｃを使用する。または、軽量ＯＳをスキップし、カーネル内に直接、ＰＸＥブートする。このようなシステムは、ストレージリソースに接続するためにカーネルｉｎｉｔｒａｍｆｓの追加のロジックを必要とする場合がある。
ＯｖｅｒｌａｙＦＳ構成は、次のようになり得る。
／―――――――――――＼
｜揮発性レイヤ（ＬＶ）（ＲＷ）｜
＋――――――――――――＋
｜サービスレイヤ（ＲＯ）｜
＋――――――――――――＋
｜プラットフォームレイヤ（ＲＯ）｜
＼――――――――――――/
ＯｖｅｒｌａｙＦＳの幾つかの制限によって、特別なディレクトリ‘／ｄａｔａ’を「アウトオブツリー」としてマーク付けすることが可能になる。このディレクトリは、サービスパッケージを作成する時、‘／ｄａｔａ’ディレクトリを作成すると、サービスに利用可能になる。この特別なディレクトリは、‘ｍｏｕｎｔ−−ｒｂｉｎｄ’を介してマウントされて、ＯｖｅｒｌａｙＦＳ内にはないサブセットの揮発性レイヤへのアクセスを可能にする。これは、ＯｖｅｒｌａｙＦＳの一部である共有ディレクトリをサポートしていないＮＦＳ（ネットワークファイルシステム）等のアプリケーションに必要である。
カーネルファイルシステムレイアウト：
／
＋−−ｐｌａｔｆｏｒｍ／
＋−−ｂｉｎ／
＋−−．．．／
＋−−ｓｅｒｖｉｃｅ／
＋−−ｄａｔａ／［ｏｐｔｉｏｎａｌ］
＋−−ｂｉｎ／
＋−−．．．
＋−−ｖｏｌａｔｉｌｅ 
＋−−ｗｏｒｋ／
＋−−ｒｏｏｔ／
＋−−ｂｉｎ／
＋−−ｄａｔａ／［ｉｆ  ｐｒｅｓｅｎｔ  ｉｎ／ｓｅｒｖｉｃｅ／］
＋−−．．．
＋−−ｎｅｗ＿ｒｏｏｔ／
＋−−．．．
／ｎｅｗ＿ｒｏｏｔディレクトリを作成し、そのディレクトリをＯｖｅｒｌａｙＦＳを構成するためのターゲットとして使用する。ＯｖｅｒｌａｙＦＳが構成されると、／ｎｅｗ＿ｄｉｒｅｃｔｏｒｙ内にｅｘｅｃ＿ｒｏｏｔを行うと、システムは、全ての利用可能なリソースと共に正常に開始する。
【図１】
2021506044.tif 000003
【図２Ａ】
2021506044.tif 000004
【図２Ｂ】
2021506044.tif 000005
【図２Ｃ】
2021506044.tif 000006
【図２Ｄ】
2021506044.tif 000007
【図２Ｅ】
2021506044.tif 000008
【図２Ｆ】
2021506044.tif 000009
【図２Ｇ】
2021506044.tif 000010
【図２Ｈ】
2021506044.tif 000011
【図２Ｉ】
2021506044.tif 000012
【図２Ｊ】
2021506044.tif 000013
【図２Ｋ】
2021506044.tif 000014
【図２Ｌ】
2021506044.tif 000015
【図２Ｍ】
2021506044.tif 000016
【図２Ｎ】
2021506044.tif 000017
【図２Ｏ】
2021506044.tif 000018
【図３Ａ】
2021506044.tif 000019
【図３Ｂ】
2021506044.tif 000020
【図３Ｃ】
2021506044.tif 000021
【図４Ａ】
2021506044.tif 000022
【図４Ｂ】
2021506044.tif 000023
【図５Ａ】
2021506044.tif 000024
【図５Ｂ】
2021506044.tif 000025
【図６Ａ】
2021506044.tif 000026
【図６Ｂ】
2021506044.tif 000027
【図７Ａ】
2021506044.tif 000028
【図７Ｂ】
2021506044.tif 000029
【図７Ｃ】
2021506044.tif 000030
【図７Ｄ】
2021506044.tif 000031
【図８Ａ】
2021506044.tif 000032
【図８Ｂ】
2021506044.tif 000033
【図８Ｃ】
2021506044.tif 000034
【図８Ｄ】
2021506044.tif 000035
【図８Ｅ】
2021506044.tif 000036
【図９Ａ】
2021506044.tif 000037
【図９Ｂ】
2021506044.tif 000038
【図９Ｃ】
2021506044.tif 000039
【図９Ｄ】
2021506044.tif 000040
【図９Ｅ】
2021506044.tif 000041
【図１０】
2021506044.tif 000042
【図１１Ａ】
2021506044.tif 000043
【図１１Ｂ】
2021506044.tif 000044
【図１２】
2021506044.tif 000045
【図１３Ａ】
2021506044.tif 000046
【図１３Ｂ】
2021506044.tif 000047
【図１３Ｃ】
2021506044.tif 000048
【図１３Ｄ】
2021506044.tif 000049
【図１３Ｅ】
2021506044.tif 000050
【図１４Ａ】
2021506044.tif 000051
【図１４Ｂ】
2021506044.tif 000052
【図１４Ｃ】
2021506044.tif 000053
【図１５Ａ】
2021506044.tif 000054
【図１５Ｂ】
2021506044.tif 000055
【図１５Ｃ】
2021506044.tif 000056
【図１６Ａ】
2021506044.tif 000057
【図１６Ｂ】
2021506044.tif 000058
【図１６Ｃ】
2021506044.tif 000059
【図１６Ｄ】
2021506044.tif 000060
【図１６Ｅ】
2021506044.tif 000061
【図１６Ｆ】
2021506044.tif 000062
【図１７Ａ】
2021506044.tif 000063
【図１７Ｂ】
2021506044.tif 000064
【図１８Ａ】
2021506044.tif 000065
【図１８Ｂ】
2021506044.tif 000066
【国際調査報告】
2021506044.tif 000067
2021506044.tif 000068
2021506044.tif 000069
2021506044.tif 000070