Menyiapkan node dan men-deploy VCF menggunakan toolkit

Halaman ini menjelaskan cara menggunakan solusi VMware di toolkit Google Cloud untuk menyiapkan node ESXi bare-metal, mengonfigurasi jaringan vSwitch dan datastore vSAN, serta men-deploy peralatan penginstal VMware Cloud Foundation (VCF).

Ringkasan

Toolkit solusi VMware mengotomatiskan penyiapan awal instance ESXi bare-metal yang di-deploy di project Google Cloud Anda. Saat dijalankan dari VM jumpbox, toolkit akan melakukan tindakan berikut:

  1. Verifikasi kredensial host dan reset sandi: Terhubung ke setiap instance ESXi bare-metal dan mereset sandi root ESXi awal ke secret esxi-root-password yang disimpan di Secret Manager.
  2. Konfigurasi jaringan: Mengonfigurasi vSwitch0 dan membuat grup port yang diberi tag VLAN untuk jaringan penginstal VCF.
  3. Konfigurasi penyimpanan: Melakukan inisialisasi SSD lokal ke dalam pool vsanDatastore.
  4. Deployment penginstal VCF: Mendownload Open Virtual Appliance (OVA) penginstal VCF dari depot offline, men-deploy appliance ke host ESXi target yang ditentukan, memasukkan parameter jaringan dan DNS, serta menginisialisasi penginstal.

Memilih jalur deployment

Anda dapat menjalankan toolkit menggunakan salah satu pendekatan berikut:

  • Jalur satu: Menyediakan jumpbox menggunakan Terraform (Direkomendasikan): Gunakan Terraform untuk menyediakan VM jumpbox Compute Engine khusus di dalam VPC host ESXi, subnet VPC, gateway Cloud NAT, dan aturan firewall SSH Identity-Aware Proxy (IAP).
  • Jalur dua: Menggunakan VM jumpbox yang ada: Jalankan toolkit langsung dari VM Linux yang ada yang terletak di dalam VPC host ESXi di subnet dengan Akses Google Pribadi yang diaktifkan.

Sebelum memulai

Sebelum menjalankan toolkit, selesaikan prasyarat berikut:

Mengizinkan jaringan subnet Lapisan 2 berbasis VLAN

Solusi VMware mengharuskan subnet jaringan Virtual Private Cloud (VPC) Anda memiliki properti Resolve Subnet Mask yang ditetapkan ke Broadcast primary range only with learning untuk mendukung jaringan berbasis VLAN. Buka tiket dukungan di Pusat Dukungan konsolGoogle Cloud dengan informasi berikut:

  • Produk: Google Cloud VMware Engine
  • Prioritas: P2
  • Kategori: Network Connectivity
  • Dampak Bisnis: Pertanyaan Teknis Umum
  • Berikan detail selengkapnya: Allowlist L2 network connectivity for my project, beserta project ID, nomor project, serta region dan zona target untuk deployment Anda

Untuk mengetahui informasi selengkapnya tentang dukungan untuk jaringan berbasis VLAN, lihat Emulasi Lapisan 2: Penyiaran ARP dan pembelajaran MAC kustom.

Aktifkan API yang diperlukan

Anda harus memiliki project Google Cloud aktif dengan penagihan yang diaktifkan (ini dapat berupa project Google Cloud yang sama tempat host ESXi berada atau project jumpbox terpisah). Mengaktifkan API berikut:

  • Compute Engine API (compute.googleapis.com) — untuk project jumpbox dan host ESXi
  • Identity and Access Management (IAM) API (iam.googleapis.com) — untuk project jumpbox
  • Cloud Resource Manager API (cloudresourcemanager.googleapis.com) — untuk project jumpbox dan host ESXi
  • Cloud Identity-Aware Proxy API (iap.googleapis.com) — untuk project jumpbox
  • Secret Manager API (secretmanager.googleapis.com) — untuk project host ESXi

