0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon EVS で VCF 9.1 のデプロイがさらに簡単に!CloudFormation スタック1つで構築

0
Posted at

先日、Amazon EVS 上で VCF 9.1 をエンドツーエンドに自動デプロイする流れを、3コマンド+手動30分の全体像として書きました。

記事で紹介したのは Deploy/VCF9-Phased-Deployment というツールキットで、Terraform(Phase 1)→ Python(Phase 2)→ 手動 OVA デプロイ(約30分)→ Python(Phase 3)という3フェーズ構成でした。手を動かすのは実質3コマンド、というものです。

その3フェーズでのステップを紹介したばかりですが、、さらに簡単な EVS Deployment Orchestrator が追加されました。こちらは Terraform も、途中の手動30分も不要で、CloudFormation スタックを1つ起動するだけで完成まで走り切ります。前回の3フェーズ方式の後継にあたるもので、今後はこちらを主に使っていくことになりそうなので、あらためて全体像を整理してみます。

  • GitHub:

EVS Deployment Orchestrator とは

aws/solutions-for-amazon-evs リポジトリの Deploy/EVS-Deployment-Orchestrator にある、Amazon EVS 上で VCF 9 をデプロイするための CloudFormation ベースのソリューションです。現時点では、VCF 9.0.2 と 9.1.0 に対応しています。

いちばんの特徴は、ユーザーが起動するのが CloudFormation スタック1つだけ、という点です。スタックを起動すると、アカウント内に小さな runner(EC2 インスタンス)が自動で立ち上がり、この runner がネットワーク構築からベアメタルホストのプロビジョニング、VCF 本体のインストール・設定、NSX Edge クラスターの構築まで、すべての工程を無人で代行してくれます。前回の方式であった「フェーズごとにコマンドを叩く」「途中で ESXi UI にログインして手作業する」といった操作が丸ごと不要になりました。

所要時間はおおよそ4〜7時間。ただしこの時間はほぼ待ち時間で、人が張り付いて操作する必要はありません。

何が変わったのか:旧方式との比較

前回の3コマンド方式(VCF9-Phased-Deployment)と何が違うのか、並べてみます。

旧: VCF9-Phased-Deployment 新: EVS Deployment Orchestrator
実行方式 Terraform + Python の3フェーズ + 手動30分 CloudFormation スタック1つを起動して待つだけ
ローカルに必要なもの Terraform、jumpbox 上での作業 基本なし(S3 に3ファイル置くだけ)
実行主体 手元のワークステーション アカウント内に自動起動する runner
手動作業 ESXi UI での約30分(データストア・VLAN タグ・OVA デプロイ) なし
所要時間 約3.5〜6時間 約4〜7時間(完全無人)
撤去 terraform destroy ほか destroy.py 1コマンド

やっていること(ゼロから稼働する VCF 環境を組み上げる)は同じですが、「人が触る回数」がぐっと減っています。特に、前回の記事で「唯一の手作業」と書いた途中の30分の手動ステップが自動化されたのが大きな変化です。

全体アーキテクチャ(デプロイ完了後)

デプロイが完了すると、次のものが揃った状態になります。

  • VPC とネットワーク一式(DNS・NAT Gateway・VPC Route Server・セキュリティグループ)。既存 VPC への展開(BYO-VPC)も可能
  • 自アカウント内のベアメタル EC2 上に構成された ESXi ホスト(インスタンスタイプと台数は blueprint で指定)
  • VCF 9 一式 — vCenter Server / NSX Manager / SDDC Manager / VCF Operations
  • NSX オーバーレイと VPC をつなぐ NSX Edge クラスター
  • 全アプライアンスの認証情報を格納した AWS Secrets Manager のシークレット群

構成そのものは前回のツールキットとほぼ同じで、デフォルトは3ホストの Simple モデルです。ホスト数や Simple / HA の考え方は以前の記事で掘り下げているので、そちらもどうぞ。

全体の流れ:3つの準備 + スタック1つ

まず全体像から。手を動かすのは、実質「シークレットを1つ作る」「S3 に3ファイル置く」「スタックを1つ起動する」の3つだけです。

ステップ 実行場所 所要時間 やること
1. デポトークンの登録 ローカル / CLI 数分 Broadcom デポトークンを Secrets Manager のシークレットにする
2. blueprint の準備 ローカル 数分 サンプルをコピーして2箇所だけ書き換える
3. S3 へアップロード ローカル / CLI ファイルサイズ次第 blueprint・OVA・ovftool の3ファイルを S3 に置く
4. スタックの起動 CloudFormation 起動は約5分 テンプレートを起動して、あとは待つだけ
(自動)VCF デプロイ runner(自動) 約4〜7時間 ネットワーク → ホスト → VCF → NSX Edge を無人構築

