Amazon Web Services ブログ

vRealize Orchestrator を使用した VMware Cloud on AWS のプロビジョニングと管理

本稿は、 AWS のシニアパートナーソリューションアーキテクト Sam Walker による記事です。

VMware vRealize Orchestrator (vRO / 現在は VMware Aria Automation Orchestrator に名称変更) は、 VMware の vRealize Suite (現在は VMware Aria Suite に名称変更) の一部であり、VMware vRealize Automation (vRA / 現在は VMware Aria Automation に名称変更) と密接に結びついています。これは、 vRA の制御外のあらゆるものに対するオーケストレーションツールとして機能し、 vRA の顧客はワークフローを作成して、仮想マシン (VM) のプロビジョニング中に手順追加をすることができます。これには、バックアップポリシーの管理、コンテンツ管理データベース (CMDB) の更新、サーバーのログインクレデンシャルのユーザーへの電子メール送信が含まれます。
さらに、 vRA は vRO ワークフローを利用して、 vRO で管理できるあらゆるものに対してプロビジョニングリクエストを実行できます。 VMware Cloud on AWS の場合は、 REST API を使用します。これは「anything-as-a-service」または XaaS と呼ばれます。
お客様は、オンプレミスの VMware 環境を制御する自動化プロジェクトに多くの投資をしており、これらのほぼすべてで vRealize Orchestrator が活用されています。多くの VMware 管理者は、 vRO ワークフローを使用してタスクを自動化し、スナップショットの削除などの定期的なタスクをスケジュールすることに慣れています。
本稿は、VMware Cloud on AWS を自動化する別の方法をお見せし、 vRO 管理者が vRO を使用して VMware Cloud on AWS 環境の管理に役立ちます。サンプルコードと手順は、こちらの GitHub ページVMware の VMware Cloud on AWS API ガイドを参照することができます。

概要

VMware Cloud on AWS API を使用する際の最初のステップは、VMware Cloud ポータルから API トークンを作成することです。この手順については、上記の API ガイドを参照してください。
この API トークンを取得したら、 VMware Cloud on AWS で後続の API 操作を実行するために使用するアクセストークンと交換する必要があります。これには、 software-defined data center (SDDC) の作成または削除、資格情報とサブスクリプションの管理、および環境内で発生するタスクの監視または更新が含まれます。
VMware Cloud on AWS 環境の管理には、2 つの API エンドポイントが関係しています。 1 つ目は API トークンをアクセストークンと交換するために使用され、2 つ目は後続の操作を実行するために使用されます。これらは、この VMware ドキュメントを使用して、 vRO の REST ホスト エンドポイントとして追加できます。

  • https://console.cloud.vmware.com/csp/gateway – 認証に使用されます
  • https://vmc.vmware.com/vmc – 後続のオペレーションに使用されます。

サンプルワークフローの API エンドポイントに、これらの名前をそれぞれ “vmc-auth” と “vmc” と付けました。

vRealize Orchestrator プラグイン

図1 – vRealize Orchestrator プラグイン

