VMware Cloud on AWS の SDDC を CLI から操作する

VMware PowerCLI から VMware Cloud on AWS の SDDC を操作してみました。
2023.03.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大家好,AWS事業本部の西野です。

VMware Cloud on AWS の SDDC を VMware PowerCLI から操作してみました。

VMware PowerCLI とは

VMware PowerCLI は各種の VMware 製品をコマンドラインから管理・自動化するためのツールです。
VMware PowerCLI が対応しているプロダクトの一覧は以下のページから確認可能です。

VMware PowerCLI Reference

本稿においては VMware Cloud on AWS で利用するための手順を確認していきます。

VMware PowerCLI のインストール

PowerCLI のインストール方法については以下のドキュメントに記載があります。

PowerCLI Installation Guide

筆者の業務用端末は MacBook なので、ここでは macOS 向けとして Homebrew を使ったオンラインインストール手順を紹介します。

Homebrew の導入手順については割愛するので、こちらのページなどをご参照ください。

PowerShell のインストール

VMware PowerCLI を使用するためには PowerShell が必要です。   以下のコマンドを実行し Homebrew 経由で PowerShell をインストールします。

$ brew install --cask powershell

PowerShell の起動

以下のコマンドを実行し PowerShell を立ち上げます。

$ pwsh
PowerShell 7.3.3
PS /Users/nishino.wataru>

PowerCLI のインストール

以下のコマンドレットを実行し VMware PowerCLI をインストールします。

PS /Users/nishino.wataru> Install-Module -Name VMware.PowerCLI

API トークンの取得

VMware PowerCLI から VMware Cloud on AWS の操作をするためには API トークンが必要です。
まずはこれを取得しましょう。

VMware の CSP ポータルにログインし、画面右上部のユーザー名・組織名が書かれている部分をクリックします。

マイアカウント をクリックします。

マイアカウントの画面で API トークン タブをクリックします。

新しい API トークンの生成 をクリックします。

以下のパラメータを入力・選択した後、生成 をクリックします。

  • トークン名
  • トークンの TTL(有効期限)
    • 最短30分から無期限まで設定可能
  • トークンに含まれる組織ロールとサービスロール
  • OpenID
    • チェックを入れると OpenID 準拠トークンを取得可能
  • Eメールの設定
    • チェックを入れると有効期限が近づいた際にリマインドメールが送信される

実環境で利用する際には最小権限の原則に基づき必要な組織ロール・サービスロールのみを付与するようにしてください。

生成されたトークンが画面上に出てくるので、安全な方法で保存しておきます。

これで準備が完了です。

なお、生成されたトークンに対しては「再生成」および「取り消し」の操作が可能です。

トークンを再生成するとその再生成の時点からふたたび TTL が起算されます。

使ってみた

環境への接続

VMware Cloud on AWS のコマンドレットを使用するためにはまず Connect-VMC コマンドレットで環境へ接続します。
-ApiToken には前項で取得した API トークンをわたしてあげます。

PS /Users/nishino.wataru> Connect-Vmc -ApiToken wq0aEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx

Server                         User
------                         ----
vmc.vmware.com                 nishino.wataru@example.com

AWS アカウント関連の操作

SDDC に関連付けられた AWS アカウントを表示するためには Get-AwsAccount を用います。

PS /Users/nishino.wataru> Get-AwsAccount

AccountNumber Username               State  CFStackName
------------- --------               -----  -----------
123456789012  vmc_operator@csp.local ACTIVE vmware-sddc-formation-93axxxxx-vvvv-aaaa-9d0
                                            4-ea4e9xxxxxxxx

また、Get-AwsVpcSubnet では対象アカウントの特定リージョンからサブネットの情報を取得できます。

PS /Users/nishino.wataru> Get-AwsVpcSubnet -Region AP_NORTHEAST_1 -AwsAccount 123456789012

AwsVpc                                 CidrBlock        IsCompatible
------                                 ---------        ------------
vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16)  172.16.0.0/20    True
vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16)  172.16.160.0/20  True
vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16)  172.16.144.0/20  True
vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16)  172.16.32.0/20   True
vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16)  172.16.128.0/20  True
vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16)  172.16.16.0/20   True

SDDC の情報取得

Get-VmcSddc では接続した VMware Cloud on AWS 環境に存在する SDDC の情報を取得できます。

PS /Users/nishino.wataru> Get-VmcSddc

Name                   DeploymentState SddcType  AccessState AccountLinkState CreatedByU
                                                                              ser
----                   --------------- --------  ----------- ---------------- ----------
Classmethod Trial SDDC Ready           MultiHost Enabled                      nishino.wataru@example.com

SDDC の削除

既存の SDDC を削除し、また別の SDDC を作成する手順を試してみます。

まずは Remove-VmcSddc で SDDC を削除します。

PS /Users/nishino.wataru> Remove-VmcSddc -Sddc "Classmethod Trial SDDC"

Remove Sddc
Perform operation 'Remove' on Sddc 'Classmethod Trial SDDC'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
Removing SDDC: Classmethod Trial SDDC [percent complete: 0                            ]

対象 SDDC の削除が始まっています。しばらく待ちます。

無事削除されました。

SDDC の作成

続いて New-VmcSddc で SDDC の作成をします。 

なお、New-VmcSddc で SDDC を作成するためには事前に AWS アカウントとのリンクを行っておく必要があります。当該プロセスについては以下のドキュメントを参照してください。  

アカウントのリンクと VMware Cloud on AWS CloudFormation テンプレート

New-VmcSddc にはパラメータの1つとしてAwsVpcSubnet[] 型を渡してあげる必要があるのでまずはその準備をします。

今回は Get-AwsVpcSubnet で確認できるサブネットの中から CIDR ブロックが 172.16.160.0/20 であるもの使おうと思います。これを絞り込み、$awsVpcSubnet 変数に代入しておきます。

PS /Users/nishino.wataru> $awsVpcSubnet = Get-AwsVpcSubnet -Region AP_NORTHEAST_1 -AwsAccount 123456789012 | Where-Object {$_.IsCompatible -eq 'True'} | Where-Object {$_.CidrBlock -eq '172.16.160.0/20'}

うまく代入できているか確認しておきましょう。

PS /Users/nishino.wataru> Write-Output $awsVpcSubnet

AwsVpc                                CidrBlock       IsCompatible
------                                ---------       ------------
vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16) 172.16.160.0/20 True

SDDCと接続する先のサブネットを1つに絞り込めているのでこれで準備完了です。

続けて以下のコマンドレットで新たな SDDC を作成します。SDDC の作成には通常2時間程度要するため、非同期でコマンドレットの処理を終わらせるべく -RunAsync オプションを付与しています。

PS /Users/nishino.wataru> New-VmcSddc -Name "Classmethod Neo Trial SDDC" -Provider Aws -HostCount 2 -Region "AP_NORTHEAST_1" -SddcType MultiHost -HostType "I3" -AwsAccount 123456789012 -AwsVpcSubnet $awsVpcSubnet -RunAsync

SDDC の作成が開始されています。しばらく待ちます。

無事 SDDC の作成が完了しました。

参考ページ

VMwareCloudOnAWS Module | VMware PowerCLI Reference

終わりに

このブログがほんの少しでも世界を良くできれば嬉しいです。
AWS事業本部の西野 (@xiyegen) がお送りしました。