Untuk mengaktifkan API menggunakan gcloud CLI, jalankan perintah berikut:

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

Ganti PROJECT_ID dengan ID project Google Cloud target Anda.

Mengonfigurasi izin IAM

Alur kerja toolkit menggunakan identitas dan peran berikut:

  • Terraform Invoker: Identitas pengguna atau CI/CD yang meluncurkan terraform apply. Memerlukan Service Account Token Creator (roles/iam.serviceAccountTokenCreator) di akun layanan Terraform Runner jika meniru identitas runner.
  • Terraform Runner: Identitas yang menyediakan infrastruktur Terraform:
    • Admin Jaringan Compute (roles/compute.networkAdmin)
    • Compute Instance Admin v1 (roles/compute.instanceAdmin.v1)
    • Compute Security Admin.(roles/compute.securityAdmin)
    • (roles/iam.serviceAccountUser) Pengguna Akun Layanan
    • Project IAM Admin (roles/resourcemanager.projectIamAdmin) di project target (jika menggunakan pengelolaan IAM otomatis dengan Terraform)
  • Jumpbox SSH User: Identitas yang terhubung ke VM jumpbox menggunakan IAP:
    • IAP Tunnel Resource Accessor (roles/iap.tunnelResourceAccessor)
    • Compute Viewer (roles/compute.viewer)
  • Jumpbox Script Runner: Akun pengguna atau layanan yang menjalankan skrip toolkit Python di jumpbox:
    • Secret Manager Secret Accessor (roles/secretmanager.secretAccessor)
    • Compute Admin (roles/compute.admin)
    • Project IAM Admin (roles/resourcemanager.projectIamAdmin)
  • Agen layanan penyimpangan jaringan VMware Engine (P4SA) (service-PROJECT_NUMBER@gcp-sa-network-drift.):
    • Admin Jaringan Compute (roles/compute.networkAdmin)

Menyimpan kredensial di Secret Manager

Toolkit ini mengambil sandi saat runtime dari Secret Manager dan menggunakan secret esxi-root-password untuk mereset sandi root awal di setiap instance ESXi bare-metal. Buat secret di project Google Cloud Anda untuk sandi ESXi root, sandi VCF root, dan sandi pengguna lokal VCF (admin):

# 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'

Sebelum menjalankan perintah, ganti variabel berikut:

  • PROJECT_ID: ID project target Google Cloud Anda.
  • YOUR_ESXI_ROOT_PASSWORD: sandi root baru yang akan ditetapkan di host ESXi bare-metal Anda, yang menggantikan sandi instance awal.
  • YOUR_VCF_ROOT_PASSWORD: sandi root untuk peralatan penginstal VCF.
  • YOUR_VCF_ADMIN_PASSWORD: sandi pengguna administrator lokal untuk peralatan penginstal VCF.

Menyediakan jumpbox menggunakan Terraform

Jika Anda belum memiliki jumpbox dengan konektivitas jaringan ke host ESXi, gunakan modul Terraform yang disediakan untuk men-deploy VM jumpbox.

Membuat clone repositori toolkit

Buat clone repositori toolkit ke workstation lokal Anda:

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

Mengonfigurasi variabel Terraform

Buka direktori infrastructure dan buat file terraform.tfvars:

cd infrastructure
cp terraform.tfvars.example terraform.tfvars

Perbarui file terraform.tfvars dengan parameter project Anda:

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"

Tabel berikut menjelaskan variabel input Terraform utama:

Variabel Persyaratan Default Deskripsi
project_id Wajib Tidak ada Project IDGoogle Cloud tempat Terraform men-deploy infrastruktur.
region Wajib Tidak ada Region Google Cloud target (misalnya, us-central1).
zone Opsional ${region}-a Zona target. Tetapkan variabel ini agar sesuai dengan zona host ESXi bare-metal Anda untuk meminimalkan latensi.
vpc_name Kondisional "" Nama jaringan VPC yang menghosting node ESXi. Diperlukan jika variabel create_subnet ditetapkan ke true.
create_subnet Opsional true Tetapkan ke true untuk membuat subnet baru, atau false untuk menggunakan subnet yang ada.
subnet_name Opsional "smve-toolkit-subnet" Nama subnetwork untuk VM jumpbox. Jika variabel create_subnet ditetapkan ke false, subnet harus ada di jaringan vpc_name.
subnet_cidr Kondisional "" Rentang CIDR IPv4 utama (minimum /29). Diperlukan jika variabel create_subnet ditetapkan ke true.
enable_internet Opsional true Mengontrol Cloud Router, Cloud NAT, dan pembuatan rute default untuk egress internet. Tetapkan ke false setelah penyiapan untuk menghapus gateway NAT, router, dan rute.
jumpbox_name Opsional "smve-toolkit-jumpbox" Nama VM jumpbox Compute Engine.
machine_type Opsional "e2-micro" Jenis mesin untuk instance VM jumpbox.
boot_disk_size Opsional 30 Ukuran boot disk dalam GB untuk instance VM jumpbox (minimum 10 GB).
boot_disk_type Opsional "pd-balanced" Jenis persistent disk untuk boot disk jumpbox (pd-balanced, pd-standard, pd-ssd, pd-extreme).
boot_disk_image Opsional "debian-cloud/debian-12" Kelompok boot disk image OS atau image tertentu self_link.
jumpbox_internal_ip Opsional "" Alamat IPv4 internal statis (misalnya, "10.10.0.5"), nama IP yang dicadangkan, atau URI. Defaultnya adalah alamat IP sementara dinamis.
service_account_email Opsional "" Email akun layanan kustom untuk dilampirkan ke VM jumpbox. Defaultnya adalah akun layanan default Compute Engine.

Men-deploy infrastruktur jumpbox

Lakukan inisialisasi dan terapkan konfigurasi 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

Ganti TERRAFORM_RUNNER_SA dengan alamat email akun layanan runner Terraform.

Menghubungkan ke jumpbox menggunakan IAP

Hubungkan ke VM jumpbox menggunakan penerusan TCP IAP (tidak memerlukan alamat IP publik):

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

Sebelum menjalankan perintah, ganti variabel berikut:

  • PROJECT_ID: ID Google Cloud project yang menghosting VM jumpbox.
  • ZONE: zona Google Cloud tempat VM jumpbox di-deploy.

Menggunakan VM jumpbox yang ada

Jika Anda membawa VM jumpbox yang ada, VM tersebut harus berupa VM Compute Engine Linux yang berada di dalam jaringan VPC yang sama yang menghosting node ESXi bare-metal. Persyaratan penempatan VPC ini wajib untuk memastikan konektivitas jaringan ke endpoint Private Service Connect (PSC) depot offline yang menghosting OVA penginstal VCF.

Sebelum menjalankan toolkit, pastikan VM jumpbox yang ada memenuhi persyaratan berikut:

  1. Penempatan VPC: Anda harus men-deploy VM dalam jaringan VPC yang menghosting node ESXi.
  2. Akses APIGoogle Cloud : Subnetwork yang menghosting VM jumpbox harus mengaktifkan Akses Google Pribadi (private_ip_google_access = true) atau akses internet keluar untuk menjangkau secretmanager.googleapis.com, compute.googleapis.com, dan iam.googleapis.com.
  3. Egress penginstalan paket: Akses HTTP/HTTPS keluar (dengan menggunakan Cloud NAT, proxy perusahaan, atau egress langsung) untuk menginstal dependensi Python.
  4. Pengaktifan API dan izin IAM: Identitas yang menjalankan skrip harus memiliki peran roles/secretmanager.secretAccessor, roles/compute.admin, dan roles/resourcemanager.projectIamAdmin di project Google Cloud Anda.
  5. Konektivitas SSH: Jumpbox harus mengizinkan traffic masuk SSH pada TCP port 22 dari rentang IP IAP (35.235.240.0/20) atau rentang IP publik yang diizinkan, dan identitas yang terhubung harus memiliki peran yang berlaku (roles/iap.tunnelResourceAccessor dan roles/compute.viewer).