Add REST Host ワークフローでは、証明書は自動的にインストール (またはユーザーに証明書を受け入れるように求める) されますが 、手動インストールが必要になる場合があります。これを行うには、コントロールセンター (https://vro-address/vco-controlcenter/config) を参照し、 “root” アカウントを使用してログインします。

ログイン後、 Certificates > Import from URL を選択し、上記の 2 つのURLから証明書をインポートします。

コントロールセンターから証明書をインポート

図2 – コントロールセンターから証明書をインポート

これらの REST API エンドポイントをワークフローで使用して、 vRO に追加されると、正しい API エンドポイントが反映されます。
ワークフローを使用してアクセストークンを返します。以下のコードはサンプルとして提供されています。認証エンドポイントとなる apiKey と resthost の入力変数を渡します。出力は accessToken になります。

//Build Request
var encodeURI = encodeURI ("refresh_token=" + apiKey)
var request = resthost.createRequest("POST","/am/api/auth/api-tokens/authorize?" + encodeURI);

//Set Headers
request.contentType = "application/json";
request.setHeader("Content-Type: application/x-www-form-urlencoded")

//Execute Request & get status
var response = request.execute();
var statusCode = response.statusCode;
System.debug ("API status code is " + statusCode);

//Get Content as string and extract access token
var contentAsString = response.contentAsString;
var jsonobj = JSON.parse(contentAsString);
accessToken = jsonobj.access_token;
アクセストークンを正常に作成できたら、後続するワークフローの最初に、このワークフローを使用して API キーからアクセストークンを生成できます。
ここで、最初にテストすることは、 API ユーザーが組織を利用可能にすることなど基本的なことです。これを行うには、前のワークフローから生成されたアクセストークンの入力を受け取り、組織の配列を出力するワークフローを作成します。
accessToken と resthost を入力として次のコードを使用しました。
//Build Request
var request = resthost.createRequest("GET","/api/orgs");
//Set Headers
request.contentType = "application/json";
request.setHeader("Accept","application/json")
request.setHeader("Content-Type","application/json")
request.setHeader("csp-auth-token", accessToken )

//Execute Request & get status code
var response = request.execute();
var statusCode = response.statusCode;
System.log ("API status code is " + statusCode);

//Get Content as string & log output
var contentAsString = response.contentAsString;
var jsonobj = JSON.parse(contentAsString)
for each (var obj in jsonobj) {
    System.log (“Found organisation “ + obj.display_name + " - " + obj.id)
}
ここから、 vRealize Automation XaaS を使用し、ホストしたり、スケジュールをオーケストレーションしたり、手動クリックを最小限に抑えたり、ヒューマンエラーを取り除くなどの必要なアクションを実行するようにコードを適応させることができます。 vRO を使用したその他の例を次のセクションに示します。

お客様が完全な SDDC の作成をセルフサービスで行いたい場合は、 POST コマンドを https://vmc.vmware.com/vmc/api/orgs/{org}/sddcs に送ることで実現できます。これには、 JSON body を作成し、 API 呼び出しに付与する必要があります。最小限の JSON コンテンツの例を以下に示します。

{ 
    "region": “US_WEST_2”,
    "name": “vRO Demo”,
    "num_hosts": 2,
    "provider": "AWS"
 }

これは vRO フォームの入力変数として使用されるため、ユーザーは変数の入力を求められます。

上述の例による vRealize Orchestrator SDDC リクエスト

図3 – 上述の例による vRealize Orchestrator SDDC リクエスト

管理サブネット、 AWS アカウント ID 、 Microsoft ライセンス、シングルサインオン (SSO) ドメイン、デフォルトネットワークアドレス、ホストインスタンスタイプなどの追加パラメータを JSON に含めるような変更を加えることができます。その結果、 SDDC がプログラムによって作成されます。

VMware Cloud on AWS デプロイメント

図4 – VMware Cloud on AWS デプロイメント

API を使用できる別の場所として、接続されているアカウントを強調表示してから、未使用のアカウント ID を削除することです。 https://vmc.vmware.com/vmc/api/orgs/{org}/account-link/connected-accounts への GET API 呼び出しを使用して、接続されているすべてのアカウントの JSON を取得し、http://vmc.vmware.com/vmc/api/orgs/{org}/account-link/connected-accounts/{linkedAccountPathId} へ DELETE API 呼び出し、未使用のアカウントを削除します。
以下は、リンクドアカウントの 1 つから返された JSON です。これを使用して、所有者と組織に対して既に構成されているアカウントの特定ができます。

リンクドアカウント API コールから返却された JSON

図5 – リンクドアカウント API コールから返却された JSON

これを毎週のスケジュールで実行して、 VMware Cloud on AWS のプロビジョニングにより作成された AWS CloudFormation スタックのうち、コンプライアンス要件のある AWS 環境にデプロイされているものを特定できます。
vRealize Orchestrator ワークフローを使用して、アドオン機能が有効になっている SDDC をすばやく検証することもできます。これは、有効なアドオンの JSON 文字列を返す https://vmc.vmware.com/vmc/api/orgs/{org}/sddcs/{sddc}/enablements で GET API コールを実行することで実現できます。

[{"name":"hcx","enabled":true},{"name":"draas","enabled":true},{"name":"skynet","enabled":true},{"name":"default","enabled":false}]

https://vmc.vmware.com/vmc/api/orgs/{org}/sddcs/{sddc}/enablements/{enablement} を変数を置き換えて POST API コールをすることでアドオンを有効化することもできます。たとえば、必要なアドオンを “hcx” や “draas” などを {enablement} 変数に含めます。

次のステップ

基本的なワークフローを構築したら、変更と組み合わせで、より大規模で複雑なワークフローを作成できます。例えば、以下のワークフローは、顧客トレーニングイベントで使用した特定の SDDC のみを削除します。

SDDC 削除ワークフローの例

図6 – SDDC 削除ワークフローの例

推奨

以下のものは、 vRO において VMware Cloud on AWS API を使用する際のガイドラインとして提供されていますが、 API とベストプラクティスに関する詳細情報を収集するためには、 VMware vRealize Orchestrator および VMware Cloud on AWS API のドキュメントを参照する必要があります。

  • ユーザーごとに API キーを作成します。 ユーザー間で共有しないでください。
  • API キーのハードコーディングを避けるために、 AWS Secrets Manager などのシークレット管理ツールを使用して API キーを保存します。 vRO が複数のユーザーによって使用されている場合は、ユーザーごとの API キーが使用されていることを確認してください。
  • ロールベースアクセスコントロール (RBAC) を実践し、必要なアクセス許可のみを付与します。 API キーにユーザーインターフェイス (UI) ユーザーと同じアクセス許可が必要であると想定しないでください。
  • API キーを定期的に再作成し、無期限のキーを避けてください。
  • ワークフローを作成するときは、 POST または DELETE 操作を実行する前に、System.log(…) などのアクションを実行して、ワークフローが期待どおりに実行され、誤って本番 SDDC を削除しないようにします。

まとめ

本稿では、 vRealize Orchestrator を使用して VMware Cloud on AWS 環境をデプロイおよび管理する方法について説明しました。他の自動化プロジェクトと同様に、 API を使用し制御する前に、何を自動化しようとしているのかを明確にし、それが十分に文書化されていることを確認してください。

詳細については、VMware Cloud on AWS チームにお問い合わせください。

本稿はソリューションアーキテクト齋藤が翻訳を担当しました。原文はこちらです。