Azure VM プロビジョニングのチュートリアル
この例では、Azure データセンターで仮想マシンをプロビジョニングする際に機能する クラウドプロビジョニングとガバナンス のコンポーネントについて説明します。対象となるトピックには、詳細計画、リソースブロック、クラウド API (CAPI)、および MID サーバー スクリプトインクルードが含まれます。
始める前に
このタスクについて
このチュートリアルは、ユーザーが既に Azure でプロビジョニングしている Linux VM から始まります。次に、VM、リソースブロック、およびリソースブロックから指定された CAPI 呼び出しを使用して、詳細計画について説明します。最後に、このチュートリアルでは、MID サーバー スクリプトインクルードが、いくつかの CAPI 呼び出しを通じて、最終的に Azure API に対して実際の REST 呼び出しを行う方法を示します。
この例では、インスタンスで利用可能なデフォルトのリソースブロックおよびスクリプトインクルードを使用します。そのため、インスタンスにプロビジョニングされた VM がない場合でも、以下の手順に従い、この例で使用されるコンポーネントを表示することで、コンポーネントの動作を理解できます。
AWS での VM の例については、「AWS VM プロビジョニングのチュートリアル」を参照してください。
手順
-
クラウドユーザーポータルでプロビジョニングされた VM を参照し、VM に関する詳細情報の一部に注目します。
- ベースシステムインスタンスインターフェイスで、クラウドユーザーポータル (クラウドユーザーポータル) を開きます。
-
クラウドユーザーポータル で、[スタック] をクリックし、スタックの名前をクリックして、この VM など、スタック内のプロビジョニングされた VM を表示します。
この例では、スタックの名前は MyAzureVM です。
-
[リソース] で、スタック内の VM をクリックします。
-
VM のプロパティを表示し、それがリージョン eastus の Azure データセンターにあることに注目してください。
-
VM の基となる詳細計画を参照します。
-
移動先 デザイン > 詳細計画をクリックし、Azure データセンターの仮想サーバーを使用して詳細計画を開きます。デフォルトで [ 展開モデル ] タブが表示され、詳細計画のさまざまなコンポーネントが表示されます。
この詳細計画例には、コンテナー、仮想サーバー (プロビジョニングされている実際の VM)、および Azure データセンターという 3 つのコンポーネントがあります。
-
下部の [操作] タブをクリックし、[プロビジョニング] をクリックします。
プロビジョニング操作は、システムが VM を作成したときにトリガーした操作です。その他のデフォルト操作を利用できますが、この例ではプロビジョニング操作に焦点を当てています。
-
詳細計画コンテナーリソースの [プロビジョン] ブロックをクリックします。
-
右側にある [入力] リスト内のパラメータの 1 つが [場所] です。
このパラメーターは値 eastus を保持しています。これは、データセンター内で VM の存在している場所です。
[入力] は、この例に示すようにコンテナー上で指定することも、その他の任意のリソースブロック上で指定することもできます。デフォルトでは、[Location] パラメーターは詳細計画コンテナリソースブロックで既に指定されているため、このような詳細計画のそれぞれで使用できます。詳細計画を [ドラフト] に切り替えた場合、詳細計画コンテナーリソースブロックにパラメーターを追加できます。仮想サーバーリソースブロックにパラメーターを追加することはできません。このウォークスルーでは、追加パラメーターは必要ありません。
-
移動先 デザイン > 詳細計画をクリックし、Azure データセンターの仮想サーバーを使用して詳細計画を開きます。デフォルトで [ 展開モデル ] タブが表示され、詳細計画のさまざまなコンポーネントが表示されます。
-
この詳細計画で使用する仮想サーバーおよびデータセンターリソースブロックを表示します。
- クラウドアドミンポータルで、 デザイン > リソースブロック.
-
デフォルトで クラウドプロビジョニングとガバナンス に提供されている [仮想サーバー] リソースブロックを検索して開きます。
- [リソースブロック] フォームで、[ホストリソース] 関連リストをクリックし、サポートされているホストリソースブロックのリストを表示します。
-
すでに指定されているホストインターフェイスおよびホストリソースに注意してください。
- [ホストインターフェイス] フィールドでは、この仮想マシンをホストするリソースブロックのゲストインターフェイスと一致する必要があるインターフェイスを指定します。この場合、ホストインターフェイスは [Compute Interface] です。これは、Azure データセンターリソースブロックのゲストインターフェイスでもあります。デフォルトでは、仮想ストレージなどの他のリソースブロックがデータセンターへの接続に使用できるように、データセンターリソースブロックは複数のゲストインターフェイスを提供します。
- [ホストリソース] 関連リストの [hostresource] 列にはすでに [Azure データセンター] が指定されています。これは、Azure データセンターのリソースブロックがこの VM の有効なホストであることを意味します。
-
[操作] タブをクリックし、[ステップ] サブタブをクリックします。
-
[操作] リストから [プロビジョン] を選択します。
プロビジョニング操作は、システムが VM を作成するために使用した操作です。その他のデフォルト操作を利用できますが、この例ではプロビジョニング操作に焦点を当てています。
-
リストに表示されるステップと、入力パラメーターの上に表示されるステップの説明全体に注目してください。
- [ホストリソース操作: (Host Resource Operation:)] は、このステップがホストリソース (この例では Azure データセンター) に操作を呼び出すことを示します。
- [Compute Interface] は、このステップで使用している Azure データセンターのゲストインターフェイスです。
- [ConnectAndCreateVirtualMachine] は、このステップで呼び出す Azure データセンター内の操作です。
注:この場合、このステップは別のリソースブロック (Azure データセンター) から操作を呼び出します。また、ステップは CAPI を直接呼び出し、その後 CAPI がクラウドプロバイダー API に対する REST 呼び出しを実行できます。Azure データセンターのリソースブロックを見ると、そのことがわかります。 - に戻る デザイン > リソースブロック.
- 仮想サーバーが接続しているホストリソースブロックである Azure データセンターのリソースブロックを開きます。
-
[ゲストインターフェイス] 関連リストで、サポートされているゲストインターフェイスに注目してください。
これらのゲストインターフェイスは、Azure データセンターが他のリソースブロックで使用できるようにするインターフェイスです。[Compute Interface] は、ホストインターフェイスとして Compute Interface を指定する仮想サーバーリソースブロックがデータセンターに接続できるように提供されています。
-
[操作] タブをクリックし、[ステップ] サブタブをクリックします。
-
[インターフェイス] リストで、[Compute Interface] が選択されていない場合は選択します。
このインターフェイスは、仮想サーバーリソースブロックで指定されていることを忘れないでください。
-
[操作] リストで、ConnectAndCreateVirtualMachine を検索して選択します。
この操作は、仮想サーバーリソースブロックで指定されていることを忘れないでください。
-
ConnectAndCreateVirtualMachine 操作の唯一のステップで使用される CAPI 呼び出しに注意してください。
- [クラウド API:] は、このステップが CAPI を呼び出し、その結果、CAPI がクラウドプロバイダー (この場合は Azure) に対する REST 呼び出しを実行できることを示します。
- [Compute Interface] は、このステップが呼び出す CAPI インターフェイスを指定します。
- [CreateNode] は実行されるメソッドを示します。名前が示すように、このメソッドは、仮想マシンを作成するようにクラウドプロバイダーに指示します。
-
ステップ設定を開くには、ドラフト状況のリソースブロックで、ハイライト表示された (青い) ステップをポイントし、表示される [ステップの編集] アイコンをクリックします。
-
ステップ設定を確認し、CAPI と統合する設定を確認します。
フィールド 説明 操作タイプ [クラウド API の呼び出し (Invoke Cloud API)] は、このステップが、指定されたプロバイダー、インターフェイス、およびメソッドを介して CAPI を呼び出す必要があることを指定します。 API プロバイダー (実際には製品) [Microsoft.Compute] は、CAPI で定義されている Azure プロバイダーに属する (実際のプロバイダーではない) 製品です。 API インターフェイス [Compute Interface] は、CAPI に定義されている Azure プロバイダーに属する製品です。 API メソッド [CreateNode] は、Azure を呼び出して VM を作成するメソッドです。 注:CAPI API 定義は、プロバイダー (Azure)、製品 (Microsoft.Compute)、インターフェイス (Compute Interface)、およびメソッド (CreateNode) を結び付けます。 - ウィンドウを閉じます。
-
[Compute Interface.CreateNode] ステップが選択されている状態で [応答プロセッサー] タブをクリックし、[Create_Virtual_Server_Response_Processor] スクリプトを確認します。
このスクリプトは、仮想マシンが作成された後に、インスタンスで CMDB を更新する応答プロセッサーです。
-
「応答プロセッサーの作成」のトピックに含まれている、このスクリプトの説明と例を参照してください。
そのトピックの確認が完了したら、このトピックに戻ります。
-
VM をプロビジョニングするために連携して動作する CAPI コンポーネントを確認します。
- クラウドアドミンポータルで、 デザイン > クラウド API.
- [API] タブをクリックし、開いている Azure Compute API を検索します。
-
この CAPI API がインターフェイスと製品をどのように結び付けているかを確認します。
フィールド 説明 クラウド API インターフェイス [Compute Interface] は、リソースブロックで指定されているインターフェイスと同じです。このインターフェイスには、CreateStack メソッドを含むメソッドの定義が含まれています。 コネクター [スクリプトコネクター (Script Connector)] は、この CAPI が各操作の MID サーバー スクリプトインクルードを提供することを示します。このスクリプトインクルードは、API を呼び出します。スクリプトインクルードを変更することも、新しいスクリプトインクルードを作成することもできます。 バージョン [1.0] は API のバージョンを示します。この API の複数のバージョンを異なるバージョン番号で使用できます。VM を作成するデータセンターリソースブロックのステップでは、[バージョン] フィールドが表示されることに留意してください。この例では、この API のバージョンが 1 つしかないため空白でしたが、別のバージョン番号を指定できます。 製品 [Microsoft.Compute] は、CAPI でプロバイダーに属している製品です。この製品は、デフォルトで クラウドプロビジョニングとガバナンス が備えられており、Azure で VM を作成するために最も一般的に使用される製品の 1 つです。 -
[CAPI メソッドマッパー] 関連リストで、CreateNode レコードのレコードプレビューアイコンをクリックし、[レコードを開く] をクリックします。
-
CreateNode メソッドマッパーを確認します。
[エンドポイント操作] が [スクリプトを実行] になっていることに注意してください。これは、カスタマイズ可能なスクリプトインクルードが CAPI の関数を呼び出すために使用され、この関数が最終的に Azure に対して REST 呼び出しを行うことを示します。azure-compute-1.0-CreateNode MID サーバー スクリプトインクルードは [要求スクリプト] フィールドで指定します。
次の図は、リソースブロックからスクリプトインクルードに至るコンポーネントがどのように接続されているかを示しています。
-
のレコードアイコン (レコードアイコン) をクリックします。
azure-compute-1.0-CreateNode MID サーバー スクリプトインクルードが開きます。
-
スクリプトの内容を確認します。
createNode(); function createNode(){ var acp = new AzureComputeVirtualMachine(this.parameters, this.headers); var vm = acp.createVirtualMachine(); return vm; }このスクリプトは、AzureComputeVirtualMachine クラス内の createVirtualMachine 関数を呼び出します。作成された仮想マシンを返します。AzureComputeVirtualMachine クラスは、クラウドプロビジョニングとガバナンス のベース API の 1 つである AzureCloudAPIBase を拡張します。
- MID サーバースクリプトインクルードであるAzureComputeVirtualMachineクラスを表示するには、(クラウドアドミンポータルではなく) ベースシステムインスタンスインターフェイスを開き、 MID サーバー > スクリプトインクルード.
-
AzureComputeVirtualMachine を検索して開きます。
-
createVirtualMachine関数を確認します。この関数は、Location(データセンター) や VM の名前など、VM の作成に必要な多くの変数を定義します。
var location = this.parameters.get('Location'); var vmName = this.parameters.get('NodeName'); ...このコード行は、この同じスクリプト内の
_performVMOperation関数を呼び出し、必要なパラメーターを渡します。actionパラメーターに空の値''が渡されることに注意してください。var response = this._performVMOperation(subscriptionId, resourceGroup, vmName, '', 'PUT', jsonObj.encode(params));_performVMOperation関数は、AzureCloudAPIBase クラス内にある関数_invokeRequestを呼び出します。return this._invokeRequest(this.pathDefault, param, method, requestBody);REST 呼び出しの PUT メソッドは、method パラメーターで指定されます。
AzureCloudAPIBase MID サーバー スクリプトインクルードを確認します。
_invokeRequest関数は、最初に_getEndpoint関数を呼び出してエンドポイントを取得し、_getAPIInvoker関数を呼び出して、実際の PUT 呼び出しを呼び出すクラスとして AzureAPIInvoker クラスを識別します。var apiInvoker = this._getAPIInvoker(apiEndpoint, this.apiVersion);AzureAPIInvoker は CloudRESTAPIInvoker から拡張され、すべての呼び出し元にベース関数が提供されます。正しい呼び出し元クラスが識別されると、CloudRESTAPIInvoker の
invokePut関数から返された値を保持する response 変数が作成されます。response = apiInvoker.invokePut(requestBody);すべての呼び出し元の基底クラスである CloudRESTAPIInvoker を調べます。invokePut 関数は、PUT メソッドを指定し、
getRequestを呼び出し、Azure からステータスコードと応答を取得する getResponse 関数から応答を返します。この呼び出し元クラスは、Azure への接続が確立される場所です。AzureComputeVirtualMachine MID サーバー スクリプトインクルードに戻って次の行を探します。
var response = this._performVMOperation(subscriptionId, resourceGroup, vmName, '', 'PUT', jsonObj.encode(params)); this._compareVMState(response.id, 'PowerState/running'); var nodeResponse = this.getVirtualMachine(response.id);変数 response は、PUT メソッドをトリガーした API 呼び出し元からの応答を含んでいる
_performVMOperationの呼び出しから返されることに留意してください。nodeResponse 変数は、応答内にある仮想マシンの ID を渡されるgetVirtualMachine関数からの応答を保持します。getVirtualMachine関数は_getVMInfoを呼び出し、この関数が以前に呼び出された_invokeRequestと同じ関数を呼び出します。この呼び出しは、実際の REST 呼び出しを実行する呼び出し元への別の接続になります。この場合、REST 呼び出しは、VM の ID を取得する Azure に対する GET REST 呼び出しになります。return nodeResponse;行は、createNode 操作での MID サーバー スクリプトインクルードから呼び出されたcreateVirtualMachine関数で nodeResponse を返します。この図は、関連するクラスを示しています。
- Azure Compute API フォームに戻ります。
-
[API 設定の上書き] 関連リストをクリックし、認証に必要な項目を確認します。
設定パラメーターと上書き値 説明 ClientID
$(CloudCredential.client_id)
クライアント ID は、Azure でアプリケーションを識別するために必要です。 EndpointURL
$(CloudCredential.URL)
エンドポイント URL は、Azure での認証入力です。 SecretKey
$(CloudCredential.secret_key)
秘密キーは、クライアントの認証に使用されます。 TenantID
$(CloudCredential.tenant_id)
テナント ID は、テナントのグローバル一意識別子です。 EnrollmentNumber
$(CloudCredential.sn_cmp_ea_credential.enrollment_number)
EnrollmentToken
$ (CloudCredential. sn _cmp_ea_credential. access_key)
Azure 登録番号と、登録アカウントにアクセスするためのトークン。 これらの上書きで使用される Azure 情報の詳細については、「インスタンスに Azure サービス プリンシパル認証情報を格納する」を参照してください。
- に戻る デザイン > クラウド APIをクリックし、[ インターフェイス ] タブをクリックします。
- Compute Interface を Search して開きます。
-
インターフェイスの内容を確認します。
このインターフェイスでは、CreateNode などのメソッドに対して REST 応答構造を使用していることに注意してください。通常、既存のインターフェイスを変更する必要はありません。サービスカテゴリと操作に注意してください。
フィールドまたは関連リスト 説明 サービスカテゴリ サービスカテゴリは、インターフェイスを分類します。Compute Interface のカテゴリーも Compute です。 CAPI インターフェイス操作 インターフェイス操作は、REST 呼び出しの JSON 構造と、インターフェイスに必要なパラメーターを定義します。 -
CreateNode CAPI インターフェイス操作をクリックします。
この操作は、EC2 仮想サーバーを作成するためのフレームワークを提供する操作です。
-
操作のコンポーネントを確認します。
フィールドまたは関連リスト 説明 応答構造 この応答構造は、REST API 呼び出しの JSON フレームワークになります。このフィールドには、プロバイダーが空の値を持つ仮想リソースを作成するために使用できる属性のリストが用意されています。
インターフェイス操作パラメーター これらのパラメーターは、REST 呼び出しでクラウドプロバイダーに渡すことができるように、CAPI インターフェイスがシステムから必要とするパラメーターでもあります。
- に戻る デザイン > クラウド API をクリックし、[ プロバイダー ] タブをクリックします。
-
Azure プロバイダーを開きます。
Azure クラウドプロバイダーフォームが開き、このプロバイダーが既存の CMDB クラス (Azure データセンター [cmdb_ci_azure_datacenter]) に基づいていることを示します。
-
[クラウド製品] 関連リストをクリックし、[名前] 列でリストを並べ替えます。
いくつかの Azure 製品がデフォルトで利用できることに注意してください。テンプレートから作成される最も一般的に使用される Azure 製品の 1 つが Microsoft.Compute です。
-
[名前] 列の [Microsoft.Compute] をクリックします。
製品は多くのリソースタイプを指定しており、それぞれが CI クラスにマップされていることに注意してください。
これらのリソースタイプは、仮想マシンに関連する一部の CI を示し、すべてではありません。クラウドプロバイダーが VM をプロビジョニングするときに、リソースブロック内の応答プロセッサーによって CI にデータが入力されます。
-
VM に関連する重要な CI を確認するには、次の手順を実行します。
- クラウドユーザーポータル で、[スタック] をクリックし、VM を含むスタックを開きます。
-
[依存関係を表示] アイコンをクリックします。
依存関係マップでは、スタック CI が上部に、VM が中央に、関連するさまざまな CI (イメージなど) が下部に表示されます。
-
CMDB で VM のフォームを表示するには、任意の CI の横にある矢印を右クリックします。
-
メニューの [フォームを表示] をクリックします。
CI フォームが開き、VM のプロパティを表示するときに クラウドユーザーポータル でどれだけの情報が既に利用可能かが示されます。
VM CI フォーム クラウドユーザーポータル の VM プロパティ