ツールキットを使用してノードを準備し、VCF をデプロイする

このページでは、 Google Cloud ツールキットの VMware ソリューションを使用して、ベアメタル ESXi ノードの準備、vSwitch ネットワーキングと vSAN データストアの構成、VMware Cloud Foundation(VCF)インストーラ アプライアンスのデプロイを行う方法について説明します。

概要

VMware ソリューション ツールキットは、 Google Cloud プロジェクトにデプロイされたベアメタル ESXi インスタンスの初期設定を自動化します。ジャンプボックス VM から実行すると、ツールキットは次のアクションを実行します。

  1. ホスト認証情報の検証とパスワードの再設定: 各ベアメタル ESXi インスタンスに接続し、初期 ESXi root パスワードを Secret Manager に保存されている esxi-root-password シークレットに再設定します。
  2. ネットワーク構成: vSwitch0 を構成し、VCF インストーラ ネットワーク用の VLAN タグ付きポートグループを作成します。
  3. ストレージ構成: ローカル SSD を vsanDatastore プールに初期化します。
  4. VCF インストーラのデプロイ: オフライン デポから VCF インストーラの Open Virtual Appliance(OVA)をダウンロードし、指定されたターゲット ESXi ホストにアプライアンスをデプロイして、ネットワークと DNS のパラメータを挿入し、インストーラを初期化します。

デプロイパスを選択する

ツールキットは、次のいずれかの方法で実行できます。

  • パス 1: Terraform を使用してジャンプボックスをプロビジョニングする(推奨): Terraform を使用して、ESXi ホスト VPC、VPC サブネット、Cloud NAT ゲートウェイ、Identity-Aware Proxy(IAP)SSH ファイアウォール ルール内に専用の Compute Engine ジャンプボックス VM をプロビジョニングします。
  • パス 2: 既存のジャンプボックス VM を使用する: 限定公開の Google アクセスが有効になっているサブネットの ESXi ホスト VPC 内にある既存の Linux VM からツールキットを直接実行します。

始める前に

ツールキットを実行する前に、次の前提条件を満たしてください。

VLAN ベースのレイヤ 2 サブネット ネットワーキングを許可リストに登録する

VMware ソリューションでは、VLAN ベースのネットワーキングをサポートするために、Virtual Private Cloud(VPC)ネットワークのサブネットで [サブネット マスクを解決する] プロパティを [学習を伴うプライマリ範囲のみをブロードキャストする] に設定する必要があります。Google Cloud コンソールのサポート センターで、次の情報を含むサポート チケットを開きます。

  • プロダクト: Google Cloud VMware Engine
  • 優先度: P2
  • カテゴリ: ネットワーク接続
  • ビジネスへの影響: 技術に関する一般的な質問
  • 詳細情報を提供する: Allowlist L2 network connectivity for my project、プロジェクト ID、プロジェクト番号、デプロイのターゲット リージョンとゾーン

VLAN ベースのネットワーキングのサポートの詳細については、レイヤ 2 エミュレーション: ARP ブロードキャストとカスタム MAC ラーニングをご覧ください。

必要な API の有効化

課金が有効になっているアクティブな Google Cloud プロジェクトが必要です(これは、ESXi ホストが存在する Google Cloud プロジェクトと同じプロジェクトでも、別のジャンプボックス プロジェクトでもかまいません)。次の API を有効にします。

  • Compute Engine API(compute.googleapis.com)- ジャンプボックス プロジェクトと ESXi ホスト プロジェクト
  • Identity and Access Management(IAM)API(iam.googleapis.com)- ジャンプボックス プロジェクト用
  • Cloud Resource Manager API(cloudresourcemanager.googleapis.com)- ジャンプボックスと ESXi ホスト プロジェクト用
  • Cloud Identity-Aware Proxy API(iap.googleapis.com)- ジャンプボックス プロジェクト用
  • Secret Manager API(secretmanager.googleapis.com)- ESXi ホスト プロジェクト用

gcloud CLI を使用して API を有効にするには、次のコマンドを実行します。

