(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-30
(54)【発明の名称】タスクを実行するノードの自動選択
(51)【国際特許分類】
G06F 9/50 20060101AFI20240920BHJP
【FI】
G06F9/50 150A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024519037
(86)(22)【出願日】2022-07-01
(85)【翻訳文提出日】2024-03-27
(86)【国際出願番号】 CN2022103297
(87)【国際公開番号】W WO2023050956
(87)【国際公開日】2023-04-06
(32)【優先日】2021-09-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】チュー、シャオジェン
(72)【発明者】
【氏名】チェン、シャオリン
(72)【発明者】
【氏名】カオ、ヤン
(72)【発明者】
【氏名】ヤン、ユンジュアン
(57)【要約】
マネージド・ノード上にタスクを実装する方法、コンピュータ・プログラム製品、およびコンピュータ・システム。2つ以上のマネージド・ノードのうちの1つまたは複数のマネージド・ノード上でAnsibleモジュールにより実行される規定されたタスクが受信される。1つまたは複数のマネージド・ノードは、AnsibleモジュールのhostDecision属性の属性値に基づき決定される。属性値は、primaryNode、allNodes、またはDynamicとすることができ、primaryNodeは、1つまたは複数のマネージド・ノードがプライマリ・ノードであることを要求し、allNodesは、1つまたは複数のマネージド・ノードが2つ以上のマネージド・ノードであることを要求し、Dynamicは、1つまたは複数のマネージド・ノードがランタイム情報に基づき動的に決定されることを要求する。Ansibleモジュールは、1つまたは複数のマネージド・ノード上でタスクを実行するように1つまたは複数のマネージド・ノードに送信される。
【特許請求の範囲】
【請求項1】
マネージド・ノード上にタスクを実装する方法であって、
コンピュータ・システムにおけるAnsible制御ノード内のAnsibleエンジンの1つまたは複数のプロセッサにより、ホストの複数のマネージド・ノードのうちの1つまたは複数のマネージド・ノード上でAnsibleモジュールにより実行されるタスクの規定を受信することと、
前記AnsibleモジュールのhostDecision属性の属性値に基づき前記1つまたは複数のマネージド・ノードを前記1つまたは複数のプロセッサにより決定することであって、前記属性値は、primaryNode、allNodes、およびDynamicからなる群から選択され、primaryNodeは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードから選択されたプライマリ・ノードからなることを要求し、allNodesは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードからなることを要求し、Dynamicは、前記プライマリ・ノードにより取得された、前記複数のマネージド・ノードのうちの前記マネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、前記1つまたは複数のマネージド・ノードが動的に決定されることを要求する、前記決定することと、
前記1つまたは複数のマネージド・ノード上で前記タスクを実行するように、前記1つまたは複数のプロセッサにより前記Ansibleモジュールを前記1つまたは複数のマネージド・ノードに送信することと
を含む、前記方法。
【請求項2】
前記属性値は、primaryNodeまたはDynamicのいずれかである、請求項1に記載の方法。
【請求項3】
前記Ansible制御ノード内のAnsibleインベントリから前記プライマリ・ノードの識別情報を前記1つまたは複数のプロセッサにより受信すること
を含み、前記Ansibleインベントリは、前記複数のマネージド・ノードおよび前記プライマリ・ノードの前記識別情報を記憶する、請求項2に記載の方法。
【請求項4】
エンド・ユーザにより前記Ansibleインベントリに記憶される前記プライマリ・ノードの静的識別情報を前記1つまたは複数のプロセッサにより前記エンド・ユーザから受信すること
を含む、請求項3に記載の方法。
【請求項5】
前記プライマリ・ノードの動的識別情報を前記1つまたは複数のプロセッサにより受信すること
を含む、請求項2に記載の方法。
【請求項6】
前記複数のマネージド・ノードは、前記複数のマネージド・ノードのうちの前記マネージド・ノードが相互にまたは互いに隔離されるようなパブリック・クラウド上にあり、前記プライマリ・ノードの前記動的識別情報を前記受信することは、
各マネージド・ノードから、前記各マネージド・ノードが前記プライマリ・ノードであるという通知を受信すること
を含む、請求項5に記載の方法。
【請求項7】
前記複数のマネージド・ノードは、前記複数のマネージド・ノードのうちの前記マネージド・ノードそれぞれが前記複数のマネージド・ノードのうちの他の前記マネージド・ノードの存在を認識するようなオンプレミス環境内の同じシスプレックスにあり、前記プライマリ・ノードの前記動的識別情報を前記受信することは、
複数のプライマリ・ノードのうちのマネージド・ノードに関する前記1つまたは複数のファクタの前記現ステータスに基づく前記プライマリ・ノードの動的決定を通して前記プライマリ・ノードの前記動的識別情報を受信すること
を含む、請求項5に記載の方法。
【請求項8】
前記マネージド・ノードに関する前記1つまたは複数のファクタは、中央処理ユニット(CPU)キャパシティ・ウェイト、システム環境変数、およびヘルス・ステータスを含む、請求項7に記載の方法。
【請求項9】
前記属性値は、primaryNodeである、請求項2に記載の方法。
【請求項10】
前記属性値は、Dynamicであり、前記方法は、
前記タスクが実行される前記1つまたは複数のマネージド・ノードを、前記複数のマネージド・ノードのうちの前記マネージド・ノードに関する前記1つまたは複数のファクタの前記現ステータスを含む前記ランタイム情報に基づき、前記1つまたは複数のプロセッサにより動的に決定すること
を含む、請求項2に記載の方法。
【請求項11】
前記マネージド・ノードに関する前記1つまたは複数のファクタは、システム環境変数、ヘルス・データ、およびワークロード・ステータスを含む、請求項10に記載の方法。
【請求項12】
前記タスクが実行される前記1つまたは複数のマネージド・ノードを前記動的に決定することは、
前記プライマリ・ノードが前記ランタイム情報に基づき前記1つまたは複数のマネージド・ノードを動的に決定した後に、前記1つまたは複数のマネージド・ノードのリストを前記プライマリ・ノードから前記1つまたは複数のプロセッサにより受信すること
を含む、請求項10に記載の方法。
【請求項13】
前記タスクが実行される前記1つまたは複数のマネージド・ノードを前記動的に決定することは、
前記ランタイム情報を前記プライマリ・ノードから前記1つまたは複数のプロセッサにより受信することと、
前記プライマリ・ノードから受信された前記ランタイム情報に基づき前記1つまたは複数のプロセッサにより前記1つまたは複数のマネージド・ノードを動的に決定することと
を含む、請求項10に記載の方法。
【請求項14】
前記Ansible制御ノードは、前記AnsibleモジュールのhostDecision属性を規定する設定ファイルをさらに含む、請求項1に記載の方法。
【請求項15】
前記Ansible制御ノードは、前記Ansibleモジュールと、実行される前記タスクに関連して前記Ansibleエンジンにより要求されるかまたは必要とされる特化された機能を実行するように構成されたプラグインとを含む、Ansibleギャラクシーをさらに含む、請求項1に記載の方法。
【請求項16】
前記1つまたは複数のマネージド・ノード上で前記Ansibleモジュールにより前記タスクを実行すること
を含む、請求項1に記載の方法。
【請求項17】
コンピュータ可読プログラム・コードが記憶された1つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスを含むコンピュータ・プログラム製品であって、前記プログラム・コードは、マネージド・ノード上にタスクを実装する方法を実装するようにコンピュータ・システムにおけるAnsible制御ノード内のAnsibleエンジンの1つまたは複数のプロセッサにより実行可能な命令を含み、前記方法は、
ホストの複数のマネージド・ノードのうちの1つまたは複数のマネージド・ノード上でAnsibleモジュールにより実行されるタスクの規定を前記1つまたは複数のプロセッサにより受信することと、
前記AnsibleモジュールのhostDecision属性の属性値に基づき前記1つまたは複数のマネージド・ノードを前記1つまたは複数のプロセッサにより決定することであって、前記属性値は、primaryNode、allNodes、およびDynamicからなるグループから選択され、primaryNodeは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードから選択されたプライマリ・ノードからなることを要求し、allNodesは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードからなることを要求し、Dynamicは、前記プライマリ・ノードにより取得された、前記複数のマネージド・ノードのうちの前記マネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、前記1つまたは複数のマネージド・ノードが動的に決定されることを要求する、前記決定することと、
前記1つまたは複数のマネージド・ノード上で前記タスクを実行するように、前記1つまたは複数のプロセッサにより前記Ansibleモジュールを前記1つまたは複数のマネージド・ノードに送信することと
を含む、コンピュータ・プログラム製品。
【請求項18】
前記属性値は、primaryNodeまたはDynamicのいずれかである、請求項17に記載のコンピュータ・プログラム製品。
【請求項19】
コンピュータ・システムにおけるAnsible制御ノード内のAnsibleエンジンの1つまたは複数のプロセッサと、1つまたは複数のメモリと、1つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスとを含む前記コンピュータ・システムであって、前記1つまたは複数のハードウェア・ストレージ・デバイスは、マネージド・ノード上にタスクを実装する方法を実装するように前記1つまたは複数のメモリを介して前記1つまたは複数のプロセッサにより実行可能なプログラム・コードを含み、前記方法は、
ホストの複数のマネージド・ノードのうちの1つまたは複数のマネージド・ノードにより実行されるタスクの規定を前記1つまたは複数のプロセッサにより受信することと、
前記複数のマネージド・ノード上で前記タスクを実行するように構成されたAnsibleモジュールのhostDecision属性の属性値に基づき前記1つまたは複数のマネージド・ノードを前記1つまたは複数のプロセッサにより決定することであって、前記属性値は、primaryNode、allNodes、およびDynamicからなるグループから選択され、primaryNodeは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードから選択されたプライマリ・ノードからなることを要求し、allNodesは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードからなることを要求し、Dynamicは、前記プライマリ・ノードにより取得された、前記複数のマネージド・ノードのうちの前記マネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、前記1つまたは複数のマネージド・ノードが動的に決定されることを要求する、前記決定することと、
前記1つまたは複数のマネージド・ノード上で前記タスクを実行するように、前記1つまたは複数のプロセッサにより前記Ansibleモジュールを前記1つまたは複数のマネージド・ノードに送信することと
を含む、コンピュータ・システム。
【請求項20】
前記属性値は、primaryNodeまたはDynamicのいずれかである、請求項19に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、全般的に、Ansibleエンジンを使用した、Ansibleプラットフォームにおいてタスクを実行するAnsibleモジュールのデプロイメントに関し、特に、Ansibleホスト・グループ内のすべてのマネージド・ノード上ではタスクの実行が要求されないであろうシナリオで、どのマネージド・ノード上でタスクが実行されるかを選択的に決定することに関する。
【背景技術】
【0002】
Ansibleは、Ansible ITプラットフォーム上にデプロイされる情報技術(IT:Information Technology)エンジンである。クラウド・プラットフォームにおいて広く使用されているソフトウェアであるAnsibleエンジンは、Ansibleプレイブックに規定された1つまたは複数のタスクを、Ansibleモジュールを使用して実行することにより、アプリケーションのデプロイメントを自動化する。1つまたは複数のタスクは、ホスト・グループ(以下「ホスト」)のすべてのマネージド・ノード上でAnsibleモジュールにより実行される。ホスト・グループは、Ansibleプレイブックに規定される。ホストのマネージド・ノードは、Ansibleインベントリにおいて特定される。
【0003】
Ansibleプレイブックは、典型的にはYet Another Markup Language(YAML)で記述されるテキスト・スクリプトである。Ansibleプレイブックは、特に、プレイブックの名称、実行される1つまたは複数のタスク、Ansibleインベントリにおいてそのマネージド・ノードが特定されているホスト・グループの識別情報を規定する。
【0004】
ホストはシステム内のカテゴリ特有であってもよく、ホストのマネージド・ノードはカテゴリのインスタンスである。ホスト・カテゴリの例は、ウェブ・サーバ、データベース・サーバ、メール・サーバ、ストレージ・リポジトリなどである。例えば、ホストがウェブ・サーバ特有であれば、ホストの各マネージド・ノードは、インターネット・プロトコル(IP:Internet Protocol)アドレスなどのアドレスにある特定のウェブ・サーバである。
【0005】
Ansibleエンジンは、AnsibleプレイブックおよびAnsibleインベントリを入力として使用してタスクが実行されるマネージド・ノードを選択するために特に使用されるAnsible制御ノードにおいて実行される。
【0006】
Ansibleロールは、Ansibleプレイブックに自動的にロード可能なモジュール、タスク、変数、ファイル、およびテンプレートの、独立した再利用可能なコレクションのためのスケルトンを提供する。よって、AnsibleプレイブックはAnsibleロールのコレクションである。Ansibleロールは相互に独立している。Ansibleギャラクシーは、Ansibleロールのリポジトリである。
【0007】
Ansibleコレクションは、Ansibleコンテンツのディストリビューション形式である。Ansibleプレイブック、ロール、モジュール、およびプラグインを、Ansibleコレクションを使用してパッケージ化および配布できる。
【0008】
図1は、従来技術による、ホスト・グループ150の相互に独立したマネージド・ノード1、2、3、4それぞれでタスク130をAnsibleモジュール111に実行させるために、モジュール111をセキュア・シェル(SSH:Secure Shell)プロトコルを使用してマネージド・ノード1、2、3、4それぞれに送信する、Ansible制御ノード110を示す。タスク130およびホスト・グループ150は、Ansibleプレイブック140に規定されている。ホスト・グループ150のマネージド・ノード1、2、3、4は、Ansibleインベントリ160に規定されている。
【0009】
従来技術において典型的に使用される
図1の構成において、マネージド・ノードにより実行される自動アクションが相互にまたは互いに影響しないように、マネージド・ノードは独立し、隔離されている。したがって、マネージド・ノードのグループは、同じアクションを実行するものとなる。よって、Ansibleプレイブックにおいて「ホスト・グループ」は、マネージド・ノードのグループに対して同じタスクを容易に実行できるように使用される。
【0010】
Ansibleの採用および使用は徐々に増加してきた。多数の異なるプラットフォームがAnsibleエコシステムに加わった。そうしたプラットフォームは、相互にまたは互いに可視となり得るマネージド・ノードをもたらし、1つのマネージド・ノード上で実行されるアクションは他のマネージド・ノードに影響する可能性があり、マネージド・ノードが相互にまたは互いに可視であるシステムは本願明細書においてシステムSと示され、
図1に例示されている。
【0011】
図2は、従来技術による、ホスト・グループ251、252、253それぞれの相互に可視であるマネージド・ノード1、2、3、4上でAnsibleモジュール211がタスクを実行するように、モジュール211を、SSHプロトコルを使用してマネージド・ノード1、2、3、4に送信する、Ansible制御ノード210を示す。
【0012】
タスク230およびホスト・グループ251、252、253がAnsibleプレイブック240に規定されている。ホスト・グループ251、252、253のマネージド・ノード1、2、3、4はAnsibleインベントリ260に規定され、ホスト・グループ251(OSGroup)のみがAnsibleインベントリ260に明示的に示されている。
【0013】
図2において、Ansibleプレイブック240内のPlay1は、ホスト・グループOSGroupと、システムS内のすべてのOSオペレーティング・システム上で実行されるタスクとを規定する。タスクは、2つのコマンド、すなわちcommand1およびcommand2を含み、かかるコマンドはそれぞれ、他のOSオペレーティング・システムに影響しないようになっている。
【0014】
Ansibleプレイブック240内のPlay2は、ホスト・グループnode1.bj.comと、マネージド・ノード1および2を包含するシスプレックス265内で一度のみ実行されるタスクとを規定する。シスプレックスは、複数のコンピュータの複合体内の、OSオペレーティング・システムの独立したインスタンスのクラスタを指す。マネージド・ノード1および2のカップリング・ファシリティ(CF:coupling facility)270への接続性により、マネージド・ノード1および2はカップリング・ファシリティ・リンクを通してデータを共有できる。
【0015】
Ansibleプレイブック240内のPlay3は、独立したアクションを実行するホストOSGroupに再び切り替えることを規定する。
【0016】
システムSによりAnsibleがサポートされることで、ハイブリッド・クラウドの使用のためにシステムSをデプロイできる。しかしながら、Ansibleプレイブック240は、特に以下の2つの問題を生じ得る。
【0017】
Ansibleプレイブックに関する第1の問題は、ホストを切り替えられるようにエンド・ユーザが1つのロジック・プロセスを複数のロジック・プロセスに分割しなければならず、これにより、システムSのプレイブックは他のプラットフォームのものと異なるように見える可能性があり、習熟曲線が生じるということである。
【0018】
Ansibleプレイブックに関する第2の問題は、各タスクが一度実行されるべきか、またはすべてのシステムS上で実行されるべきかをエンド・ユーザが決定しなければならず、これによりエラーが生じて効率が落ちる可能性があるということである。
【0019】
さらに、ハイブリッド・クラウドのシナリオにおいて、Ansibleは最も人気の高いインフラストラクチャ・アズ・コード(IaC:Infrastructure as Code)ツールの1つである。AnsibleプレイブックはIaCアーティファクトである。理想的なケースでは、同じIaCアーティファクトは同じインフラストラクチャをプロビジョニングする。しかしながら、
図2に関して上述した問題が理由で、オートメーションがパブリック・クラウドからオンプレミス環境にシフトされると同じIaCアーティファクト(すなわちAnsibleプレイブック)を使用し続けるのが難しい。
【0020】
図3Aおよび
図3Bは、従来技術による、パブリック・クラウド330のためのAnsibleプレイブック310およびAnsibleインベントリ361ならびにオンプレミス(「On-Prem」)環境340のためのAnsibleプレイブック320およびAnsibleインベントリ362を示す。Ansibleプレイブック310と320とは、異なるプレイブックである。
【0021】
シスプレックス365は、マネージド・ノード1およびマネージド・ノード2を含む。マネージド・ノード1および2のカップリング・ファシリティ(CF)370への接続性により、マネージド・ノード1および2はカップリング・ファシリティ・リンクを通してデータを共有できる。
【0022】
パブリック・クラウド330では、OSオペレーティング・システムは相互にまたは互いに隔離されているため、Ansibleプレイブック310内のタスクはすべてのOSオペレーティング・システム上で実行可能であると考えられる。オンプレミス環境340では、OSオペレーティング・システムは同じシスプレックス内にある可能性も考えられるため、Ansibleプレイブック320内のタスクは特定のOSオペレーティング・システムにおいて一度のみ実行されるべきである。よって、異なるプレイブックがパブリック・クラウドおよびオンプレミス環境に使用されるが、このことは非効率であり、エラーに対する脆弱性を生じさせる。
【0023】
要約すると、従来技術においてAnsibleは、クロス・マネージド・ノードの影響に対処するのに十分な柔軟性および分析能力を有さず、これは特に、クロス・マネージド・ノードのオートメーションを作成するための大きな習熟曲線、クロス・マネージド・ノードのオートメーションを作成するための低い生産性、エラーが発生しやすいオートメーション・スクリプト、およびハイブリッド・クラウド・シナリオにおける一貫性のないIaCコード、という問題を生じさせる可能性があると考えられる。
【発明の概要】
【0024】
本発明の実施形態は、マネージド・ノード上にタスクを実装する方法、コンピュータ・プログラム製品、およびコンピュータ・システムを提供する。コンピュータ・システムにおけるAnsible制御ノード内のAnsibleエンジンの1つまたは複数のプロセッサが、ホストの複数のマネージド・ノードのうちの1つまたは複数のマネージド・ノード上でAnsibleモジュールにより実行されるタスクの規定を受信する。
【0025】
1つまたは複数のプロセッサは、AnsibleモジュールのhostDecision属性の属性値に基づき1つまたは複数のマネージド・ノードを決定する。属性値は、primaryNode、allNodes、およびDynamicからなるグループから選択され、primaryNodeは、1つまたは複数のマネージド・ノードが複数のマネージド・ノードから選択されたプライマリ・ノードからなることを要求し、allNodesは、1つまたは複数のマネージド・ノードが複数のマネージド・ノードからなることを要求し、Dynamicは、プライマリ・ノードにより取得された、複数のマネージド・ノードのうちのマネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、1つまたは複数のマネージド・ノードが動的に決定されることを要求する。
【0026】
1つまたは複数のプロセッサは、1つまたは複数のマネージド・ノード上でタスクを実行するように、Ansibleモジュールを1つまたは複数のマネージド・ノードに送信する。
【図面の簡単な説明】
【0027】
【
図1】従来技術による、モジュールがマネージド・ノード上でタスクを実行するように、セキュア・シェル(SSH)プロトコルを使用してホスト・グループの相互に独立したマネージド・ノードにモジュールを送信する、Ansible制御ノードを示す。
【
図2】従来技術による、モジュールがマネージド・ノード上でタスクを実行するように、SSHプロトコルを使用してホスト・グループの相互に可視であるマネージド・ノードにモジュールを送信する、Ansible制御ノードを示す。
【
図3A】従来技術による、パブリック・クラウドのためのAnsibleプレイブックを示す。
【
図3B】従来技術による、オンプレミス(「On-Prem」)環境のためのAnsibleプレイブックを示す。
【
図4】本発明の実施形態によるAnsible制御ノードを示す。
【
図5】本発明の実施形態による、マネージド・ノード上にタスクを実装する方法を記載したフローチャートである。
【
図6】本発明の実施形態による、hostDecision属性を処理する方法を記載したフローチャートである。
【
図7】本発明の実施形態によるコンピュータ・システムを示す。
【
図8】本発明の実施形態によるクラウド・コンピューティング環境を示す。
【
図9】本発明の実施形態による抽象化モデル層を示す。
【発明を実施するための形態】
【0028】
本発明の実施形態は、クロス・ホストの影響を回避するためにAnsibleマネージド・ノードを自動的に選択する。Ansibleインベントリに対する静的または動的なプライマリ・ノードの決定をサポートすることによりAnsibleエンジンが拡張される。Ansibleエンジンはさらに、Ansibleモジュールの新たな属性hostDecisionを導入するよう拡張され、hostDecisionの値は、primaryNode、allNodes、またはDynamicとするものとする。hostDecision属性は、異なる様々なファクタに基づき静的または動的にマネージド・ノードを選択するために使用される。
【0029】
様々な実施形態において、Ansibleエンジンは、特定のタスクを実行するよう構成されたAnsibleモジュールに特有の属性hostDecisionに依存して、マネージド・ノードのホスト・グループのうちのどのマネージド・ノードにおいてAnbsibleプレイブックに規定されている特定のタスクがAnsibleモジュールにより実行されるべきかを、静的または動的に決定する。Ansibleモジュールは、特定のタスクを実行するよう構成されたコンピュータ・プログラム(すなわちソフトウェア)である。よって、Ansibleモジュールは、1つまたは複数のコンピュータ・プロセッサによりマネージド・ノードにてソフトウェアとして実行されることにより、マネージド・ノードにて特定のタスクを実行する。hostDecision属性は、「primaryNode」、「allNodes」、および「Dynamic」の値を有することができる。
【0030】
hostDecision属性の「primaryNode」の値の場合、タスクはホスト・グループ内のノードのうちのプライマリ・ノード上でのみ実行される。
【0031】
hostDecision属性の「allNodes」の値の場合、タスクはホスト・グループ内のすべてのノード上で実行される。
【0032】
hostDecision属性の「Dynamic」の値の場合、タスクが実行される単数または複数のノード(ホスト・グループ内)は、ホストのマネージド・ノードに関する1つまたは複数のファクタの現ステータスに基づき動的に決定され、かかる1つまたは複数のファクタは特に、中央処理ユニット(CPU)キャパシティ・ウェイト、システム環境変数、ヘルス・ステータス、ワークロード、ビジー・ステータスなどを含む。
【0033】
図4は、本発明の実施形態によるAnsible制御ノード410を示す。
【0034】
Ansible制御ノード410は、Ansibleギャラクシー470、Ansibleプレイブック440、Ansibleインベントリ460、Ansibleエンジン480、動的プライマリ・ノード決定490、および設定ファイル450を含む。一実施形態において動的プライマリ・ノード決定490は、図のようにAnsibleエンジン480の外にある。一実施形態において動的プライマリ・ノード決定490は、Ansibleエンジン480内にある。
【0035】
Ansibleギャラクシー470は、Ansibleモジュール411、412、413、414を含み、さらにプラグイン416および417も含んでもよく、プラグインは、実行されるタスクに関連してAnsibleエンジン480により要求されるかまたは必要とされる特化した機能を実行するために、Ansibleエンジン480により呼び出し可能である。
【0036】
Ansibleインベントリ460は、ホスト・グループ450、ならびに「node1.bj.com」、「node2.bj.com」、「node3.bj.com」、および「node4.bj.com」によりそれぞれ識別されるマネージド・ノード1、2、3、4を規定する。
【0037】
Ansibleプレイブック440は、ホスト・グループ450(「hostGroup」)、タスク430(タスク431、432、433、434を含む)、およびタスク431、432、433、434をそれぞれ実行するよう構成されたAnsibleモジュール411、412、413、414を規定する。
【0038】
Ansibleエンジン480は、各モジュールのhostDecision属性に依存してマネージド・ノード1、2、3、4のうちの1つまたは複数のマネージド・ノードそれぞれにおいてAnsibleモジュール411、412、413、414がそれぞれモジュール別のタスク430を実行するように、マネージド・ノード1、2、3、4のマネージド・ノード・ロケーション465にセキュア・シェル(SSH)プロトコルを使用してモジュール411、412、413、414を送信する。マネージド・ノード1が、
図4の例におけるプライマリ・ノードである。
【0039】
一実施形態において、各Ansibleモジュールについて、AnsibleモジュールのhostDecision属性値が、特に、Ansibleモジュールの開発者、Ansibleモジュールのユーザ、Ansibleモジュールにより実行されるべきタスクのイニシエータまたはユーザ、タスクが実行されるノードのグループのプライマリ・ノードまたはそのサブセットを含む様々なソースのうちの任意のソースから、Ansibleエンジン480により受信される。
【0040】
一実施形態において、設定ファイル450は、各モジュールのhostDecision属性値(モジュール1:primaryNode;モジュール2:allNodes;モジュール3:primaryNode;モジュール4:Dynamic)を規定する。
【0041】
よって、Ansibleモジュール411は、「primaryNode」のhostDecision属性値を有する。モジュール412は、「allNodes」のhostDecision属性値を有する。モジュール413は、「primaryNode」のhostDecision属性値を有する。モジュール414は、「Dynamic」のhostDecision属性値を有する。
【0042】
一実施形態において、Ansibleエンジン480の制御下にある動的プライマリ・ノード決定490は、どのマネージド・ノードがプライマリ・ノードであるかを決定するために使用されてもよい。
【0043】
本発明の実施形態について、エンド・ユーザ435は、Ansibleインベントリ460においてホスト・グループ450のプライマリ・ノードを静的に規定してもよいし、またはAnsibleエンジン480は、追加されたプライマリ・ノード決定モジュール490を用いてプライマリ・ノードを動的に決定してもよい。
図4では、マネージド・ノード・ロケーション465およびAnsibleインベントリ460に示されている通り、マネージド・ノード1がプライマリ・ノードである。
【0044】
特定のタスクを実行するモジュールのhostDecision属性値が「primaryNode」である場合は、プライマリ・ノードが、ホスト・グループ内で特定のタスクが実行され得る唯一のマネージド・ノードである。よって、関連するモジュールがhostDecision=primaryNodeを有する当該のAnsibleタスクは、同じホスト・グループ内の他のマネージド・ノード上では実行されない。
【0045】
どのマネージド・ノードがプライマリ・ノードであるかを決定する方式には、静的方式および動的方式の2つがある。
【0046】
どのマネージド・ノードがプライマリ・ノードであるかを決定するための静的方式では、エンド・ユーザ435が、Ansibleインベントリ460においてホスト・グループ450のプライマリ・ノードを静的に規定し、この結果、図のようにAnsibleインベントリ460内のホスト・グループ450においてプライマリ・ノードが規定される。プライマリ・ノードは、図のようにマネージド・ノード・ロケーション465において規定することもできる。Ansibleエンジン480は、ユーザから直接、またはAnsibleインベントリ460もしくは設定ファイル450からなどAnsible制御ノード410の中のストレージからのいずれかにより、プライマリ・ノードの識別情報を受信する。
【0047】
どのマネージド・ノードがプライマリ・ノードであるかを決定するための動的方式では、Ansibleエンジン480が、追加されたプライマリ・ノード決定モジュール490を使用してプライマリ・ノードを動的に決定してもよく、この結果、プライマリ・ノードがマネージド・ノード・ロケーション465において規定され、さらに、設定ファイル450およびAnsible制御ノード410内の他のストレージ・ロケーションに記憶される。
【0048】
ホストのマネージド・ノードに関する1つまたは複数のファクタの現ステータスに基づきどのマネージド・ノードがプライマリ・ノードであるかを決定する動的処理には、2つのタイプがある。
【0049】
どのマネージド・ノードがプライマリ・ノードであるかを決定する第1のタイプの動的処理では、マネージド・ノードは、例えば[nodeGroup1]node1.cloud.comおよびnode2.cloud.comのノード・グループを備えるパブリック・クラウド上のものであり、このケースにおいて、node1およびnode2は、通常は事前テスト環境として使用されるスタンドアロン・ノードであり、相互に隔離されている可能性がある。この第1のタイプの「動的」処理は、どのマネージド・ノードがnode1.cloud.comのプライマリ・ノードであり、どのマネージド・ノードがnode2.cloud.comのプライマリ・ノードであるかを特定する。実装の観点から見ると、特定の処理がnode1およびnode2の両方で実行される。このパブリック・クラウドのケースでは、node1およびnode2は相互に隔離され相互に認識しないため、node1はそれ自体をプライマリ・ノードとみなし、node2はそれ自体をプライマリ・ノードとみなすものとなる。よって、動的処理は、Ansibleエンジン480にnode1のプライマリ・ノードをnode1として返す。同じく動的処理は、Ansibleエンジン480にnode2のプライマリ・ノードをnode2として返す。Ansibleエンジン480は、Ansibleインベントリ460および設定ファイル450にプライマリ・ノードの識別情報を記憶する。
【0050】
後に、Ansibleエンジン480がタスクの実行を開始した際、特定のタスクの「hostDecision」が「primaryNode」であれば、node1のタスクがnode1上で実行され、node2の同じタスクがnode2上で実行される。言い換えると、同じタスクが「nodeGroup1」内のあらゆるノード上で実行される。
【0051】
どのマネージド・ノードがプライマリ・ノードであるかを決定する第2のタイプの動的処理では、マネージド・ノードは、例えば[nodeGroup2]node3.customer.comおよびnode4.customer.comのノード・グループを備えるオンプレミス(「On-Prem」)環境上のものであり、このケースにおいて、node3およびnode4は顧客のデータ・センターにある。node3およびnode4がシステムS内にあれば、node3およびnode4は同じシスプレックス内にある可能性が非常に高く、これは、node3およびnode4が相互に認識および影響する可能性があることを意味する。node3およびnode4は同じシスプレックスを共有するので、一部のタスクは一度のみ(つまりnode3上またはnode4上のいずれかで)実行可能である。「動的」処理中、node3およびnode4は、同じシスプレックス内にあることが理由で、相互を認識している。よって、プライマリ・ノードを、ホストのマネージド・ノードに関する1つまたは複数のファクタの現ステータスに基づき動的に決定できると考えられ、本例のマネージド・ノードはnode3およびnode4である。ホストのマネージド・ノードに関する1つまたは複数のファクタは、特に、中央処理ユニット(CPU)キャパシティ・ウェイト、システム環境変数、およびヘルス・ステータスを含む。
【0052】
プライマリ・ノードを動的に決定するためにCPUキャパシティ・ウェイトを使用する例として、システムSは、異なるCPUキャパシティがそれぞれのノードに割り当てられた複数のノードを含むことができるであろう。一実施形態において、最大のCPUキャパシティを割り当てられているノードがプライマリ・ノードであると決定される。
【0053】
プライマリ・ノードを動的に決定するためにシステム環境変数を使用する例として、システムSは、規定のソフトウェア製品(例えばCICS(IBM社の登録商標)、DB2(IBM社の登録商標))がそれぞれのノードにインストールされた複数のノードを含むことができよう。一実施形態において、最新バージョンのソフトウェア製品をインストールされているノードがプライマリ・ノードであると決定される。
【0054】
プライマリ・ノードを動的に決定するためにヘルス・ステータスを使用する例として、システムSは、各ノード上にインストールされた複数の製品(つまりハードウェア製品、ソフトウェア製品、およびその組み合わせ)のヘルス・ステータスを含むことができるであろう。各製品のヘルス・ステータスは、スコアリングされ、ハードウェア要件、システム要件、セキュリティ要件などに対する製品の準拠の程度を反映する。一実施形態において、最高のヘルス・ステータス・スコアを有するノードがプライマリ・ノードであると決定される。
【0055】
hostDecision属性がDynamicであれば、本発明の実施形態は、タスクが実行されるマネージド・ノードを決定する。
【0056】
一実施形態において、どのマネージド・ノード上でタスクが実行されるべきかの決定は、モジュールのhostDecision属性に従って、Ansibleエンジンがプライマリ・ノードにタスクを実行するモジュールを送信した後にプライマリ・ノードにより行われてもよい。プライマリ・ノードは、タスクがどのマネージド・ノード上で実行されるべきかを、特にシステム環境変数、ヘルス・データ、ワークロード・ステータスなどを含む1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、動的に決定してもよい。次にプライマリ・ノードは、タスクが実行される1つまたは複数のターゲット・ノードのリストをAnsibleエンジンに返す。次にAnsibleエンジンは、返された1つまたは複数のターゲット・ノードのリストをAnsible制御ノード内のストレージ・エリアに記憶し、そのストレージ・エリアのターゲット・ノードのリストが、後にAnsibleエンジンによりアクセスされてもよい。
【0057】
一実施形態において、どのマネージド・ノード上でタスクが実行されるべきかの決定は、Ansibleエンジンが、特にシステム環境変数、ヘルス・データ、ワークロード・ステータスなどを含むランタイム情報をプライマリ・ノードから受信した後に、Ansibleエンジンにより行われてもよい。次にAnsibleエンジンは、返された1つまたは複数のターゲット・ノードのリストをAnsible制御ノード内のストレージ・エリアに記憶し、そのストレージ・エリアのターゲット・ノードのリストが、後にAnsibleエンジンによりアクセスされてもよい。
【0058】
以下の例は、hostDecisionがDynamicである場合に、どのノード上で所与のタスクが実行されるかをAnsibleエンジンが特定する方法を示す。
【0059】
本例のAnsibleインベントリは以下の通りである:
[nodeGroup3]
node5.customer1.com
node6.customer1.com
node7.customer1.com
【0060】
プライマリ・ノードはnode5である。
【0061】
本例のAnsibleプレイブックは以下の通りである:
Play1:
host:nodeGroup3
-Task1(Ansible module1をコールする(module1のhostDecisionは「primaryNode」である)
-Task2(Ansible module2をコールする(module2のhostDecisionは「allNodes」である)
-Task3(Ansible module3をコールする(module3のhostDecisionは「Dynamic」である)
【0062】
AnsibleエンジンがTask1を実行するとき、Task1はプライマリ・ノードでのみ実行されるべきであり、プライマリ・ノードはnode5であるため、Task1はnode5上でのみ実行される。
【0063】
AnsibleエンジンがTask2を実行するとき、Task2はすべてのノード(node5、node6、node7)上で実行される。
【0064】
AnsibleエンジンがTask3を実行するとき、Task3は、Task3が実行されるべきターゲット・ノードを動的に特定する「動的」処理をトリガする。この処理は特定のロジックを使用して実行される。このロジックは、次に限定はされないが、ワークロード・バランシング、ヘルス・ステータス、ソフトウェア・インストール・バージョン、およびシステム環境変数の各ファクタに基づきターゲット・ノードを決定する。
【0065】
前述のファクタ(ワークロード・バランシング、ヘルス・ステータス、ソフトウェア・インストール・バージョン、システム環境変数)のうちどれが使用されるか、および当該ファクタがどのように使用されるかは、各モジュールの実装に依存する。例えば、ロジックがnode5およびnode7をターゲット・ノードをとして返すと想定する。その結果、Task3は、すべてのノードではなくnode5およびnode7上でのみ実行される。例示として、これらのファクタはシステムSにおいて以下のように使用されてもよい。
【0066】
本例において、ワークロード・バランシングのファクタに関し、Task3はバッチ・ジョブを実行する。プライマリ・ノードのnode5は、各ノードの現在のCPU利用率を調査することができよう。バッチ・ジョブは一度だけ実行されればよく、同じシスプレックス(node5、node6、およびnode7は同じシスプレックス内にある)内のどのノード上でジョブが実行されるべきかは重要でないため、node7のCPU利用率が最も低ければ、動的処理はnode7をターゲット・ノードとして返す。その結果、Task3は、ワークロード・バランシングを実装するためにnode7上でのみ実行される。
【0067】
本例において、ヘルス・ステータスのファクタに関し、Task3は新たなCICS(IBM社の登録商標)アプリケーションをノードにデプロイする。アプリケーションは、現在健全ではないCICS(IBM社の登録商標)サーバにデプロイされるべきではない。よって、動的処理は、各ノード内のCICS(IBM社の登録商標)サーバのヘルス・ステータスを(例えばHealthCheck技術を通して)チェックすることができ、すべてのノードは含まないノードのサブセットである、健全なCICS(IBM社の登録商標)サーバを有するノードのみを返す。よって、Task3は、すべてのノードではなく、返されたサブセットのノード上でのみ実行される。
【0068】
本例において、ソフトウェア・インストール・バージョンのファクタに関し、Task3はCICS(IBM社の登録商標)アプリケーションをノードにデプロイする。CICS(IBM社の登録商標)アプリケーションは、規定されている最低CICS(IBM社の登録商標)バージョン・ナンバー以上のCICS(IBM社の登録商標)バージョン・ナンバーを有する任意のノードにデプロイされることが可能であろう。動的処理は、各ノードに関するCICS(IBM社の登録商標)バージョンをスキャンし、次に前述の最低バージョン要件を満たす単数または複数のノードを返すことができるであろう。
【0069】
本例において、システム環境変数のファクタに関し、Task3は、規定されたシステム環境変数がONの値を有する場合にパッチを適用する。動的処理は、各ノードの規定されたシステム環境変数をスキャンする。node6およびnode7の規定されたシステム環境変数がONであり、node5のものはそうでなければ、node6およびnode7がターゲット・ノードとして返され、Task3はnode6およびnode7上でのみ実行される。
【0070】
図5は、本発明の実施形態による、マネージド・ノード上にタスクを実装する方法を記載したフローチャートである。
図5の方法はステップ510~530を含む。
【0071】
ステップ510は、コンピュータ・システムにおけるAnsible制御ノード内のAnsibleエンジンの1つまたは複数のプロセッサにより、ホストの複数のマネージド・ノードのうちの1つまたは複数のマネージド・ノード上でAnsibleモジュールにより実行されるタスクの規定を受信する。
【0072】
ステップ520は、AnsibleモジュールのhostDecision属性の属性値に基づき1つまたは複数のマネージド・ノードを1つまたは複数のプロセッサにより決定し、属性値は、primaryNode、allNodes、およびDynamicからなるグループから選択され、primaryNodeは、1つまたは複数のマネージド・ノードが複数のマネージド・ノードから選択されたプライマリ・ノードからなることを要求し、allNodesは、1つまたは複数のマネージド・ノードが複数のマネージド・ノードからなることを要求し、Dynamicは、プライマリ・ノードにより取得された、複数のマネージド・ノードのうちのマネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、1つまたは複数のマネージド・ノードが動的に決定されることを要求する。
【0073】
ステップ530は、1つまたは複数のマネージド・ノード上でタスクを実行するように、1つまたは複数のプロセッサによりAnsibleモジュールを1つまたは複数のマネージド・ノードに送信する。
【0074】
図6は、本発明の実施形態による、hostDecision属性を処理する方法を記載したフローチャートである。
図6のフローチャートはステップ610~670を含む。
【0075】
ステップ610は、hostDecision属性がallNodesの属性値を有するかどうかを、Ansibleエンジンにより判断する。
【0076】
ステップ610が、hostDecision属性はallNodesの属性値を有すると判断すれば、ステップ620においてAnsibleモジュールは、ホストの複数のマネージド・ノードのうちのすべてのマネージド・ノード上でタスクを実行する。
【0077】
ステップ610が、hostDecision属性はallNodesの属性値を有すると判断しなければ、hostDecision属性はprimaryNodeまたはDynamicであり、ステップ630が次に実行される。
【0078】
ステップ630は、ステップ631、ステップ632、またはステップ633によりプライマリ・ノードを決定する。
【0079】
ステップ631は、Ansible制御ノード内のAnsibleインベントリからプライマリ・ノードの識別情報を1つまたは複数のプロセッサにより受信し、Ansibleインベントリは、複数のマネージド・ノードおよびプライマリ・ノードの識別情報を記憶する。
【0080】
ステップ632は、プライマリ・ノードの動的識別情報を1つまたは複数のプロセッサにより受信し、複数のマネージド・ノードは、複数のマネージド・ノードのうちのマネージド・ノードが相互にまたは互いに隔離されるようなパブリック・クラウド上にあり、プライマリ・ノードの動的識別情報を受信することは、各マネージド・ノードから、各マネージド・ノードがプライマリ・ノードであるという通知を受信することを含む。
【0081】
ステップ633は、プライマリ・ノードの動的識別情報を1つまたは複数のプロセッサにより受信し、複数のマネージド・ノードは、複数のマネージド・ノードのうちのマネージド・ノードそれぞれが複数のマネージド・ノードのうちの他のマネージド・ノードの存在を認識するようなオンプレミス環境内の同じシスプレックスにあり、プライマリ・ノードの動的識別情報を受信することは、複数のプライマリ・ノードのうちのマネージド・ノードに関する1つまたは複数のファクタの現ステータスに基づくプライマリ・ノードの動的決定を通してプライマリ・ノードの動的識別情報を受信することを含む。一実施形態において、マネージド・ノードに関する1つまたは複数のファクタは、中央処理ユニット(CPU)キャパシティ・ウェイト、システム環境変数、およびヘルス・ステータスを含む。
【0082】
ステップ640は、hostDecision属性がprimaryNodeの属性値を有するか、またはDynamicの属性値を有するかを、Ansibleエンジンにより判断する。
【0083】
ステップ640が、hostDecision属性はprimaryNodeの属性値を有すると判断すれば、ステップ650においてAnsibleモジュールは、プライマリ・ノード上でタスクを実行する。
【0084】
ステップ640が、hostDecision属性はDynamicの属性値を有すると判断すれば、ステップ660が次に実行される。
【0085】
ステップ660は、タスクが実行される1つまたは複数のマネージド・ノードを、複数のマネージド・ノードのうちのマネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、1つまたは複数のプロセッサにより動的に決定する。一実施形態において、マネージド・ノードに関する1つまたは複数のファクタは、システム環境変数、ヘルス・データ、およびワークロード・ステータスを含む。
【0086】
ステップ670において、Ansibleモジュールは、ステップ660において動的に決定された1つまたは複数のマネージド・ノード上でタスクを実行する。
【0087】
一実施形態において、タスクが実行される1つまたは複数のマネージド・ノードを動的に決定することは、プライマリ・ノードがランタイム情報に基づき1つまたは複数のマネージド・ノードを動的に決定した後に、1つまたは複数のマネージド・ノードのリストをプライマリ・ノードから1つまたは複数のプロセッサにより受信することを含む。
【0088】
一実施形態において、タスクが実行される1つまたは複数のマネージド・ノードを動的に決定することは、ランタイム情報をプライマリ・ノードから1つまたは複数のプロセッサにより受信することと、プライマリ・ノードから受信されたランタイム情報に基づき1つまたは複数のプロセッサにより1つまたは複数のマネージド・ノードを動的に決定することとを含む。
【0089】
一実施形態において、Ansible制御ノードは、AnsibleモジュールのhostDecision属性を規定するインベントリ・ファイルを含む。
【0090】
一実施形態において、Ansible制御ノードは、Ansibleモジュールと、実行されるタスクに関連してAnsibleエンジンにより要求されるかまたは必要とされる特化された機能を実行するように構成されたプラグインとを含む、Ansibleギャラクシーをさらに含む。
【0091】
一実施形態において、Ansibleモジュールは、1つまたは複数のマネージド・ノード上でタスクを実行する。
【0092】
図7は、本発明の実施形態によるコンピュータ・システム90を示す。
【0093】
コンピュータ・システム90は、プロセッサ91、プロセッサ91に結合された入力デバイス92、プロセッサ91に結合された出力デバイス93、ならびにプロセッサ91にそれぞれ結合されたメモリ・デバイス94および95を含む。プロセッサ91は、1つまたは複数のプロセッサを表現しており、単一のプロセッサまたは複数のプロセッサを示し得る。入力デバイス92は特に、キーボード、マウス、カメラ、タッチスクリーンなどとされてもよいし、またはその組み合わせとされてもよい。出力デバイス93は特に、プリンタ、プロッタ、コンピュータ・スクリーン、磁気テープ、取り外し可能なハード・ディスク、フレキシブル・ディスクなどとされてもよいし、またはその組み合わせとされてもよい。メモリ・デバイス94および95はそれぞれ、特に、ハード・ディスク、フレキシブル・ディスク、磁気テープ、コンパクト・ディスク(CD)もしくはデジタル・ビデオ・ディスク(DVD)などの光学ストレージ、動的ランダム・アクセス・メモリ(DRAM)、リード・オンリ・メモリ(ROM)、またはその組み合わせとされてもよい。メモリ・デバイス95はコンピュータ・コード97を含む。コンピュータ・コード97は、本発明の実施形態を実行するアルゴリズムを含む。プロセッサ91はコンピュータ・コード97を実行する。メモリ・デバイス94は入力データ96を含む。入力データ96は、コンピュータ・コード97により要求される入力を含む。出力デバイス93は、コンピュータ・コード97からの出力を表示する。メモリ・デバイス94および95の一方または両方(またはリード・オンリ・メモリ・デバイス98などの1つまたは複数のさらに別のメモリ・デバイス)は、アルゴリズムを含んでもよく、コンピュータ可読プログラム・コードが具現化されている、もしくは他のデータが記憶されている、またはその両方のコンピュータ使用可能媒体(またはコンピュータ可読媒体またはプログラム・ストレージ・デバイス)として使用されてもよく、コンピュータ可読プログラム・コードは、コンピュータ・コード97を含む。一般に、コンピュータ・システム90のコンピュータ・プログラム製品(あるいは製造品)は、コンピュータ使用可能媒体(またはプログラム・ストレージ・デバイス)を含み得る。
【0094】
一部の実施形態において、ハード・ドライブ、光学ディスク、またはその他書き込み可能、書き換え可能、もしくは取り外し可能ハードウェア・メモリ・デバイス95に記憶されてそこからアクセスされるのではなく、記憶されるコンピュータ・プログラム・コード99(例えばアルゴリズムを含む)は、リード・オンリ・メモリ(ROM)デバイス98などの静的な取り外し不能のリード・オンリ・ストレージ媒体上に記憶されてもよいし、またはそのような静的な取り外し不能のリード・オンリ媒体98からプロセッサ91により直接アクセスされてもよい。同じく、一部の実施形態において、記憶されるコンピュータ・プログラム・コード97は、コンピュータ可読ファームウェア98として記憶されてもよいし、またはハード・ドライブもしくは光学ディスクなどのより動的なもしくは取り外し可能なハードウェア・データ・ストレージ・デバイス95からではなく、かかるファームウェア98からプロセッサ91により直接アクセスされてもよい。
【0095】
さらに、本発明のコンポーネントの任意のものが、プラグイン・コンポーネントに関連する相互参照メトリクスに関連するソフトウェア技術を改善し、ソフトウェア・コード・モジュールを生成し、ターゲット・クラウド・コンポーネントの動作機能性を可能にすることをオファーするサービス・サプライヤにより作成、統合、ホスト、維持、デプロイ、管理、サービス提供などされることが可能であろう。よって、本発明は、コンピュータ・システム90にコンピュータ可読コードを統合することを含む、コンピューティング・インフラストラクチャのデプロイ、作成、統合、ホスト、もしくは維持、またはその組み合わせを行うためのプロセスを開示し、コンピュータ・システム90と組み合わされたコードは、プラグイン・コンポーネントに関連する相互参照メトリクスに関連したソフトウェア技術を改善するプロセスを可能にし、ソフトウェア・コード・モジュールを生成し、ターゲット・クラウド・コンポーネントの動作機能性を可能にする方法を実行できる。別の実施形態では、本発明は、契約、宣伝、もしくは手数料、またはその組み合わせに基づき本発明のプロセス・ステップを実行するビジネス方法を提供する。つまり、ソリューション・インテグレータなどのサービス・プロバイダは、プラグイン・コンポーネントに関連する相互参照メトリクスに関連したソフトウェア技術を改善し、ソフトウェア・コード・モジュールを生成し、ターゲット・クラウド・コンポーネントの動作機能性を可能にするプロセスを可能にすることをオファーすることが可能であろう。このケースでは、サービス・サプライヤは、1つまたは複数の顧客に対して本発明のプロセス・ステップを実行するコンピュータ・インフラストラクチャを作成、維持、サポートなどすることができる。見返りとして、サービス・サプライヤは、契約もしくは手数料の取り決めもしくはその両方に従って顧客(単数または複数)から支払いを受けること、もしくは1つまたは複数のサード・パーティに対する宣伝コンテンツの販売からの支払いを受けること、またはその両方ができる。
【0096】
図7は、コンピュータ・システム90を、ハードウェアとソフトウェアとの特定の構成として示すが、当業者には周知であると考えられるハードウェアとソフトウェアとの任意の構成が、上述された目的のために、
図7の特定のコンピュータ・システム90とともに利用されてよい。例えばメモリ・デバイス94および95は、独立したメモリ・デバイスではなく、単一のメモリ・デバイスの一部であってもよい。
【0097】
本発明は、可能な任意の技術的詳細レベルで統合された、システム、方法、もしくはコンピュータ・プログラム製品、またはその組み合わせとされ得る。コンピュータ・プログラム製品は、プロセッサに本発明の各側面を実行させるコンピュータ可読プログラム命令を有する1つまたは複数のコンピュータ可読ストレージ媒体を含んでもよい。
【0098】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持および記憶できる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージとされ得るが、これらに限定されない。コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持および記憶できる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組み合わせとされ得るが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の網羅的でないリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM)またはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フレキシブル・ディスク、パンチ・カード、または命令が記録された溝の中の隆起構造などの機械的にエンコードされたデバイス、および前述のものの任意の適切な組み合わせを含む。本願明細書で使用されるとき、コンピュータ可読ストレージ媒体は、電波もしくはその他自由に伝搬する電磁波、導波路もしくはその他伝送媒体を伝搬する電磁波(例えば光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して伝送される電気信号など、本質的に一時的な信号であるとは解釈されないものとする。
【0099】
本願明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング/処理デバイスに、または例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組み合わせなどのネットワークを介して外部コンピュータもしくは外部ストレージ・デバイスに、ダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはその組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を個々のコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0100】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の設定データ、または、Smalltalk(登録商標)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されても、部分的にユーザのコンピュータ上で実行されても、スタンドアロン・ソフトウェア・パッケージとして実行されても、部分的にユーザのコンピュータ上で且つ部分的にリモート・コンピュータ上で実行されても、または完全にリモート・コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してリモート・コンピュータがユーザのコンピュータに接続されてもよいし、または(例えばインターネット・サービス・プロバイダを使用しインターネットを介して)外部コンピュータに接続されてもよい。一部の実施形態において、本発明の各側面を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、電子回路をパーソナライズするためコンピュータ可読プログラム命令の状態情報を利用することによりコンピュータ可読プログラム命令を実行してもよい。
【0101】
本発明の各側面は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本願明細書に記載されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方の複数ブロックの組み合わせは、コンピュータ可読プログラム命令により実装可能である。
【0102】
マシンをもたらすよう、こうしたコンピュータ可読プログラム命令が、コンピュータのプロセッサまたはその他プログラマブル・データ処理装置に提供されて、この命令が、コンピュータまたはその他プログラマブル・データ処理装置のプロセッサにより実行されて、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックに規定された機能/動作を実装する手段を作り出すようにすることもできる。特定の形で機能するようコンピュータ、プログラマブル・データ処理装置、もしくはその他デバイス、またはその組み合わせに指示することができる当該コンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体に記憶されて、命令を記憶されたコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックに規定された機能/動作の各側面を実装する命令を含む製造品を含むようにすることもできる。
【0103】
さらに、コンピュータ可読プログラム命令は、コンピュータ、その他プログラマブル・データ処理装置、またはその他デバイスにロードされて、コンピュータ、その他プログラマブル装置、またはその他デバイス上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスをもたらし、コンピュータ、その他プログラマブル装置、またはその他デバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックに規定された機能/動作を実装するようにすることもできる。
【0104】
各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性、および動作を示す。この関連で、フローチャートまたはブロック図の各ブロックは、規定された論理機能(単数または複数)を実装する1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表現し得る。一部の代わりの実装では、ブロックに示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている2つのブロックが実際には1つのステップとして実現されてもよく、同時に実行されてもよく、事実上同時に実行されてもよく、一部または全体が時間的に重複する形で実行されてもよいし、または各ブロックが逆順で実行されることがあってもよい。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方の複数ブロックの組み合わせは、規定された機能もしくは動作を実行するかまたは専用ハードウェアおよびコンピュータ命令の組み合わせを実行する、専用ハードウェア・ベースのシステムにより実装できるということに留意されたい。
【0105】
本発明のコンピュータ・プログラム製品は、コンピュータ可読プログラム・コードが記憶された1つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスを含み、前記プログラム・コードは、本発明の方法を実装するためにコンピュータ・システムの1つまたは複数のプロセッサにより実行可能な命令を含む。
【0106】
本発明のコンピュータ・システムは、1つまたは複数のプロセッサ、1つまたは複数のメモリ、および1つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスを含み、前記1つまたは複数のハードウェア・ストレージ・デバイスは、本発明の方法を実装するために1つまたは複数のメモリを介して1つまたは複数のプロセッサにより実行可能なプログラム・コードを含む。
【0107】
クラウド・コンピューティング環境
当然のことながら、本開示は、クラウド・コンピューティングについての詳細な記載を含むものの、本願明細書に記載する教示の実装は、クラウド・コンピューティング環境に限定されない。むしろ本発明の実施形態は、現在周知の、または後に開発される、ほかの任意のタイプのコンピューティング環境に関連して実装することができる。
【0108】
クラウド・コンピューティングは、最小限の管理作業またはサービスのプロバイダとの対話で迅速にプロビジョニングおよびリリースできる、構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールに対する、オンデマンドの便利なネットワーク・アクセスを実現するサービス供給のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つのデプロイメント・モデルとを含み得る。
【0109】
特徴は以下の通りである。
【0110】
オンデマンド・セルフサービス:クラウド消費者は、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を、必要に応じて自動的に、サービスのプロバイダとの人的対話の必要なく一方的にプロビジョニングできる。
【0111】
広範なネットワーク・アクセス:各能力はネットワーク上で利用可能であり、ヘテロジニアスなシンまたはシック・クライアント・プラットフォーム(例えばモバイル電話、ラップトップ、およびPDA(携帯情報端末))による使用を促進する標準のメカニズムを介してアクセスされる。
【0112】
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを使用して複数の消費者にサービスを提供するようプールされ、種々の物理リソースおよび仮想リソースが要求に応じて動的に割り当ておよび再割り当てされる。一般に、消費者は、提供されるリソースの正確な場所についての制御権または知識を有しないという点で、場所に依存しない感覚があるが、より高い抽象化レベルでは場所(例えば国、州、またはデータセンター)を指定できることもある。
【0113】
迅速な伸縮性:各能力は、一部のケースでは自動的に、迅速且つ伸縮自在にプロビジョニングされて素早くスケール・アウトすること、および迅速にリリースされて素早くスケール・インすることができる。多くの場合、消費者には、プロビジョニングに利用可能な各能力は無制限であるように見え、任意の量をいつでも購入できる。
【0114】
測定されるサービス:クラウド・システムは、サービスのタイプ(例えばストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した或る抽象化レベルでの計測能力を活用することによって、リソースの使用を自動的に制御および最適化する。リソース使用量は、監視、制御、およびレポート可能であり、利用されるサービスのプロバイダおよび消費者の双方に透明性が提供される。
【0115】
サービス・モデルは以下の通りである。
【0116】
ソフトウェア・アズ・ア・サービス(SaaS:Software as a Service):消費者に提供される能力は、クラウド・インフラストラクチャ上で実行されているプロバイダのアプリケーションの使用である。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース(例えばウェブ・ベースの電子メール)を介して様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージを含む基礎をなすクラウド・インフラストラクチャも、個々のアプリケーションの能力さえも管理または制御しないが、限られたユーザ別のアプリケーション構成設定は例外とされることもある。
【0117】
プラットフォーム・アズ・ア・サービス(PaaS:Platform as a Service):消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または入手したアプリケーションを、クラウド・インフラストラクチャ上にデプロイすることである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎をなすクラウド・インフラストラクチャの管理または制御は行わないが、デプロイされたアプリケーション、さらに場合によってはアプリケーション・ホスティング環境構成を制御する。
【0118】
インフラストラクチャ・アズ・ア・サービス(IaaS:Infrastructure as a Service):消費者に提供される能力は、処理、ストレージ、ネットワーク、およびその他基本的なコンピューティング・リソースのプロビジョニングであり、消費者はそこで、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアをデプロイし、実行することができる。消費者は、基礎をなすクラウド・インフラストラクチャの管理または制御は行わないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御し、場合によっては選ばれたネットワーキング・コンポーネント(例えばホスト・ファイアウォール)を限定的に制御する。
【0119】
デプロイメント・モデルは以下の通りである。
【0120】
プライベート・クラウド:クラウド・インフラストラクチャは或る組織のみのために運用される。組織またはサード・パーティによって管理可能であり、オンプレミスまたはオフプレミスに存在し得る。
【0121】
コミュニティ・クラウド:クラウド・インフラストラクチャはいくつかの組織によって共有され、共有される関心事(例えばミッション、セキュリティ要件、ポリシー、およびコンプライアンス意識)を有する特定のコミュニティをサポートする。組織またはサード・パーティによって管理可能であり、オンプレミスまたはオフプレミスに存在し得る。
【0122】
パブリック・クラウド:クラウド・インフラストラクチャは公衆または大規模業界団体に利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0123】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合であり、各クラウドは一意のエンティティのままであるが、データおよびアプリケーションの移植性(例えばクラウド間のロード・バランシングのためのクラウド・バースト)を実現する標準またはプロプライエタリ技術によってバインドされる。
【0124】
クラウド・コンピューティング環境は、サービス指向であり、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に焦点を合わせる。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0125】
以下、
図8を参照する。例示のクラウド・コンピューティング環境50が示されている。図のように、クラウド・コンピューティング環境50は、1つまたは複数のクラウド・コンピューティング・ノード40を含み、例えば携帯情報端末(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、もしくは自動車用コンピュータ・システム54N、またはその組み合わせなど、クラウド消費者により使用されるローカル・コンピューティング・デバイスが、クラウド・コンピューティング・ノード40と通信できる。ノード40は、互いに通信してもよい。ノード40は、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせなどの1つまたは複数のネットワークにおいて物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、もしくはソフトウェア、またはその組み合わせをサービスとして提供することができ、それらのためにクラウド消費者がローカル・コンピューティング・デバイス上にリソースを維持する必要はない。当然のことながら、
図8に示されているコンピューティング・デバイス54A~Nのタイプは、例示のみを目的としており、コンピューティング・ノード40およびクラウド・コンピューティング環境50は、任意のタイプのネットワークもしくはネットワーク・アドレス指定可能な接続(例えばウェブ・ブラウザを使用)またはその両方によって任意のタイプのコンピュータ化されたデバイスと通信できる。
【0126】
以下、
図9を参照する。クラウド・コンピューティング環境50(
図8)により提供される機能抽象化層のセットが示されている。
図9に示されているコンポーネント、層、および機能は例示のみを目的としており、本発明の実施形態はそれに限定されないことをあらかじめ理解されたい。図のように、以下の層および対応する機能が提供される。
【0127】
ハードウェアおよびソフトウェア層60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム61、RISC(縮小命令セット・コンピュータ・アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66が含まれる。一部の実施形態においてソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0128】
仮想化層70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75を例とする仮想エンティティが提供され得る抽象化層を提供する。
【0129】
一例では、管理層80は下記の機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境の中でタスクを実行するように利用されるコンピューティング・リソースおよびその他のリソースの動的な調達を提供する。計測および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されるときのコストの追跡と、こうしたリソースの消費に対する請求またはインボイス作成とを提供する。一例では、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド消費者およびタスクのアイデンティティ確認、ならびにデータおよびその他のリソースの保護を提供する。ユーザ・ポータル83は、消費者およびシステム管理者に、クラウド・コンピューティング環境に対するアクセスを提供する。サービス水準管理87は、必要なサービス水準が満たされるようにクラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス水準合意(SLA:Service Level Agreement)計画および達成88は、SLAに従い将来の要求が予想されるクラウド・コンピューティング・リソースの事前準備および調達を提供する。
【0130】
ワークロード層101は、クラウド・コンピューティング環境が利用される目的となり得る機能性の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション31、ソフトウェア開発およびライフサイクル管理32、仮想教室教育配信33、データ分析処理34、トランザクション処理35、およびマネージド・ノード上へのタスク実装36がある。
【0131】
本願明細書に記載された本発明の例および実施形態は、例示目的で提示されたものであり、網羅的であると解釈されるべきではない。本発明の実施形態は、例示のために本願明細書に記載されたが、当業者には多数の変形および変更が明白となるであろう。本願明細書の本発明の記載は、本発明の実践的な応用、および既知の技術、コンピュータ・システム、もしくは製品、またはその組み合わせと比べた本発明の技術的改善を示すために、これらの例および実施形態の基礎をなす原理を説明している。
【手続補正書】
【提出日】2024-04-04
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
マネージド・ノード上にタスクを実装する方法であって、
コンピュータ・システムにおけるAnsible制御ノード内のAnsibleエンジンの1つまたは複数のプロセッサにより、ホストの複数のマネージド・ノードのうちの1つまたは複数のマネージド・ノード上でAnsibleモジュールにより実行されるタスクの規定を受信することと、
前記AnsibleモジュールのhostDecision属性の属性値に基づき前記1つまたは複数のマネージド・ノードを前記1つまたは複数のプロセッサにより決定することであって、前記属性値は、primaryNode、allNodes、およびDynamicからなる群から選択され、primaryNodeは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードから選択されたプライマリ・ノードからなることを要求し、allNodesは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードからなることを要求し、Dynamicは、前記プライマリ・ノードにより取得された、前記複数のマネージド・ノードのうちの前記マネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、前記1つまたは複数のマネージド・ノードが動的に決定されることを要求する、前記決定することと、
前記1つまたは複数のマネージド・ノード上で前記タスクを実行するように、前記1つまたは複数のプロセッサにより前記Ansibleモジュールを前記1つまたは複数のマネージド・ノードに送信することと
を含む、方法。
【請求項2】
前記属性値は、primaryNodeまたはDynamicのいずれかである、請求項1に記載の方法。
【請求項3】
前記Ansible制御ノード内のAnsibleインベントリから前記プライマリ・ノードの識別情報を前記1つまたは複数のプロセッサにより受信すること
を含み、前記Ansibleインベントリは、前記複数のマネージド・ノードおよび前記プライマリ・ノードの前記識別情報を記憶する、請求項2に記載の方法。
【請求項4】
エンド・ユーザにより前記Ansibleインベントリに記憶される前記プライマリ・ノードの静的識別情報を前記1つまたは複数のプロセッサにより前記エンド・ユーザから受信すること
を含む、請求項3に記載の方法。
【請求項5】
前記プライマリ・ノードの動的識別情報を前記1つまたは複数のプロセッサにより受信すること
を含む、請求項2に記載の方法。
【請求項6】
前記複数のマネージド・ノードは、前記複数のマネージド・ノードのうちの前記マネージド・ノードが相互にまたは互いに隔離されるようなパブリック・クラウド上にあり、前記プライマリ・ノードの前記動的識別情報を前記受信することは、
各マネージド・ノードから、前記各マネージド・ノードが前記プライマリ・ノードであるという通知を受信すること
を含む、請求項5に記載の方法。
【請求項7】
前記複数のマネージド・ノードは、前記複数のマネージド・ノードのうちの前記マネージド・ノードそれぞれが前記複数のマネージド・ノードのうちの他の前記マネージド・ノードの存在を認識するようなオンプレミス環境内の同じシスプレックスにあり、前記プライマリ・ノードの前記動的識別情報を前記受信することは、
複数のマネージド・ノードのうちのマネージド・ノードに関する前記1つまたは複数のファクタの前記現ステータスに基づく前記プライマリ・ノードの動的決定を通して前記プライマリ・ノードの前記動的識別情報を受信すること
を含む、請求項5に記載の方法。
【請求項8】
前記マネージド・ノードに関する前記1つまたは複数のファクタは、中央処理ユニット(CPU)キャパシティ・ウェイト、システム環境変数、およびヘルス・ステータスを含む、請求項7に記載の方法。
【請求項9】
前記属性値は、primaryNodeである、請求項2に記載の方法。
【請求項10】
前記属性値は、Dynamicであり、前記方法は、
前記タスクが実行される前記1つまたは複数のマネージド・ノードを、前記複数のマネージド・ノードのうちの前記マネージド・ノードに関する前記1つまたは複数のファクタの前記現ステータスを含む前記ランタイム情報に基づき、前記1つまたは複数のプロセッサにより動的に決定すること
を含む、請求項2に記載の方法。
【請求項11】
前記マネージド・ノードに関する前記1つまたは複数のファクタは、システム環境変数、ヘルス・データ、およびワークロード・ステータスを含む、請求項10に記載の方法。
【請求項12】
前記タスクが実行される前記1つまたは複数のマネージド・ノードを前記動的に決定することは、
前記プライマリ・ノードが前記ランタイム情報に基づき前記1つまたは複数のマネージド・ノードを動的に決定した後に、前記1つまたは複数のマネージド・ノードのリストを前記プライマリ・ノードから前記1つまたは複数のプロセッサにより受信すること
を含む、請求項10に記載の方法。
【請求項13】
前記タスクが実行される前記1つまたは複数のマネージド・ノードを前記動的に決定することは、
前記ランタイム情報を前記プライマリ・ノードから前記1つまたは複数のプロセッサにより受信することと、
前記プライマリ・ノードから受信された前記ランタイム情報に基づき前記1つまたは複数のプロセッサにより前記1つまたは複数のマネージド・ノードを動的に決定することと
を含む、請求項10に記載の方法。
【請求項14】
前記Ansible制御ノードは、前記AnsibleモジュールのhostDecision属性を規定する設定ファイルをさらに含む、請求項1に記載の方法。
【請求項15】
前記Ansible制御ノードは、前記Ansibleモジュールと、実行される前記タスクに関連して前記Ansibleエンジンにより要求されるかまたは必要とされる特化された機能を実行するように構成されたプラグインとを含む、Ansibleギャラクシーをさらに含む、請求項1に記載の方法。
【請求項16】
前記1つまたは複数のマネージド・ノード上で前記Ansibleモジュールにより前記タスクを実行すること
を含む、請求項1に記載の方法。
【請求項17】
コンピュータ可読プログラム・コードを含むコンピュータ・プログラムであって、前記プログラム・コードは、マネージド・ノード上にタスクを実装する方法を実装するようにコンピュータ・システムにおけるAnsible制御ノード内のAnsibleエンジンの1つまたは複数のプロセッサにより実行可能な命令を含み、前記方法は、
ホストの複数のマネージド・ノードのうちの1つまたは複数のマネージド・ノード上でAnsibleモジュールにより実行されるタスクの規定を前記1つまたは複数のプロセッサにより受信することと、
前記AnsibleモジュールのhostDecision属性の属性値に基づき前記1つまたは複数のマネージド・ノードを前記1つまたは複数のプロセッサにより決定することであって、前記属性値は、primaryNode、allNodes、およびDynamicからなるグループから選択され、primaryNodeは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードから選択されたプライマリ・ノードからなることを要求し、allNodesは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードからなることを要求し、Dynamicは、前記プライマリ・ノードにより取得された、前記複数のマネージド・ノードのうちの前記マネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、前記1つまたは複数のマネージド・ノードが動的に決定されることを要求する、前記決定することと、
前記1つまたは複数のマネージド・ノード上で前記タスクを実行するように、前記1つまたは複数のプロセッサにより前記Ansibleモジュールを前記1つまたは複数のマネージド・ノードに送信することと
を含む、コンピュータ・プログラム。
【請求項18】
請求項17に記載のコンピュータ・プログラムを記録した、コンピュータ可読なストレージ媒体。
【請求項19】
コンピュータ・システムにおけるAnsible制御ノード内のAnsibleエンジンの1つまたは複数のプロセッサと、1つまたは複数のメモリと、1つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスとを含む前記コンピュータ・システムであって、前記1つまたは複数のハードウェア・ストレージ・デバイスは、マネージド・ノード上にタスクを実装する方法を実装するように前記1つまたは複数のメモリを介して前記1つまたは複数のプロセッサにより実行可能なプログラム・コードを含み、前記方法は、
ホストの複数のマネージド・ノードのうちの1つまたは複数のマネージド・ノードにより実行されるタスクの規定を前記1つまたは複数のプロセッサにより受信することと、
前記複数のマネージド・ノード上で前記タスクを実行するように構成されたAnsibleモジュールのhostDecision属性の属性値に基づき前記1つまたは複数のマネージド・ノードを前記1つまたは複数のプロセッサにより決定することであって、前記属性値は、primaryNode、allNodes、およびDynamicからなるグループから選択され、primaryNodeは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードから選択されたプライマリ・ノードからなることを要求し、allNodesは、前記1つまたは複数のマネージド・ノードが前記複数のマネージド・ノードからなることを要求し、Dynamicは、前記プライマリ・ノードにより取得された、前記複数のマネージド・ノードのうちの前記マネージド・ノードに関する1つまたは複数のファクタの現ステータスを含むランタイム情報に基づき、前記1つまたは複数のマネージド・ノードが動的に決定されることを要求する、前記決定することと、
前記1つまたは複数のマネージド・ノード上で前記タスクを実行するように、前記1つまたは複数のプロセッサにより前記Ansibleモジュールを前記1つまたは複数のマネージド・ノードに送信することと
を含む、コンピュータ・システム。
【国際調査報告】