はじめに
Amazon Elastic VMware Service (Amazon EVS) は、VMware Cloud Foundation (VCF) をネイティブに AWS 上で動かせるサービスです。詳細はこちらの記事をご覧ください。
Amazon EVS は VPC・DNS・ルーティング・VLAN 設計など、ネットワーク構成を自由にカスタマイズできる柔軟性の高いサービスです。しかしその自由度の高さゆえに、環境構築に必要なリソース数が多く、デプロイが複雑になりやすいという側面があります。
そんな課題を解消するソリューションが、AWS Solutions Library の中で公開されています。
Guidance for Automated Setup for Amazon Elastic VMware Service
https://aws.amazon.com/jp/solutions/guidance/automated-setup-for-amazon-elastic-vmware-service/
CloudFormation テンプレート 1 つ(evs_create_world.yaml)で、VPC・DNS・Route Server・Transit Gateway・EVS 環境まで、約 53 リソースを一括デプロイできます。本記事ではその仕組みを詳しく解説します。
注意: 本稿執筆時点の情報をもとにしています。最新情報は GitHub リポジトリ を参照してください。
手動デプロイの何がつらいのか
Amazon EVS を手動で構築する場合、自由度が高いが故に以下のような課題があります。
- VPC、サブネット、Route 53、Route Server、DHCP など 50 以上のリソースを個別に構成する必要がある
- DNS の正引き・逆引きレコードを 24 件手動で作成
- 10 個の VLAN セグメントの IP アドレス設計が必要
- リソース間の依存関係を正しい順序で構築する必要がある
- 設定ミスのリスクが高く、再現性がない
CloudFormation で何が変わるか
evs_create_world.yaml を使うと、以下がすべて自動化されます。
- 約 53 リソースを正しい依存関係で一括デプロイ
- DNS レコード(正引き 12 件 + 逆引き 12 件)を自動作成
- CIDR ベースの IP アドレス自動計算
- パラメータ入力のみで環境をカスタマイズ可能
- ベストプラクティスに従った再現性のある標準化されたデプロイ
アーキテクチャ全体像
evs_create_world.yaml が作成する AWS リソース
合計 約 53 リソース(Transit Gateway 含む) / 51 リソース(TGW 含まず)
このソリューションが作成する AWS リソースは、大きく 6 つのカテゴリに分かれます。
| カテゴリー | リソース数 | 主な内容 |
|---|---|---|
| Route 53 (DNS) | 26 | Hosted Zones × 2(正引き・逆引き)、A レコード × 12、PTR レコード × 12 |
| VPC Infrastructure | 12 | VPC、Subnets、IGW、NAT GW、Route Tables、EIP |
| Route Server | 8 | Route Server、Endpoints × 2、BGP Peers × 2、Route Propagations × 2 |
| DHCP + R53 Resolver | 3 | DHCP Options Set、Route 53 Inbound Resolver |
| Transit Gateway | 2 | TGW + VPC Attachment(CreateTGWFlag=Create 時のみ) |
| EC2 Key Pair | 1 | RSA PEM 形式(ESXi ホストアクセス用) |
| EVS Environment | 1 | 4x i4i.metal ホスト、10 VLAN セグメント、VCF 構成 |
Infrastructure Composer で見るリソース構成図
CloudFormation の Infrastructure Composer でテンプレートを開くと、リソース間の依存関係が可視化されます。左側の Route 53 レコード群(Forward/Reverse)、中央の DNS ゾーン、右側の VPC・Route Server 系、そして最終的に EVSEnvironment にすべてが集約される構造になっていることがわかります。
CloudFormation テンプレート詳細分析
テンプレートパラメータ(入力値)
パラメータは以下のグループに分けられます。
入力が必要なのはBroadcom Site IDと、VCF ソリューションキー、vSAN ライセンスキー、デプロイ先 AZ の指定の4 つのみです。他の項目はデフォルト値を使うこともできます。
VCF / vSAN ライセンス
| パラメータ名 | 説明 | 値の例 |
|---|---|---|
MyVcfVersion |
VCF バージョン |
VCF-5.2.1 / VCF-5.2.2
|
MySiteId |
Broadcom Site ID(7 桁) | 一意のサイト ID |
MySolutionKey |
VCF ソリューションキー | ライセンスキー文字列 |
MyVsanKey |
vSAN ライセンスキー | ライセンスキー文字列 |
AZ / ネットワーク
| パラメータ名 | 説明 | 値の例 |
|---|---|---|
MyAZ |
デプロイ先 Availability Zone |
us-east-1a 等 |
CreateTGWFlag |
Transit Gateway 作成フラグ |
Skip / Create
|
MyFQDN |
完全修飾ドメイン名 | evs.example.com |
MyCIDR |
VPC CIDR の最初の 2 オクテット |
10.0. (末尾ドット必須) |
ホスト名
| パラメータ名 | 説明 | 値の例 |
|---|---|---|
MyESXI01-04 |
ESXi ホスト名(4 台) |
esxi01 ~ esxi04
|
MyVC, MyNSX, MySDDCM, MyCB
|
管理コンポーネント名 |
vc, nsx, sddcm, cb
|
MyEdge01-02 |
NSX Edge ノード名 |
edge01, edge02
|
MyNSX01-03 |
NSX Manager ノード名 |
nsx01, nsx02, nsx03
|
MyCIDR パラメータの仕組み(/16 固定)
MyCIDR は最初の 2 オクテットのみを指定するプレフィックス文字列で、テンプレート内で第 3・第 4 オクテットが直接文字列結合されるため、VPC は常に /16 で作成されます。/18 等のカスタム CIDR には非対応です。
例: MyCIDR = "10.0."
VPC: 10.0.0.0/16
Service Access: 10.0.0.0/24
Public Subnet: 10.0.5.0/24
VMkernel Mgmt: 10.0.10.0/24
ESXi01 IP: 10.0.10.11
vCenter IP: 10.0.60.10
条件付きリソース: Transit Gateway
CreateTGW 条件(CreateTGWFlag == "Create")の場合のみ、Transit Gateway と VPC Attachment が作成されます。既存の TGW を流用したい場合や TGW が不要の場合は Skip を選択すれば OK です。
ネットワーク設計(VLAN / サブネット / DNS)
ここから 入力した値を元にリソースがどのように自動デプロイされるのかを解説してみます。
DNS リソース — Route 53(26 リソース)
2 つの Hosted Zone が作成されます。
-
ForwardDNSZone: 正引き Hosted Zone —{MyFQDN} -
ReverseDNSZone: 逆引き Hosted Zone —{MyCIDR 逆順}.in-addr.arpa
正引きレコード(12 件)
| リソース名 | FQDN | IP アドレス |
|---|---|---|
| ESXI01Forward | esxi01.{FQDN} |
{CIDR}10.11 |
| ESXI02Forward | esxi02.{FQDN} |
{CIDR}10.12 |
| ESXI03Forward | esxi03.{FQDN} |
{CIDR}10.13 |
| ESXI04Forward | esxi04.{FQDN} |
{CIDR}10.14 |
| vCenterForward | vc.{FQDN} |
{CIDR}60.10 |
| NSXMgrForward | nsx.{FQDN} |
{CIDR}60.11 |
| SDDCMForward | sddcm.{FQDN} |
{CIDR}60.12 |
| CBForward | cb.{FQDN} |
{CIDR}60.13 |
| Edge01Forward | edge01.{FQDN} |
{CIDR}60.14 |
| Edge02Forward | edge02.{FQDN} |
{CIDR}60.15 |
| NSX01Forward | nsx01.{FQDN} |
{CIDR}60.16 |
| NSX02Forward | nsx02.{FQDN} |
{CIDR}60.17 |
| NSX03Forward | nsx03.{FQDN} |
{CIDR}60.18 |
逆引きレコード(12 件)
| リソース名 | PTR レコード | 解決先 FQDN |
|---|---|---|
| ESXI01Reverse | 11.10.{CIDR 逆} |
esxi01.{FQDN} |
| vCenterReverse | 10.60.{CIDR 逆} |
vc.{FQDN} |
| NSXMgrReverse | 11.60.{CIDR 逆} |
nsx.{FQDN} |
| … | … | … |
(全 12 件が対応する正引きレコードに対して自動生成されます)
これを手動でやるとなると、入力ミスや記法ミスなどで手戻りが発生することがあるので自動化の恩恵が一番大きいところかもしれません。
VPC Infrastructure — 12 リソース
| リソース | 詳細 |
|---|---|
| UnderlayVPC |
{CIDR}0.0/16、DNS サポート有効 |
| ServiceAccessSubnet | {CIDR}0.0/24 |
| PublicVPCSubnet | {CIDR}5.0/24 |
| ServiceAccessSubnetRTB | Route Table + Association |
| PublicSubnetRTB | Route Table + Association |
| VPCInternetGateway | IGW + VPC Attachment |
| NatGWEIP + VPCNatGateway | Elastic IP + NAT Gateway |
| PublicRouteIGW |
0.0.0.0/0 → IGW |
| PrivateRouteNATGateway |
0.0.0.0/0 → NAT GW |
DHCP — 2 リソース
| リソース | 詳細 |
|---|---|
| DHCPOptionsSet |
Domain={FQDN}、DNS={CIDR}0.100/0.101、NTP=169.254.169.123
|
| AssociateDHCPOpsSetVPC | VPC に DHCP Options Set を関連付け |
Route Server — 8 リソース
| リソース | 詳細 |
|---|---|
| EVSRouteServer | ASN 65022、PersistRoutes=enable |
| EVSRouteServerAssociation | VPC に関連付け |
| EVSRouteServerEndpoint01/02 | ServiceAccessSubnet 内 |
| EVSRouteServerPeer01 | ASN=65000、{CIDR}80.10 (NSX Uplink) |
| EVSRouteServerPeer02 | ASN=65000、{CIDR}80.11 (NSX Uplink) |
| Propagation (x2) | ServiceAccess RTB + Public RTB |
Transit Gateway — 2 リソース(条件付き)
| リソース | 詳細 |
|---|---|
| EVSTGW | Condition: CreateTGW
|
| EVSTGWVPCAttachment | ServiceAccessSubnet に接続 |
EVS Environment — 1 リソース
すべてのリソースに依存する 最終リソースです。
- 4x
i4i.metalホスト + 10 VLAN セグメント - VCF ホスト名設定 + ライセンス情報
- Route Server Peering 接続
10 個の VLAN セグメントと IP アドレス設計
MyCIDR パラメータ(例: 10.0.)から各セグメントの /24 サブネットが自動計算されます。
| # | VLAN 名 | CIDR | 用途 | 備考 |
|---|---|---|---|---|
| 1🟦 | VmkManagement | {CIDR}10.0/24 |
ESXi ホスト管理ネットワーク | ESXi 01-04: .11-.14 |
| 2🟦 | VMotion | {CIDR}20.0/24 |
vMotion(VM ライブマイグレーション) | |
| 3🟩 | VSan | {CIDR}30.0/24 |
vSAN ストレージトラフィック | |
| 4🟨 | VTep | {CIDR}40.0/24 |
NSX VXLAN トンネルエンドポイント | |
| 5🟨 | EdgeVTep | {CIDR}50.0/24 |
NSX Edge VTEP | |
| 6🟧 | VmManagement | {CIDR}60.0/24 |
VM 管理コンポーネント | vCenter, NSX, SDDCM, CB, Edge, NSX Mgr |
| 7🟧 | Hcx | {CIDR}70.0/24 |
VMware HCX(ハイブリッド接続) | |
| 8🟥 | NsxUpLink | {CIDR}80.0/24 |
NSX アップリンク(BGP ピアリング) | Peer: .10, .11 → Route Server |
| 9⬜ | ExpansionVlan1 | {CIDR}90.0/24 |
拡張用 VLAN 1 | 将来の拡張に予約 |
| 10⬜ | ExpansionVlan2 | {CIDR}100.0/24 |
拡張用 VLAN 2 | 将来の拡張に予約 |
- 🟦 ホスト管理系(#1, #2)
- 🟩 ストレージ系(#3)
- 🟨 オーバーレイ系(#4, #5)
- 🟧 VM 管理系(#6, #7)
- 🟥 アップリンク系(#8)
- ⬜ 拡張予約(#9, #10)
デプロイ手順
AWS マネジメントコンソールからのデプロイの場合
AWS マネジメントコンソールから CloudFormation -> スタック -> スタックの作成 にてデプロイできます。
-
GitHub リポジトリから ダウンロードした evs_create_world.yaml をテンプレートとしてアップロードします。
AWS CLI でのデプロイの場合
# 1. リポジトリをクローン
git clone https://github.com/aws-solutions-library-samples/guidance-for-automated-setup-for-elastic-vmware-service-on-aws.git
# 2. デプロイディレクトリに移動
cd guidance-for-automated-setup-for-elastic-vmware-service-on-aws/deployment
# 3. CloudFormation スタックをデプロイ
aws cloudformation create-stack \
--stack-name evs-environment \
--template-body file://evs_create_world.yaml \
--parameters ParameterKey=MyVcfVersion,ParameterValue=VCF-5.2.1 \
ParameterKey=MySiteId,ParameterValue=<BroadcomSiteID> \
ParameterKey=MySolutionKey,ParameterValue=<VCFライセンスキー> \
ParameterKey=MyVsanKey,ParameterValue=<vSANライセンスキー> \
ParameterKey=MyAZ,ParameterValue=us-east-1a \
ParameterKey=MyFQDN,ParameterValue=evs.example.com \
ParameterKey=MyCIDR,ParameterValue=10.0. \
--capabilities CAPABILITY_IAM
の CloudFormation からパラメータをフォームで入力してデプロイすることもできます。
注意事項と制約
- DNS は Route 53 のみ対応: カスタム DNS サーバーを使いたい場合は、このテンプレートは使えません。Amazon EVS ユーザーガイドの手動手順に従ってください。
-
CIDR 固定: VPC は常に
/16で作成(カスタム CIDR には非対応) -
サービスクォータ:
i4i.metalインスタンスの vCPU クォータ(512 vCPU = 4 x 128)が事前に確保されている必要があります。 - クリーンアップ時の順序: CloudFormation スタック削除前に、EVS Environment を手動で削除する必要があります。
# ESXi ホストの削除
aws evs delete-environment-host --environment-id [environment-id] --host [host]
# EVS Environment の削除
aws evs delete-environment --environment-id [environment-id]
# CloudFormation スタック削除
aws cloudformation delete-stack --stack-name evs-environment
デプロイ後の Next Steps
デプロイが終わったら、次は以下の作業に進みます。
-
CloudFormation スタック出力値の確認
EVS Environment ID、VPC ID、Subnet ID 等の出力値を記録 -
vCenter / NSX Manager へのアクセス確認
DNS 名前解決の確認、管理コンソールへのログイン検証 -
ネットワーク接続の検証
Transit Gateway 経由の接続、BGP ピアリング状態の確認 -
VMware ワークロードの移行計画策定
HCX を活用した移行戦略の検討、移行対象 VM の選定 -
運用監視・バックアップの設定
CloudWatch 監視、AWS Backup の設定、アラート通知の構成
まとめ
Amazon EVS のデプロイは、手動では 50 以上のリソースを正しい依存関係で構築する必要があり、DNS レコードの手動作成まで含めると非常に骨の折れる作業でした。
今回紹介した Guidance for Automated Setup for Amazon EVS を使えば、CloudFormation テンプレート 1 つで約 53 リソースを一括デプロイでき、MyCIDR プレフィックスを指定するだけで 10 個の VLAN セグメントと 24 件の DNS レコードが自動生成されます。再現性の高い、標準化されたデプロイが実現できるため、PoC や検証環境の構築、複数環境の展開にぴったりです。
Amazon EVS を触ってみたいけど環境構築がハードル、という方はぜひ試してみてください。