gcloud services enable \
    compute.googleapis.com \
    iam.googleapis.com \
    cloudresourcemanager.googleapis.com \
    iap.googleapis.com \
    secretmanager.googleapis.com \
    --project='PROJECT_ID'

PROJECT_ID は、ターゲット Google Cloud プロジェクトの ID に置き換えます。

IAM 権限を構成する

ツールキット ワークフローでは、次の ID とロールを使用します。

  • Terraform Invoker: terraform apply を起動するユーザーまたは CI/CD ID。ランナーの権限を借用する場合は、Terraform Runner サービス アカウントにサービス アカウント トークン作成者(roles/iam.serviceAccountTokenCreator)が必要です。
  • Terraform Runner: Terraform インフラストラクチャをプロビジョニングする ID。
    • Compute ネットワーク管理者(roles/compute.networkAdmin)
    • Compute インスタンス管理者 v1(roles/compute.instanceAdmin.v1)
    • Compute セキュリティ管理者(roles/compute.securityAdmin)
    • サービス アカウント ユーザー(roles/iam.serviceAccountUser)
    • ターゲット プロジェクトのプロジェクト IAM 管理者(roles/resourcemanager.projectIamAdmin)(Terraform で自動 IAM 管理を使用する場合)
  • ジャンプボックス SSH ユーザー: IAP を使用してジャンプボックス VM に接続する ID。
    • IAP トンネル リソース アクセサー(roles/iap.tunnelResourceAccessor)
    • Compute 閲覧者(roles/compute.viewer)
  • ジャンプボックス スクリプト ランナー: ジャンプボックスで Python ツールキット スクリプトを実行するユーザーまたはサービス アカウント。
    • Secret Manager のシークレット アクセサー(roles/secretmanager.secretAccessor)
    • Compute 管理者(roles/compute.admin)
    • プロジェクト IAM 管理者(roles/resourcemanager.projectIamAdmin)
  • VMware Engine ネットワーク ドリフト サービス エージェント(P4SA)(service-PROJECT_NUMBER@gcp-sa-network-drift.):
    • Compute ネットワーク管理者(roles/compute.networkAdmin)

認証情報を Secret Manager に保存する

ツールキットは、実行時に Secret Manager からパスワードを取得し、esxi-root-password シークレットを使用して、各ベアメタル ESXi インスタンスの初期 root パスワードをリセットします。ESXi root パスワード、VCF root パスワード、VCF ローカル ユーザー(admin)パスワードのシークレットを Google Cloud プロジェクトに作成します。

# 1. Create Secret for ESXi Host Root Password
gcloud secrets create esxi-root-password \
    --replication-policy='automatic' \
    --project='PROJECT_ID'
echo -n 'YOUR_ESXI_ROOT_PASSWORD' | gcloud secrets versions add esxi-root-password \
    --data-file=- \
    --project='PROJECT_ID'
# 2. Create Secret for VCF Installer Root Password
gcloud secrets create vcf-root-password \
    --replication-policy='automatic' \
    --project='PROJECT_ID'
echo -n 'YOUR_VCF_ROOT_PASSWORD' | gcloud secrets versions add vcf-root-password \
    --data-file=- \
    --project='PROJECT_ID'
# 3. Create Secret for VCF Local User Password
gcloud secrets create vcf-localuser-password \
    --replication-policy='automatic' \
    --project='PROJECT_ID'
echo -n 'YOUR_VCF_ADMIN_PASSWORD' | gcloud secrets versions add vcf-localuser-password \
    --data-file=- \
    --project='PROJECT_ID'

コマンドを実行する前に、次のように置き換えます。

  • PROJECT_ID: ターゲットGoogle Cloud プロジェクトの ID。
  • YOUR_ESXI_ROOT_PASSWORD: ベアメタル ESXi ホストに設定する新しい root パスワード。初期インスタンス パスワードを置き換えます。
  • YOUR_VCF_ROOT_PASSWORD: VCF インストーラ アプライアンスの root パスワード。
  • YOUR_VCF_ADMIN_PASSWORD: VCF インストーラ アプライアンスのローカル管理者ユーザーのパスワード。

Terraform を使用してジャンプボックスをプロビジョニングする