Menyiapkan toolkit di jumpbox

Di terminal jumpbox, instal dependensi dan download skrip toolkit.

Menginstal paket sistem

Instal Python 3, pip, venv, dan Git:

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

Mendapatkan skrip toolkit

Buat clone repositori atau salin skrip dari workstation lokal Anda:

  • Opsi A (clone menggunakan 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
    
  • Opsi B (menyalin dari workstation lokal menggunakan 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
    

Membuat dan mengaktifkan lingkungan virtual Python

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

Mengonfigurasi file konfigurasi skrip toolkit

Buat file konfigurasi config.json di VM jumpbox untuk menentukan instance ESXi target dan setelan deployment VCF.

Parameter konfigurasi

Parameter Wajib Jenis data Deskripsi
project Ya string Project ID target Google Cloud tempat instance ESXi bare-metal berada.
zone Ya string Zona target Google Cloud tempat node ESXi berada.
gce_nodes Ya list(string) atau object Daftar eksplisit nama instance ESXi bare-metal (misalnya, ["vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2"]), atau objek yang menemukan instance berdasarkan prefix (misalnya, {"prefix": "vcf-mgmt-sample"}) atau subnet ({"subnet": "vcf-mgmt-subnet"}).
esxi_root_password_secret Ya string Nama secret atau jalur resource Secret Manager yang berisi sandi root ESXi.
vcf_deployment_config Opsional object Objek konfigurasi untuk deployment dan inisialisasi penginstal VCF. Hilangkan objek ini jika Anda tidak perlu men-deploy penginstal VCF di salah satu node yang sedang disiapkan.
└─ target_gce_node Kondisional string Node bare-metal target yang menghosting workload deployment awal. Wajib ada jika objek vcf_deployment_config ditentukan.
└─ vcf_appliance_root_password_secret Kondisional string Nama secret Secret Manager yang berisi sandi root peralatan VCF.
└─ vcf_appliance_local_user_password_secret Kondisional string Nama secret Secret Manager yang berisi sandi pengguna lokal (admin) peralatan VCF.
└─ vcf_installer_ip_source Kondisional string atau object Sumber alamat IP untuk penginstal VCF (SDDC Manager). Tentukan {"reserved_address": "ADDRESS_NAME"}, {"forwarding_rule": "RULE_NAME"}, atau string URI resource langsung (misalnya, projects/PROJECT_ID/regions/REGION/forwardingRules/RULE_NAME).
└─ vcf_installer_fqdn Kondisional string Nama domain yang sepenuhnya memenuhi syarat (FQDN) untuk penginstal VCF (SDDC Manager).
└─ offline_depot_subnet_cidr Kondisional string Rentang CIDR IPv4 utama untuk subnet depot offline khusus (misalnya, /29). Tidak boleh tumpang tindih dengan atau menggunakan kembali subnet yang ada di VPC.
└─ dns_server Opsional string Alamat IP server DNS (misalnya, IP DNS yang dicadangkan dari subnet Anda atau server DNS kustom). Nilai defaultnya adalah server metadataGoogle Cloud (169.254.169.254) jika dihilangkan. Tentukan alamat IP dari subnet non-Lapisan 2 jika Anda menggunakan Cloud DNS.

Contoh konfigurasi

Tab berikut menunjukkan contoh konfigurasi config.json (berdasarkan template yang tersedia di direktori python/examples/) untuk berbagai pendekatan penargetan instance dan strategi alokasi IP:

Daftar node eksplisit

Gunakan konfigurasi ini (python/examples/config_explicit_nodes.json) untuk menargetkan nama instance ESXi tertentu:

{
// 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"
}
}

Filter awalan nama node

Gunakan konfigurasi ini (python/examples/config_prefix_filter.json) untuk menemukan instance ESXi secara dinamis yang cocok dengan awalan nama dan menggunakan aturan penerusan:

{
// 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"
}
}

