Men-deploy node dan VCF menggunakan Terraform dan toolkit
Dokumen ini menjelaskan cara menggunakan otomatisasi Terraform untuk men-deploy node ESXi bare-metal, jaringan siaran Lapisan 2, Cloud DNS, dan load balancer internal (ILB) regional untuk solusi VMware di Google Cloud dengan VMware Cloud Foundation (VCF).
Otomatisasi ini menyediakan infrastruktur berikut:
- Hypervisor ESXi bare-metal khusus (
z3-highmem-192-highlssd-metalatauz3-highmem-192-metal). - Jaringan siaran Lapisan 2 multi-VLAN dengan frame jumbo (MTU 8896).
- Zona pribadi terkelola Cloud DNS dan kebijakan penerusan kueri masuk.
- ILB regional dengan ARP Gratis / Pemberitahuan Router (
GARP_RA) Fast IP Move ketersediaan tinggi. - Grup endpoint jaringan (NEG) zona untuk antarmuka pengelolaan dan datapath NSX.
Sebelum memulai
Sebelum menjalankan otomatisasi Terraform, instal alat yang diperlukan, aktifkan API yang diperlukan, izinkan jaringan subnet Lapisan 2, dan verifikasi persyaratan berikut untuk project Google Cloud Anda:
- Pastikan project Anda memiliki kuota node bare-metal yang memadai di region dan zona target. Untuk mengetahui kuota yang diperlukan dan petunjuk tentang cara melihat atau meminta penambahan kuota, lihat Kuota dan batas.
- Pastikan Anda memiliki izin Identity and Access Management (IAM) yang diperlukan, termasuk
Compute Admin(roles/compute.admin) dan, jika Anda menggunakan Cloud DNS,DNS Administrator(roles/dns.admin). - Rencanakan infrastruktur Domain Name System (DNS) Anda untuk mendukung pencarian maju dan mundur untuk semua nama host node ESXi dan endpoint peralatan VCF yang direncanakan.
- Nama host node: Berikan nama domain yang sepenuhnya memenuhi syarat (FQDN) dari setiap node selama deployment. Hal ini memastikan bahwa ESXi membuat sertifikat menggunakan nama host.
- Kebijakan image tepercaya: Jika organisasi Anda tidak menerapkan kebijakan organisasi
constraints/compute.trustedImageProjects, tidak ada tindakan yang diperlukan. Jika organisasi Anda menerapkan kebijakan ini, izinkanprojects/smve-prod-public-imagesagar Compute Engine dapat membuat boot disk bare-metal. Untuk mengetahui informasi selengkapnya, lihat Menetapkan batasan akses image. Kontrol Layanan VPC: Jika project target Anda tidak berada dalam perimeter layanan, tidak ada tindakan yang diperlukan. Jika project Anda berada dalam perimeter layanan, tambahkan aturan egress yang mengizinkan operasi
compute.googleapis.comke projectsmve-prod-public-images(projects/999037279871):- egressFrom: identityType: ANY_IDENTITY egressTo: operations: - serviceName: compute.googleapis.com methodSelectors: - method: "*" resources: - projects/999037279871Untuk mengetahui informasi selengkapnya, lihat Referensi aturan egress.
Menginstal Terraform
Anda harus menginstal Terraform CLI versi 1.3.0 atau yang lebih baru. Untuk menginstal Terraform, pilih tab untuk sistem operasi Anda:
Debian atau Ubuntu
Untuk menginstal Terraform di Debian atau Ubuntu, jalankan perintah berikut:
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com '"$(lsb_release -cs)"' main' | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt-get update && sudo apt-get install -y terraform
RHEL atau CentOS
Untuk menginstal Terraform di RHEL atau CentOS, jalankan perintah berikut:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install terraform
Linux Generik
Untuk menginstal Terraform dengan mendownload biner secara langsung, jalankan perintah berikut:
export TERRAFORM_VERSION='1.9.5'
curl -fsSLO 'https://releases.hashicorp.com/terraform/'"${TERRAFORM_VERSION}"'/terraform_'"${TERRAFORM_VERSION}"'_linux_amd64.zip'
unzip 'terraform_'"${TERRAFORM_VERSION}"'_linux_amd64.zip'
sudo mv terraform /usr/local/bin/
rm 'terraform_'"${TERRAFORM_VERSION}"'_linux_amd64.zip'
Mengaktifkan Google Cloud API
Aktifkan API yang diperlukan berikut di project Google Cloud target Anda:
| Endpoint layanan | Tujuan |
|---|---|
compute.googleapis.com |
Instance bare-metal, jaringan Virtual Private Cloud (VPC), subnet Lapisan 2, firewall, NEG, ILB regional, dan pemesanan IP statis. |
dns.googleapis.com |
Zona terkelola DNS penerusan dan balik pribadi, kebijakan penerusan masuk, dan set data DNS. |
Untuk mengaktifkan API yang diperlukan menggunakan gcloud CLI, jalankan perintah berikut:
gcloud services enable \
compute.googleapis.com \
dns.googleapis.com \
--project='PROJECT_ID'
Ganti PROJECT_ID dengan ID project Google Cloud target Anda.
Memverifikasi kuota regional
Sebelum menyediakan node bare-metal atau membuat cluster, pastikan project Anda memiliki kuota Compute Engine regional dan global yang memadai. Tambahkan resource semua cluster yang ada di region ke nilai inkremental berikut sebelum Anda membandingkannya dengan kuota project:
| Metrik kuota | Resource yang diperlukan per node bare-metal | Resource yang diperlukan untuk cluster 3 node |
|---|---|---|
compute.googleapis.com/cpus_per_vm_family untuk Z3 |
192 vCPU | 3 × 192 = 576 vCPU |
compute.googleapis.com/local_ssd_total_storage_per_vm_family untuk Z3 |
72 TB | 3 × 72 TB = 216 TB |
compute.googleapis.com/hyperdisk_balanced_total_storage |
128 GB | 3 × 128 GB = 384 GB |
compute.googleapis.com/resource_policies |
0 saat menambahkan node ke cluster yang ada | 1 kebijakan penempatan tersebar per cluster |
compute.googleapis.com/regional_backend_services_protocol_forwarding_fast_ha |
0 saat menambahkan node atau cluster tanpa peralatan baru | 1 per VIP perangkat pengelolaan VCF baru atau endpoint NSX Edge |
Untuk mengetahui daftar lengkap kuota yang diperlukan dan petunjuk tentang cara melihat atau meminta penambahan kuota, lihat Kuota dan batas.
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.
Mengonfigurasi kebijakan organisasi dan Kontrol Layanan VPC
Instance ESXi bare-metal di solusi VMware melakukan booting dari image ESXi yang disediakan Google yang dihosting di project smve-prod-public-images, yang memiliki nomor project 999037279871. Secara default, tidak diperlukan konfigurasi tambahan.
Terapkan konfigurasi berikut hanya jika organisasi Anda menerapkan kebijakan image tepercaya atau menggunakan Kontrol Layanan VPC:
- Kebijakan image tepercaya: Jika organisasi Anda tidak menerapkan kebijakan organisasi
constraints/compute.trustedImageProjects, tidak ada tindakan yang diperlukan. Jika organisasi Anda menerapkan kebijakan ini, izinkanprojects/smve-prod-public-imagesagar Compute Engine dapat membuat boot disk bare-metal. Untuk mengetahui informasi selengkapnya, lihat Menetapkan batasan akses image. Aturan egress Kontrol Layanan VPC: Jika project target Anda tidak berada dalam perimeter layanan, tidak ada tindakan yang diperlukan. Jika project Anda berada dalam perimeter layanan, tambahkan aturan egress yang mengizinkan operasi
compute.googleapis.comke projectsmve-prod-public-images(projects/999037279871):- egressFrom: identityType: ANY_IDENTITY egressTo: operations: - serviceName: compute.googleapis.com methodSelectors: - method: "*" resources: - projects/999037279871Untuk mengetahui informasi selengkapnya, lihat Referensi aturan egress.
Mengonfigurasi izin dan peran IAM
Identitas yang menjalankan Terraform (administrator manusia atau akun layanan CI/CD otomatis) memerlukan peran IAM berikut pada projectGoogle Cloud target:
| Peran | ID Peran | Cakupan penggunaan |
|---|---|---|
| Compute Admin | roles/compute.admin |
Menyediakan instance komputasi bare-metal, memasang boot disk image kustom, mengonfigurasi kebijakan penempatan, dan mengelola antarmuka multi-NIC. Mengelola jaringan VPC, subnet siaran Lapisan 2, reservasi IP statis, ILB regional, layanan backend, aturan penerusan, dan NEG zona. Membuat dan mengelola aturan keamanan firewall ingress VPC. |
| Administrator DNS | roles/dns.admin |
Mengelola zona penerusan dan pencarian balik pribadi Cloud DNS, kebijakan penerusan kueri masuk, serta set data resource A dan PTR. |
| Service Account User | roles/iam.serviceAccountUser |
Berikan peran ini di akun layanan Compute Engine default (PROJECT_NUMBER-compute@developer.gserviceaccount.com) untuk mengizinkan penyediaan instance dengan cakupan cloud-platform. |
Memberikan peran menggunakan gcloud CLI
Untuk menetapkan peran level project dan izin akun layanan yang diperlukan, jalankan perintah berikut:
# Assign required project-level roles (use 'serviceAccount:SA_EMAIL' if granting to a service account)
for ROLE in \
roles/compute.admin \
roles/dns.admin; do
gcloud projects add-iam-policy-binding 'PROJECT_ID' \
--member='user:USER_EMAIL' \
--role=${ROLE}
done
# Grant Service Account User role on the Compute Engine default service account
gcloud iam service-accounts add-iam-policy-binding \
'PROJECT_NUMBER-compute@developer.gserviceaccount.com' \
--member='user:USER_EMAIL' \
--role='roles/iam.serviceAccountUser' \
--project='PROJECT_ID'
Sebelum menjalankan perintah, ganti variabel berikut:
PROJECT_ID: ID project Google Cloud target Anda.PROJECT_NUMBER: Nomor project dari project target Google Cloud Anda.USER_EMAIL: Alamat email identitas pengguna Anda.
Mengautentikasi runner Terraform
Pilih salah satu strategi autentikasi berikut berdasarkan lingkungan operasional Anda:
- Melakukan autentikasi menggunakan peniruan akun layanan (direkomendasikan)
- Melakukan Autentikasi dengan Menggunakan Kredensial Default Aplikasi
- Melakukan autentikasi menggunakan file kunci akun layanan
Melakukan autentikasi menggunakan peniruan akun layanan
Peniruan akun layanan menghilangkan kunci kredensial yang berumur panjang dengan membuat token akses OAuth 2.0 yang berumur pendek. Identitas pribadi Anda melakukan autentikasi, sementara Terraform berjalan sebagai akun layanan yang ditetapkan. Google Cloud mengaudit tindakan yang dilakukan oleh Terraform terhadap akun layanan.
Berikan identitas Google Cloud pribadi Anda peran Service Account Token Creator (
roles/iam.serviceAccountTokenCreator) di akun layanan runner:gcloud iam service-accounts add-iam-policy-binding 'SA_EMAIL' \ --member='user:USER_EMAIL' \ --role='roles/iam.serviceAccountTokenCreator' \ --project='PROJECT_ID'
Sebelum menjalankan perintah, ganti variabel berikut:
SA_EMAIL: Alamat email akun layanan runner Terraform.USER_EMAIL: Alamat email identitas pribadi Google Cloud Anda.PROJECT_ID: ID project Google Cloud target Anda.
Autentikasi lingkungan lokal Anda:
gcloud auth application-default loginTetapkan variabel lingkungan
GOOGLE_IMPERSONATE_SERVICE_ACCOUNTuntuk menerapkan peniruan identitas di seluruh eksekusi Terraform:export GOOGLE_IMPERSONATE_SERVICE_ACCOUNT='SA_EMAIL'
Melakukan Autentikasi dengan Menggunakan Kredensial Default Aplikasi
Gunakan Kredensial Default Aplikasi (ADC) di lingkungan pengembangan dan pengujian tempat identitas pengguna Anda memiliki izin yang diperlukan secara langsung.Google Cloud mengaudit tindakan terhadap identitas pribadi Anda:
gcloud auth application-default login gcloud config set project 'PROJECT_ID'
Ganti PROJECT_ID dengan ID project Google Cloud target Anda.
Mengautentikasi menggunakan file kunci akun layanan
Gunakan file kunci akun layanan dalam pipeline CI/CD otomatis (seperti
Cloud Build, GitHub Actions, atau Jenkins) yang tidak mendukung login pengguna interaktif
dan autentikasinya mengandalkan kunci kredensial akun layanan
yang berumur panjang. Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur
file kunci akun layanan Anda:
export GOOGLE_APPLICATION_CREDENTIALS='KEY_FILE'
Ganti KEY_FILE dengan jalur ke kunci JSON akun layanan Anda.
Meninjau arsitektur modular
Terraform mengoordinasikan penyediaan resource di empat tahap modular. Desain modular ini menerapkan pengurutan dependensi yang ketat untuk memastikan bahwa prasyarat jaringan sudah ada sebelum Anda men-deploy host komputasi, load balancer, dan data DNS:
+-----------------------------------------------------------------------------------+
| STAGE 1: VPC Network Infrastructure, Firewalls & Cloud DNS (modules/vpc) |
| - Custom VPC Network (MTU 8896 jumbo frames) |
| - VPC Ingress Allow-All Firewall Rule |
| - Dedicated Standard Subnetwork (for DNS inbound resolver) |
| - Cloud DNS Private Forward & Reverse Managed Zones |
| - Cloud DNS Inbound Forwarding Policy (Dynamic DNS_RESOLVER IP discovery) |
+-----------------------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------------------+
| STAGE 2: L2 Broadcast Subnetworks & Zonal NEGs (modules/subnets) |
| - Primary Management Subnet (Untagged Native VLAN, ARP broadcast learning) |
| - Storage & Infrastructure Subnets: vSAN (VLAN tagged), vMotion, NSX TEP |
| - Optional Dynamic Workload Subnets |
| - Zonal Network Endpoint Groups (GCE_VM_IP_DEDICATED_BACKEND) for Mgmt & NSX TEP |
+-----------------------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------------------+
| STAGE 3: Bare-Metal ESXi Hosts, IP Allocations & Host DNS (modules/hosts) |
| - Compute Resource Placement Policy (Availability Domain Count: 5-8, default: 6) |
| - Universal IP Allocator: Static reservations & dynamic allocation for all NICs |
| - Bare-Metal ESXi Instances (z3-highmem-192-highlssd-metal, 4+ Multi-NICs) |
| - Automated NEG Endpoint Attachments (in cluster_creation mode) |
| - Cloud DNS Forward (A) and Reverse (PTR) Records for all ESXi Hosts |
+-----------------------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------------------+
| STAGE 4: Regional Internal Load Balancers & Appliances (modules/appliances) |
| - Regional Backend Services (GARP_RA Fast IP Move HA Policy) |
| - Regional Forwarding Rules (L3_DEFAULT / ALL_PORTS / allow_global_access) |
| - Automated Cloud DNS Forward (A) and Reverse (PTR) Records for Mgmt Appliances |
+-----------------------------------------------------------------------------------+
Menyediakan resource untuk cluster pengelolaan
Cluster pengelolaan domain pengelolaan menghosting peralatan bidang kontrol VCF inti (SDDC Manager, vCenter Server, cluster NSX Management, dan VMware Aria Suite) dan hypervisor ESXi.
Menyiapkan ruang kerja Terraform
Buat direktori ruang kerja khusus dan clone repositori toolkit menggunakan Git:
mkdir -p ~/vcf-deployments/mgmt-cluster
cd ~/vcf-deployments/mgmt-cluster
git clone https://github.com/GoogleCloudPlatform/self-managed-vmware-solution-toolkit
Mengonfigurasi file definisi variabel
Buat file definisi variabel (management_cluster.tfvars) dengan nilai lingkungan target Anda. Salin file sample_management_cluster.tfvars dari
direktori e2e-terraform ke file management_cluster.tfvars, dan
ikuti petunjuk dan komentar inline untuk memperbarui kolom apa pun sesuai kebutuhan:
cp self-managed-vmware-solution-toolkit/e2e-terraform/sample_management_cluster.tfvars \
self-managed-vmware-solution-toolkit/e2e-terraform/management_cluster.tfvars
Menerapkan konfigurasi Terraform
Buka direktori self-managed-vmware-solution-toolkit/e2e-terraform, lalu
lakukan inisialisasi dan terapkan konfigurasi Terraform:
cd self-managed-vmware-solution-toolkit/e2e-terraform
terraform init
terraform plan -var-file='management_cluster.tfvars' -out=tfplan
terraform apply tfplan
Meninjau dan mengekspor output Terraform
Setelah Anda menjalankan terraform apply, Terraform akan mengekspos output terstruktur di empat kategori:
gcp_resources_self_links: URL self-link resource Google Cloud lengkap untuk jaringan VPC, subnet, instance, kebijakan penempatan, NEG, layanan backend, aturan penerusan, firewall, dan zona Cloud DNS.neg_attachment_commands:- Jika variabel
deployment_modeditetapkan ke"cluster_creation": Menampilkan pesan status yang menunjukkan bahwa Terraform otomatis melampirkan NEG selama pembuatan cluster. - Jika variabel
deployment_modeditetapkan ke"node_addition": Menyediakan perintahgcloud compute network-endpoint-groups updateyang diperlukan untuk memasang instance host ESXi yang baru disediakan ke NEG pengelolaan dan NSX. - Jika variabel
deployment_modeditetapkan ke"appliance_addition": Menampilkan pesan status yang menunjukkan bahwa NEG tetap terpasang ke node cluster yang ada dan Terraform tidak mengubahnya selama penambahan peralatan.
- Jika variabel
python_scripts_input_config: Payload konfigurasi parameter terstruktur untuk skrip otomatisasi deployment penginstal VCF downstream di direktori toolkitpython. Anda dapat mengonversi output ini ke format JSON yang diharapkan oleh skrip Python toolkit dengan menjalankan skrip bantuan yang dijelaskan di bagian berikutnya.management_domain_deployment_input_config: Input terstruktur untuk deployment domain pengelolaan dengan sebagian besar kolom yang diisi otomatis dari penyediaan menyeluruh. Anda dapat mengedit input ini jika diperlukan atau ditunjukkan, dan mengonversinya menjadi file JSON untuk deployment domain pengelolaan menggunakan skrip ekspor yang dijelaskan di bagian berikutnya.
Mengekspor konfigurasi deployment
Toolkit ini menyertakan skrip bantuan (scripts/export_deployment_config.py)
yang mengekstrak blok konfigurasi dari output Terraform dan mengekspornya ke dalam
file JSON yang diformat dan sesuai skema untuk alur kerja downstream:
management_domain_deployment_input_config: JSON input untuk deployment domain pengelolaan VCF.python_scripts_input_config: JSON input (config.json) untuk skrip otomatisasi Python toolkit (vcf_deployer).
Menjalankan skrip helper
Jalankan skrip bantuan dari direktori e2e-terraform (atau tentukan flag -d atau
-i) dengan memilih salah satu opsi berikut:
Ekspor kedua konfigurasi secara bersamaan:
python3 ../scripts/export_deployment_config.py --config all --output-dir .Perintah ini akan menghasilkan file berikut:
management_domain_deployment_input.jsonpython_scripts_input_config.json
Ekspor hanya JSON input deployment domain pengelolaan VCF:
python3 ../scripts/export_deployment_config.py --config mgmt -o management_domain_deployment_input.jsonEkspor hanya JSON input toolkit Python:
python3 ../scripts/export_deployment_config.py --config python -o config.jsonEkspor dari output Terraform yang disimpan atau input standar yang disalurkan (
stdin):# From stdin pipe: terraform output -json | python3 ../scripts/export_deployment_config.py --config all --output-dir . # From a saved JSON file: terraform output -json > outputs.json python3 ../scripts/export_deployment_config.py -i outputs.json --config all --output-dir .
Langkah berikutnya
- Jalankan toolkit persiapan node untuk mereset sandi
rootESXi awal di setiap host, siapkan node untuk deployment VCF, dan deploy peralatan penginstal VCF menggunakan outputpython_scripts_input_configdari konfigurasi Terraform end-to-end (dikonversi menjadi JSON menggunakan skrip bantuan). Untuk mengetahui petunjuknya, lihat Menyiapkan node dan men-deploy VCF menggunakan toolkit. - 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(gantiREGIONdengan region Google Cloud tempat node bare-metal Anda berada) - Port:
443 - Username:
vcf-depot-user - Password:
Google1!
- Protokol:
- Deploy domain pengelolaan dengan memberikan file JSON
management_domain_deployment_input_config(diekspor menggunakan skrip bantuan) ke penginstal VCF. Pastikan Anda mengganti semua kolom yang ditandai sebagaiuser_should_inputdalam konfigurasi input dengan nilai target Anda. Untuk mengetahui petunjuk tentang cara menyelesaikan alur kerja pengaktifan VCF, lihat Men-deploy fleet VCF baru atau instance VCF baru dalam dokumentasi Broadcom. - Perluas kapasitas cluster dengan menambahkan node di Mengelola kapasitas node menggunakan Terraform.
- Sediakan load balancer dan data DNS untuk peralatan VCF tambahan di Menambahkan peralatan VCF menggunakan Terraform.