ESXi ホストにネットワーク接続されている既存のジャンプボックスがない場合は、提供されている Terraform モジュールを使用してジャンプボックス VM をデプロイします。

ツールキット リポジトリのクローンを作成する

ツールキット リポジトリのクローンをローカル ワークステーションに作成します。

mkdir -p ~/smve-toolkit
cd ~/smve-toolkit
git clone https://github.com/GoogleCloudPlatform/self-managed-vmware-solution-toolkit
cd self-managed-vmware-solution-toolkit/smve-toolkit-jumpbox-tf

Terraform 変数を構成する

infrastructure ディレクトリに移動して、terraform.tfvars ファイルを作成します。

cd infrastructure
cp terraform.tfvars.example terraform.tfvars

terraform.tfvars ファイルをプロジェクト パラメータで更新します。

project_id      = "PROJECT_ID"
region          = "REGION"
zone            = "ZONE" # Match target ESXi host zone
# Network configuration
create_subnet   = true
vpc_name        = "VPC_NAME"
subnet_name     = "smve-toolkit-subnet"
subnet_cidr     = "10.10.0.0/28" # Minimum /29 required
# Cloud NAT and egress
enable_internet = true
# Jumpbox VM instance
jumpbox_name    = "smve-toolkit-jumpbox"

次の表に、Terraform の主な入力変数を示します。

変数 要件 デフォルト 説明
project_id 必須 なし Terraform がインフラストラクチャをデプロイするGoogle Cloud プロジェクト ID。
region 必須 なし ターゲットの Google Cloudリージョン(例: us-central1)。
zone 省略可 ${region}-a ターゲット ゾーン。レイテンシを最小限に抑えるため、この変数はベアメタル ESXi ホストのゾーンと一致するように設定します。
vpc_name 条件付き "" ESXi ノードをホストする VPC ネットワークの名前。create_subnet 変数が true に設定されている場合は必須です。
create_subnet 省略可 true 新しいサブネットを作成するには true に設定し、既存のサブネットを使用するには false に設定します。
subnet_name 省略可 "smve-toolkit-subnet" ジャンプボックス VM のサブネットワークの名前。create_subnet 変数が false に設定されている場合、サブネットは vpc_name ネットワークに存在する必要があります。
subnet_cidr 条件付き "" プライマリ IPv4 CIDR 範囲(最小 /29)。create_subnet 変数が true に設定されている場合は必須です。
enable_internet 省略可 true インターネットの下り(外向き)の Cloud Router、Cloud NAT、デフォルト ルートの作成を制御します。NAT ゲートウェイ、ルーター、ルートを破棄するには、設定後に false に設定します。
jumpbox_name 省略可 "smve-toolkit-jumpbox" Compute Engine ジャンプボックス VM の名前。
machine_type オプションの "e2-micro" ジャンプボックス VM インスタンスのマシンタイプ。
boot_disk_size 省略可 30 ジャンプボックス VM インスタンスのブートディスクのサイズ(GB)(最小 10 GB)。
boot_disk_type 省略可 "pd-balanced" ジャンプボックス ブートディスクの永続ディスクタイプ(pd-balanced、pd-standard、pd-ssd、pd-extreme)。
boot_disk_image 省略可 "debian-cloud/debian-12" OS ブートディスク イメージ ファミリーまたは特定のイメージ self_link。
jumpbox_internal_ip 省略可 "" 静的内部 IPv4 アドレス(例: "10.10.0.5")、予約済み IP 名、または URI。デフォルトは動的なエフェメラル IP アドレスです。
service_account_email 省略可 "" ジャンプボックス VM に接続するカスタム サービス アカウントのメールアドレス。デフォルトは、Compute Engine のデフォルトのサービス アカウントです。

ジャンプボックス インフラストラクチャをデプロイする

Terraform 構成を初期化して適用します。

export GOOGLE_IMPERSONATE_SERVICE_ACCOUNT='TERRAFORM_RUNNER_SA' # Optional: set only if impersonating a runner service account
terraform init
terraform validate
terraform plan -out=tfplan
terraform apply tfplan

TERRAFORM_RUNNER_SA は、Terraform ランナー サービス アカウントのメールアドレスに置き換えます。