1つ目のスタックは約5分で完了しますが、この時点では runner と基本ネットワークができただけで、VCF のデプロイはまだ始まっていません。その後 runner が2つ目のスタック(デプロイ用インフラ)を自動生成し、そこから本番のデプロイが4〜7時間かけて進みます。

以下、準備するものと流れをもう少し具体的に見ていきます。

事前に用意するもの

CloudFormation スタックを起動する前に、次の4つを用意します。前回の記事で扱ったデポトークンや OVA がそのまま使える、と考えると分かりやすいです。

  • Broadcom デポトークン — VCF のバイナリをダウンロードするために必要なトークン。Broadcom Support Portal の VCF エンタイトルメント配下で発行し、Secrets Manager にシークレットとして登録します(既定名 evs-depot-token)。取得でつまずきやすいポイントなので、初めての方は取得手順をまとめた記事(別途公開予定)もあわせて確認してみてください。
  • VCF SDDC Manager OVA — 同じく Broadcom Support Portal からダウンロードします。ここで大事なのは、OVA のバージョンを blueprint の vcf_version と一致させること。9.1.0 の環境を作るなら 9.1.0 の OVA が必要です。
  • VMware ovftool(Linux 版 zip) — OVA をデプロイするためのツール。これも Broadcom Support Portal から取得します。
  • blueprint(YAML) — 環境定義ファイル。リポジトリの blueprints/ にインスタンスタイプ × VCF バージョン別のサンプルが用意されているので、それをコピーして使います。

このうち OVA と ovftool は一度ローカルにダウンロードし、blueprint とあわせて3ファイルを S3 バケットにアップロードします。

なお、前提として Business または Enterprise サポートプランが有効な AWS アカウントが必要です。また、ベアメタルの vCPU クォータ(L-1216C47A)が「ホスト数 × ホストあたり vCPU」を満たしている必要があります(i4i.metal は128 vCPU/台、i7i.metal-24xl は96 vCPU/台)。リポジトリには check-quotas.py という読み取り専用のクォータ事前チェックスクリプトも同梱されているので、起動前に走らせておくと安心です。

blueprint は2箇所だけ書き換える

blueprint は環境の設計図で、blueprints/ フォルダから自分の構成に合うものを選んで blueprint.yaml にコピーします。たとえば i4i.metal で VCF 9.1.0 の vSAN 構成なら i4i.metal.vcf91.vsan.example.yaml です。

サンプルには推奨値がすべて埋まっているので、必ず書き換えるのは2箇所だけです。

  • dns.fqdn — 好きなプライベートドメイン名(例: vcf.example.internal)。プライベート DNS ゾーンが自動作成されるので、ドメインを登録したりする必要はありません
  • evs.environment_name — この環境の表示名

instance_typevcf_version は選んだ blueprint 側で設定済みなので、触る必要はありません。ホストを増やしたいときは hostnames.esxi のリストにエントリを追加します(Simple モデルは3ホストから、HA モデルは4ホストから)。踏み台サーバー(ジャンプボックス)や HCX を有効にしたい場合も、この blueprint 内のフラグで切り替えます。

デプロイの流れ(実際の操作)

準備ができたら、あとは起動して待つだけです。CLI で起動する場合はこんなイメージです。

# 1. デポトークンをシークレットに登録
aws secretsmanager create-secret \
  --name evs-depot-token \
  --secret-string "<YOUR-DEPOT-TOKEN>" \
  --region us-east-2

# 2. blueprint・OVA・ovftool を S3 にアップロード(バケットは事前に用意)
aws s3 cp blueprint.yaml s3://$BUCKET/blueprint.yaml --region us-east-2
aws s3 cp $OVA s3://$BUCKET/ --region us-east-2
aws s3 cp $OVF s3://$BUCKET/ --region us-east-2

# 3. CloudFormation スタックを起動
aws cloudformation create-stack \
  --stack-name my-evs-deployment \
  --region us-east-2 \
  --template-body file://evs-deployment-orchestrator.yaml \
  --capabilities CAPABILITY_IAM \
  --parameters \
    ParameterKey=BlueprintKey,ParameterValue=s3://$BUCKET/blueprint.yaml \
    ParameterKey=OvaKey,ParameterValue=s3://$BUCKET/$OVA \
    ParameterKey=OvfKey,ParameterValue=s3://$BUCKET/$OVF \
    ParameterKey=AvailabilityZone,ParameterValue=us-east-2a \
    ParameterKey=DepotSecretName,ParameterValue=evs-depot-token

もちろん、テンプレートのアップロードとパラメーター入力を CloudFormation コンソールから行っても構いません。