Filter penemuan subnet

Gunakan konfigurasi ini (python/examples/config_subnet_filter.json) untuk menemukan instance ESXi yang terpasang ke subnet tertentu secara dinamis dan menyediakan URI resource lengkap untuk sumber IP:

{
// 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"
}
}

Hanya persiapan node (tanpa penginstal VCF)

Hilangkan objek vcf_deployment_config dalam file config.json jika Anda tidak perlu men-deploy peralatan penginstal VCF di salah satu node yang sedang disiapkan (misalnya, saat menyiapkan node untuk penambahan node hari ke-2 atau pembuatan cluster data workload):

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

Ganti kode berikut dalam file config.json Anda (dan hapus komentar inline sebelum menjalankan skrip Python):

  • PROJECT_ID: ID project Google Cloud tempat instance ESXi bare-metal Anda berada.
  • ZONE: zona Google Cloud tempat instance ESXi bare-metal Anda berada (misalnya, us-east4-c).
  • SUBNET_NAME: nama subnet VPC yang terpasang ke instance ESXi Anda (misalnya, vcf-mgmt-subnet).

Menjalankan skrip toolkit

Lakukan autentikasi dengan Google Cloud menggunakan Kredensial Default Aplikasi di terminal jumpbox:

gcloud auth application-default login --no-browser

Dengan lingkungan virtual Anda yang aktif (source venv/bin/activate) dan config.json yang dikonfigurasi, jalankan toolkit:

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

Alur kerja eksekusi

Skrip ini menjalankan pemeriksaan validasi otomatis dan menjalankan tahap penyiapan berikut:

  1. Validasi pra-migrasi: Mengonfirmasi bahwa instance target menjalankan image ESXi yang didukung, memvalidasi akses Secret Manager, memverifikasi keselarasan CIDR IP, dan menghitung thumbprint sertifikat SSL.
  2. Konfigurasi kredensial dan reset sandi: Terhubung ke setiap host dan mereset sandi root ESXi awal ke rahasia esxi-root-password yang disimpan di Secret Manager.
  3. Pembuatan vSwitch dan grup port: Mengonfigurasi vSwitch0 dan membuat grup port yang diberi tag VLAN (vlan-VLAN_ID-RANDOM_SUFFIX).
  4. Inisialisasi vSAN: Memformat SSD NVMe lokal menjadi vsanDatastore.
  5. Deployment penginstal VCF: Men-deploy OVA VCF ke target_gce_node, memasukkan konfigurasi jaringan, dan memulai peralatan.

Setelah eksekusi selesai, nonaktifkan lingkungan virtual:

deactivate

Tugas pascadeployment

Setelah menjalankan toolkit dan men-deploy peralatan penginstal VCF, lakukan konfigurasi pasca-deployment berikut:

Menonaktifkan egress internet di jumpbox (opsional)

Setelah dependensi Python diinstal, Anda dapat menghapus Cloud NAT untuk menerapkan keamanan egress yang ketat. Di workstation terraform.tfvars Anda:

enable_internet = false

Terapkan kembali Terraform:

terraform apply

Meninjau masalah umum sebelum melanjutkan

Tinjau semua masalah yang terdokumentasi di halaman Masalah umum sebelum Anda memulai deployment VCF. Mengabaikan masalah ini dapat menyebabkan kegagalan deployment.


Pemecahan masalah

Bagian ini menjelaskan cara mendiagnosis dan menyelesaikan masalah umum saat mengonfigurasi atau menjalankan toolkit.

Memeriksa log eksekusi toolkit di jumpbox