IAP を使用してジャンプボックスに接続する

IAP TCP 転送を使用してジャンプボックス VM に接続します(パブリック IP アドレスは不要)。

gcloud compute ssh smve-toolkit-jumpbox \
    --project='PROJECT_ID' \
    --zone='ZONE' \
    --tunnel-through-iap

コマンドを実行する前に、次のように置き換えます。

  • PROJECT_ID: ジャンプボックス VM をホストする Google Cloud プロジェクトの ID。
  • ZONE: ジャンプボックス VM がデプロイされている Google Cloud ゾーン。

既存のジャンプボックス VM を使用する

既存のジャンプボックス VM を使用する場合は、ベアメタル ESXi ノードをホストする同じ VPC ネットワーク内にある Linux Compute Engine VM である必要があります。この VPC 配置要件は、VCF インストーラ OVA をホストするオフライン デポの Private Service Connect(PSC)エンドポイントへのネットワーク接続を確保するために必須です。

ツールキットを実行する前に、既存のジャンプボックス VM が次の要件を満たしていることを確認します。

  1. VPC の配置: ESXi ノードをホストする VPC ネットワーク内に VM をデプロイする必要があります。
  2. Google Cloud API アクセス: ジャンプボックス VM をホストするサブネットワークで、プライベート Google アクセス(private_ip_google_access = true)または secretmanager.googleapis.com、compute.googleapis.com、iam.googleapis.com にアクセスするためのアウトバウンド インターネット アクセスを有効にする必要があります。
  3. パッケージ インストールの上り(内向き): Python 依存関係をインストールするための送信 HTTP/HTTPS アクセス(Cloud NAT、企業プロキシ、または直接下り(外向き)を使用)。
  4. API の有効化と IAM 権限: スクリプトを実行する ID には、 Google Cloud プロジェクトに対する roles/secretmanager.secretAccessor、roles/compute.admin、roles/resourcemanager.projectIamAdmin のロールが必要です。
  5. SSH 接続: ジャンプボックスは、IAP IP 範囲(35.235.240.0/20)または承認済みのパブリック IP 範囲からの TCP ポート 22 での SSH 上り(内向き)を許可する必要があります。また、接続する ID には、該当するロール(roles/iap.tunnelResourceAccessor と roles/compute.viewer)が必要です。

ジャンプボックスにツールキットを設定する

ジャンプボックス ターミナルで、依存関係をインストールし、ツールキット スクリプトをダウンロードします。

システム パッケージをインストールする

Python 3、pip、venv、Git をインストールします。

sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv git

ツールキット スクリプトを取得する

リポジトリのクローンを作成するか、ローカル ワークステーションからスクリプトをコピーします。

  • オプション A(Git を使用してクローンを作成する):

    mkdir -p ~/smve-toolkit
    cd ~/smve-toolkit
    git clone https://github.com/GoogleCloudPlatform/self-managed-vmware-solution-toolkit
    cd self-managed-vmware-solution-toolkit/python
    
  • オプション B(gcloud compute scp を使用してローカル ワークステーションからコピーする):

    gcloud compute scp --recurse ./smve-toolkit smve-toolkit-jumpbox:~/ \
      --project='PROJECT_ID' \
      --zone='ZONE' \
      --tunnel-through-iap
    # On the jumpbox terminal, go to the copied folder:
    cd ~/smve-toolkit/python
    

Python 仮想環境を作成してアクティブにする

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

ツールキット スクリプトの構成ファイルを構成する

ジャンプボックス VM に config.json 構成ファイルを作成して、ターゲット ESXi インスタンスと VCF デプロイ設定を指定します。

構成パラメータ