起動後の進捗は、1つ目のスタックの Outputs タブにある OrchestratorLogsUrl から CloudWatch Logs でリアルタイムに追えます。SnsTopicArn パラメーターに SNS トピックを指定しておくと、開始・各ステージ完了・成功/失敗の通知も飛ばせます(長いステージ中は約2時間ごとにも通知されます)。ログに ALL STAGES COMPLETE が出れば完了です。

4〜7時間のあいだ、ログの出力が止まって見える時間帯があります。ベアメタルホストの作成に45〜100分、VCF bringup と NSX Edge に3〜5.5時間ほどかかるので、無音が続くのは正常です。失敗しているかどうかは、ログに FAIL [<stage-id>] が出ていないかで見分けます。

中で何が起きているのか — runner と9つのステージ

「スタック1つ」といっても、中では runner が段階を追って処理を進めています。前回の3フェーズ方式を知っていると、対応関係が見えてきて面白いところです。runner 上の処理は、次の9つのステージに分かれています。

# ステージ 内容
1 aws_config ランディングゾーン(NAT Gateway・Route Server・セキュリティグループ)の作成
2 generate_config デプロイ設定の生成
3 validate_dns DNS の検証
4 phase2_deploy EVS 環境とベアメタルホストの作成
5 esxi_vlan_tag ESXi 準備:VLAN タグ付け
6 esxi_vmfs_create ESXi 準備:VMFS データストア作成
7 esxi_ova_deploy ESXi 準備:SDDC Manager OVA のデプロイ
8 esxi_ova_verify ESXi 準備:OVA デプロイの検証
9 phase3_deploy VCF bringup と NSX Edge クラスターの構築

前回の記事で「唯一の手作業」として紹介した、データストア作成・VLAN タグ付け・OVA デプロイの3つ(ステージ5〜7)が、そっくりそのまま自動化されているのが分かります。各ステージは checkpoint で記録されるので、途中で失敗しても未完了のステージから再開できます(完了済みはスキップされます)。

パスワードの扱いも前回同様よくできていて、vCenter や NSX、SDDC Manager などの認証情報は自動生成され、evs-<environment-id>_<role> という名前で Secrets Manager に保存されます。平文がディスクに残らない設計です。

デプロイ後の環境とアクセス

完成すると、各コンポーネントの管理 UI に次の URL でアクセスできます。

  • vCenter: https://vc.<fqdn>
  • NSX Manager: https://nsx.<fqdn>
  • SDDC Manager: https://sddcm.<fqdn>

ただしこれらは VPC 内のプライベートネットワーク上にあるので、外部から直接は開けません。手軽にアクセスしたい場合は、blueprint で jumpbox.enabled: true にしておくと Windows のジャンプボックスが一緒に作られます(このジャンプボックスも、インバウンドは自分の IP から RDP を開けるまでは閉じたままなので安心です)。VPN や AWS Client VPN 経由でも到達できます。

各種パスワードは、先ほどの Secrets Manager から取り出します(vcenterSsonsxAdminsddcManagerRoot など)。

撤去(Teardown)

使い終わったら、同梱の destroy.py で片付けます。

# 環境のみ削除(最も安全。インフラは再利用のため残す)
python3 destroy.py --bootstrap-stack my-evs-deployment --region us-east-2

# 全部消す(VPC・runner 含む)
python3 destroy.py --bootstrap-stack my-evs-deployment --region us-east-2 --all

ここで1点だけ注意があります。ESXi ホストは CloudFormation ではなく EVS の API 経由で作られているため、CloudFormation スタックを先に消すとホストが残って課金され続けます。片付けるときは、スタック削除の前に必ず destroy.py を実行するのが正解です。スクリプトは環境 ID や VPC を自動で見つけてくれて、べき等なので再実行も安全です。

まとめ

Amazon EVS 上での VCF 9 のデプロイが、CloudFormation スタック1つで完結するところまで、さらに簡単になりました。

  • 用意するのは前回と同じ材料(デポトークン・OVA・ovftool)+ blueprint
  • blueprint は2箇所だけ書き換える
  • スタックを1つ起動したら、あとは4〜7時間待つだけ
  • 前回「唯一の手作業」だった途中の30分も自動化された
  • 撤去も destroy.py 1コマンド

前回の3コマンド方式でも十分ラクになったと感じていましたが、今回のはさらにその上を行っていて、正直「ここまで簡単になったのか」という印象です。VCF の構築に張り付く時間がほぼゼロになるので、EVS 上で VCF 9 を試したい方は、まずこちらを使ってみるのがよさそうです。

各ステージの中身や blueprint のカスタマイズは、また別記事で掘り下げていく予定です。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?