Saat Anda menjalankan toolkit di jumpbox, skrip Python akan menulis log eksekusi mendetail ke direktori ~/logs/ di direktori utama jumpbox. Setiap file log diberi nama vcf_deployer_TIMESTAMP.log. Jika langkah deployment penginstal VCF atau persiapan node gagal, periksa file vcf_deployer_*.log terbaru di ~/logs/ untuk mendiagnosis kegagalan.

Kegagalan deployment penginstal VCF karena sandi yang lemah

  • Gejala: Skrip toolkit Python gagal atau berperilaku tidak terduga selama deployment dan inisialisasi penginstal VCF.
  • Penyelesaian: Jangan masukkan sandi yang lemah untuk pengguna VCF di Secret Manager, karena sandi yang lemah dapat menyebabkan skrip Python untuk deployment penginstal VCF gagal. Pastikan semua sandi mematuhi panduan kompleksitas sandi Broadcom.

Izin ditolak (roles/iam.serviceAccountTokenCreator)

  • Gejala: Error selama peniruan akun layanan saat menjalankan Terraform.
  • Penyelesaian: Pastikan identitas yang menjalankan Terraform memiliki roles/iam.serviceAccountTokenCreator yang diberikan di akun layanan runner Terraform.

Kegagalan koneksi SSH IAP (403 Forbidden / waktu tunggu habis)

  • Gejala: gcloud compute ssh gagal membuat tunnel IAP.
  • Resolusi:
    • Pastikan Cloud Identity-Aware Proxy API (iap.googleapis.com) diaktifkan.
    • Pastikan identitas pengguna Anda memiliki roles/iap.tunnelResourceAccessor dan roles/compute.viewer.
    • Pastikan aturan firewall allow-iap-ssh-* ada dan mengizinkan traffic masuk dari 35.235.240.0/20 di port TCP 22.

Peringatan penghapusan subnet saat penerapan ulang (flag create_subnet)

  • Gejala: Menjalankan terraform apply setelah menetapkan enable_internet = false akan mencoba menghancurkan subnet.
  • Penyelesaian: Pertahankan create_subnet = true jika Terraform membuat subnet. Mengubah create_subnet menjadi false akan menginstruksikan Terraform untuk berhenti mengelola resource, dan menjadwalkannya untuk dihapus.

Langkah berikutnya

  • Jika Anda telah menyiapkan node dan men-deploy penginstal VCF untuk deployment domain pengelolaan:
    1. Konfigurasikan koneksi ke depot offline regional di penginstal VCF untuk mendownload paket software yang diperlukan:
      • Protokol: HTTPS
      • FQDN (jangan gunakan alamat IP): offline-depot.REGION.selfmanagedvmwareengine.goog (ganti REGION dengan region Google Cloud tempat node bare-metal Anda berada)
      • Port: 443
      • Username: vcf-depot-user
      • Password: Google1!
    2. Deploy domain pengelolaan:
      • Jika Anda menyediakan resource Google Cloud menggunakan modul Terraform end-to-end (Deploy node dan VCF menggunakan Terraform dan toolkit), konversikan output Terraform management_domain_deployment_input_config ke JSON menggunakan skrip bantuan (scripts/export_deployment_config.py), ganti semua kolom yang ditandai sebagai user_should_input dengan nilai target Anda, dan berikan file JSON ke penginstal VCF.
      • Jika Anda menyediakan resource Google Cloud tanpa menggunakan modul Terraform end-to-end, berikan input konfigurasi domain pengelolaan secara manual di penginstal VCF.
      • Untuk mengetahui petunjuk cara menyelesaikan alur kerja pengaktifan penginstal VCF, lihat Men-deploy fleet VCF baru atau instance VCF baru dalam dokumentasi Broadcom.
  • Jika Anda menyiapkan node untuk ditambahkan ke cluster yang ada: Tambahkan node yang telah disiapkan ke cluster VMware VCF 9.x menggunakan UI atau API VMware.
  • Pelajari cara menambahkan dan menghapus node di Mengelola kapasitas node atau Mengelola kapasitas node menggunakan Terraform.