パラメータ 必須 データ型 説明
project はい string ベアメタル ESXi インスタンスが存在するターゲット Google Cloud プロジェクト ID。
zone はい string ESXi ノードが存在するターゲット Google Cloud ゾーン。
gce_nodes ○ list(string) または object ベアメタル ESXi インスタンス名の明示的なリスト(["vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2"] など)、または prefix({"prefix": "vcf-mgmt-sample"} など)または subnet({"subnet": "vcf-mgmt-subnet"})でインスタンスを検出するオブジェクト。
esxi_root_password_secret はい string ESXi root パスワードを含む Secret Manager のシークレット名またはリソースパス。
vcf_deployment_config 省略可 object VCF インストーラのデプロイと初期化の構成オブジェクト。準備中のノードに VCF インストーラをデプロイする必要がない場合は、このオブジェクトを省略します。
└─ target_gce_node 条件 string 初期デプロイ ワークロードをホストするターゲット ベアメタル ノード。vcf_deployment_config オブジェクトが定義されている場合は必須。
└─ vcf_appliance_root_password_secret 条件 string VCF アプライアンスの root パスワードを含む Secret Manager のシークレット名。
└─ vcf_appliance_local_user_password_secret 条件 string VCF アプライアンスのローカル ユーザー(管理者)のパスワードを含む Secret Manager の Secret 名。
└─ vcf_installer_ip_source 条件付き string または object VCF インストーラ(SDDC Manager)の IP アドレスソース。{"reserved_address": "ADDRESS_NAME"}、{"forwarding_rule": "RULE_NAME"}、または直接リソース URI 文字列(projects/PROJECT_ID/regions/REGION/forwardingRules/RULE_NAME など)を指定します。
└─ vcf_installer_fqdn 条件 string VCF インストーラ(SDDC Manager)の完全修飾ドメイン名(FQDN)。
└─ offline_depot_subnet_cidr 条件付き string 専用のオフライン デポ サブネットのプライマリ IPv4 CIDR の範囲(例: /29)。VPC 内の既存のサブネットと重複したり、再利用したりしないでください。
└─ dns_server 省略可 string DNS サーバーの IP アドレス(サブネットの予約済み DNS IP やカスタム DNS サーバーなど)。省略した場合、デフォルトはGoogle Cloud メタデータ サーバー(169.254.169.254)になります。Cloud DNS を使用する場合は、レイヤ 2 以外のサブネットの IP アドレスを指定します。

構成例

次のタブは、さまざまなインスタンス ターゲティング アプローチと IP 割り振り戦略の config.json 構成の例(python/examples/ ディレクトリで使用可能なテンプレートに基づく)を示しています。

明示的なノードリスト

この構成(python/examples/config_explicit_nodes.json)を使用して、特定の ESXi インスタンス名をターゲットにします。

{
// Target Google Cloud project ID where bare-metal ESXi instances reside
"project": "PROJECT_ID",
// Target Google Cloud Compute Engine zone for ESXi instances
"zone": "us-east4-c",
// Explicit list of bare-metal ESXi Compute Engine instance names
"gce_nodes": [
  "vcf-mgmt-sample-node-1",
  "vcf-mgmt-sample-node-2",
  "vcf-mgmt-sample-node-3",
  "vcf-mgmt-sample-node-4"
],
// Secret Manager secret containing the ESXi root password
"esxi_root_password_secret": "esxi-root-password",
// Optional Jumpbox logging configuration (defaults to ~/logs/vcf_deployer_<timestamp>.log).
// DEBUG level is default for file logs and console level can be controlled by "log_level" (defaults to INFO).
// "log_dir": "~/logs",
// "log_file": "~/logs/vcf_deployer_custom.log",
// "log_level": "INFO",
// VCF deployment and initialization parameters
"vcf_deployment_config": {
  // Target bare-metal node hosting the initial deployment workloads
  "target_gce_node": "vcf-mgmt-sample-node-1",
  // IPv4 CIDR range for dedicated offline depot subnetwork (for example, /29). Must not overlap with or reuse any existing subnets in the VPC
  "offline_depot_subnet_cidr": "10.2.100.0/29",
  // Secret Manager secret containing the VCF appliance root password
  "vcf_appliance_root_password_secret": "vcf-root-password",
  // Secret Manager secret containing the VCF appliance local user password
  "vcf_appliance_local_user_password_secret": "vcf-localuser-password",
  // Source identifier for the VCF Installer (SDDC Manager) IP address
  "vcf_installer_ip_source": {
    "forwarding_rule": "vcf-mgmt-sddcm-fr"
  },
  // Fully qualified domain name for SDDC Manager / VCF Installer
  "vcf_installer_fqdn": "sddcm.gcve-vcf.test.gve",
  // DNS server IP. If gcp_subnet was created during Cloud DNS configuration from E2E TF, use the DNS reserved IP from that subnet. Otherwise, supply a custom DNS server IP. Defaults to Google Cloud metadata server (169.254.169.254) if omitted.
  "dns_server": "10.0.100.2"
}
}

ノード名の接頭辞フィルタ

この構成(python/examples/config_prefix_filter.json)を使用して、名前の接頭辞に一致する ESXi インスタンスを動的に検出し、転送ルールを使用します。

{
// Target Google Cloud project ID where bare-metal ESXi instances reside
"project": "PROJECT_ID",
// Target Google Cloud Compute Engine zone for ESXi instances
"zone": "us-east4-c",
// Discover ESXi instances matching a given instance name prefix
"gce_nodes": {
  "prefix": "vcf-mgmt-sample"
},
// Secret Manager secret containing the ESXi root password
"esxi_root_password_secret": "esxi-root-password",
// Optional Jumpbox logging configuration (defaults to ~/logs/vcf_deployer_<timestamp>.log).
// DEBUG level is default for file logs and console level can be controlled by "log_level" (defaults to INFO).
// "log_dir": "~/logs",
// "log_file": "~/logs/vcf_deployer_custom.log",
// "log_level": "INFO",
// VCF deployment and initialization parameters
"vcf_deployment_config": {
  // Target bare-metal node hosting the initial deployment workloads
  "target_gce_node": "esxi-node-0",
  // IPv4 CIDR range for dedicated offline depot subnetwork (for example, /29). Must not overlap with or reuse any existing subnets in the VPC
  "offline_depot_subnet_cidr": "10.2.100.0/29",
  // Secret Manager secret containing the VCF appliance root password
  "vcf_appliance_root_password_secret": "vcf-root-password",
  // Secret Manager secret containing the VCF appliance local user password
  "vcf_appliance_local_user_password_secret": "vcf-localuser-password",
  // Source identifier for the VCF Installer (SDDC Manager) forwarding rule
  "vcf_installer_ip_source": {
    "forwarding_rule": "vcf-mgmt-sddcm-fr"
  },
  // Fully qualified domain name for SDDC Manager / VCF Installer
  "vcf_installer_fqdn": "sddcm.gcve-vcf.test.gve",
  // DNS server IP. If gcp_subnet was created during Cloud DNS configuration from E2E TF, use the DNS reserved IP from that subnet. Otherwise, supply a custom DNS server IP. Defaults to Google Cloud metadata server (169.254.169.254) if omitted.
  "dns_server": "10.0.100.2"
}
}

サブネット検出フィルタ

この構成(python/examples/config_subnet_filter.json)を使用して、特定のサブネットに接続されている ESXi インスタンスを動的に検出し、IP ソースの完全なリソース URI を指定します。

{
// Target Google Cloud project ID where bare-metal ESXi instances reside
"project": "PROJECT_ID",
// Target Google Cloud Compute Engine zone for ESXi instances
"zone": "us-east4-c",
// Discover ESXi instances attached to a specific primary management subnet
"gce_nodes": {
  "subnet": "vcf-mgmt-subnet"
},
// Secret Manager secret containing the ESXi root password
"esxi_root_password_secret": "esxi-root-password",
// Optional Jumpbox logging configuration (defaults to ~/logs/vcf_deployer_<timestamp>.log).
// DEBUG level is default for file logs and console level can be controlled by "log_level" (defaults to INFO).
// "log_dir": "~/logs",
// "log_file": "~/logs/vcf_deployer_custom.log",
// "log_level": "INFO",
// VCF deployment and initialization parameters
"vcf_deployment_config": {
  // Target bare-metal node hosting the initial deployment workloads
  "target_gce_node": "esxi-node-0",
  // IPv4 CIDR range for dedicated offline depot subnetwork (for example, /29). Must not overlap with or reuse any existing subnets in the VPC
  "offline_depot_subnet_cidr": "10.2.100.0/29",
  // Secret Manager secret containing the VCF appliance root password
  "vcf_appliance_root_password_secret": "vcf-root-password",
  // Secret Manager secret containing the VCF appliance local user password
  "vcf_appliance_local_user_password_secret": "vcf-localuser-password",
  // Direct resource URI for the VCF Installer (SDDC Manager) forwarding rule
  "vcf_installer_ip_source": "projects/PROJECT_ID/regions/us-east4/forwardingRules/vcf-mgmt-sddcm-fr",
  // Fully qualified domain name for SDDC Manager / VCF Installer
  "vcf_installer_fqdn": "sddcm.gcve-vcf.test.gve",
  // DNS server IP. If gcp_subnet was created during Cloud DNS configuration from E2E TF, use the DNS reserved IP from that subnet. Otherwise, supply a custom DNS server IP. Defaults to Google Cloud metadata server (169.254.169.254) if omitted.
  "dns_server": "10.0.100.2"
}
}

ノードの準備のみ(VCF インストーラなし)

準備中のノードに VCF インストーラ アプライアンスをデプロイする必要がない場合(たとえば、2 日目のノード追加やワークロード データクラスタの作成のためにノードを準備する場合)、config.json ファイルの vcf_deployment_config オブジェクトを省略します。

{
"project": "PROJECT_ID",
"zone": "ZONE",
"gce_nodes": {
  "subnet": "SUBNET_NAME"
},
"esxi_root_password_secret": "esxi-root-password"
}

config.json ファイルで次の値を置き換えます(Python スクリプトを実行する前に、インライン コメントを削除します)。

  • PROJECT_ID: ベアメタル ESXi インスタンスが存在する Google Cloud プロジェクトの ID。
  • ZONE: ベアメタル ESXi インスタンスが存在する Google Cloud ゾーン(例: us-east4-c)。
  • SUBNET_NAME: ESXi インスタンスに接続されている VPC サブネットの名前(例: vcf-mgmt-subnet)。

ツールキット スクリプトを実行する

ジャンプボックス ターミナルでアプリケーションのデフォルト認証情報を使用して Google Cloud に対する認証を行います。

gcloud auth application-default login --no-browser

仮想環境がアクティブ(source venv/bin/activate)で、config.json が構成されている状態で、ツールキットを実行します。

python3 -m vcf_deployer.main --config config.json

実行ワークフロー

このスクリプトは、自動検証チェックを実行し、次の設定ステージを実行します。

  1. プリフライト検証: ターゲット インスタンスがサポートされている ESXi イメージを実行していることを確認し、Secret Manager へのアクセスを検証し、IP CIDR の整合性を検証し、SSL 証明書のサムプリントを計算します。
  2. 認証情報の構成とパスワードの再設定: 各ホストに接続し、初期 ESXi root パスワードを Secret Manager に保存されている esxi-root-password シークレットにリセットします。
  3. vSwitch とポートグループの作成: vSwitch0 を構成し、VLAN タグ付きポートグループ(vlan-VLAN_ID-RANDOM_SUFFIX)を作成します。
  4. vSAN の初期化: ローカル NVMe SSD を vsanDatastore にフォーマットします。
  5. VCF インストーラのデプロイ: VCF OVA を target_gce_node にデプロイし、ネットワーク構成を挿入して、アプライアンスを起動します。

実行が完了したら、仮想環境を無効にします。

deactivate

デプロイ後のタスク

ツールキットを実行して VCF インストーラ アプライアンスをデプロイしたら、次のデプロイ後の構成を行います。

ジャンプボックスでインターネットの外向きを無効にする(省略可)

Python の依存関係がインストールされたら、Cloud NAT を破棄して、厳格な下り(外向き)セキュリティを適用できます。ワークステーション terraform.tfvars で、次の操作を行います。

enable_internet = false

Terraform を再適用します。

terraform apply

続行する前に既知の問題を確認する

VCF のデプロイを開始する前に、既知の問題ページに記載されているすべての問題を確認してください。これらの問題を見落とすと、デプロイが失敗する可能性があります。


トラブルシューティング

このセクションでは、ツールキットの構成または実行時に発生する一般的な問題の診断と解決方法について説明します。

ジャンプボックスでツールキットの実行ログを検査する

ジャンプボックスでツールキットを実行すると、Python スクリプトは詳細な実行ログをジャンプボックスのホーム ディレクトリの ~/logs/ ディレクトリに書き込みます。各ログファイルの名前は vcf_deployer_TIMESTAMP.log です。ノードの準備または VCF インストーラのデプロイ手順が失敗した場合は、~/logs/ の最新の vcf_deployer_*.log ファイルを調べて、エラーを診断します。

脆弱なパスワードが原因で VCF インストーラのデプロイに失敗する

  • 症状: VCF インストーラのデプロイと初期化中に、Python ツールキット スクリプトが失敗するか、予期しない動作をします。
  • 解決策: Secret Manager で VCF ユーザーに脆弱なパスワードを入力しないでください。脆弱なパスワードを使用すると、VCF インストーラのデプロイ用の Python スクリプトが失敗する可能性があります。すべてのパスワードが Broadcom のパスワードの複雑さに関するガイドラインに準拠していることを確認します。

権限がありません(roles/iam.serviceAccountTokenCreator)

  • 症状: Terraform の実行中にサービス アカウントの権限借用でエラーが発生する。
  • 解決策: Terraform を実行する ID に、Terraform ランナー サービス アカウントに対する roles/iam.serviceAccountTokenCreator が付与されていることを確認します。

IAP SSH 接続エラー(403 Forbidden / タイムアウト)

  • 症状: gcloud compute ssh が IAP トンネルを確立できない。
  • 解決策:
    • Cloud Identity-Aware Proxy API(iap.googleapis.com)が有効になっていることを確認します。
    • ユーザー ID に roles/iap.tunnelResourceAccessor と roles/compute.viewer があることを確認します。
    • ファイアウォール ルール allow-iap-ssh-* が存在し、TCP ポート 22 で 35.235.240.0/20 からの受信を許可していることを確認します。

再適用時のサブネット削除に関する警告(create_subnet フラグ)

  • 現象: enable_internet = false を設定した後に terraform apply を実行すると、サブネットが破棄されます。
  • 解決策: Terraform がサブネットを作成した場合は、create_subnet = true を保持します。create_subnet を false に変更すると、Terraform はリソースの管理を停止し、削除をスケジュールします。

次のステップ

  • ノードを準備し、管理ドメインのデプロイ用に VCF インストーラをデプロイした場合:
    1. VCF インストーラでリージョン オフライン デポへの接続を構成して、必要なソフトウェア バンドルをダウンロードします。
      • プロトコル: HTTPS
      • FQDN(IP アドレスは使用しないでください): offline-depot.REGION.selfmanagedvmwareengine.goog(REGION は、ベアメタルノードが存在する Google Cloudリージョンに置き換えます)
      • ポート: 443
      • ユーザー名: vcf-depot-user
      • パスワード: Google1!
    2. 管理ドメインをデプロイします。
      • エンドツーエンドの Terraform モジュール(Terraform とツールキットを使用してノードと VCF をデプロイする)を使用して Google Cloud リソースをプロビジョニングした場合は、ヘルパー スクリプト(scripts/export_deployment_config.py)を使用して management_domain_deployment_input_config Terraform 出力を JSON に変換し、user_should_input とマークされたすべてのフィールドをターゲット値に置き換えて、JSON ファイルを VCF インストーラに提供します。
      • エンドツーエンドの Terraform モジュールを使用せずに Google Cloud リソースをプロビジョニングした場合は、VCF インストーラで管理ドメインの構成入力を手動で指定します。
      • VCF インストーラの初期化ワークフローを完了する手順については、Broadcom のドキュメントの新しい VCF フリートまたは新しい VCF インスタンスをデプロイするをご覧ください。
  • 既存のクラスタに追加するノードを準備した場合: VMware UI または API を使用して、準備したノードを VMware VCF 9.x クラスタに追加します。
  • ノードを追加および削除する方法については、ノード容量を管理するまたは Terraform を使用してノード容量を管理するをご覧ください。