Prepara i nodi ed esegui il deployment di VCF utilizzando il toolkit

Questa pagina descrive come utilizzare il toolkit VMware on Google Cloud per preparare i nodi ESXi bare metal, configurare il networking vSwitch e i datastore vSAN ed eseguire il deployment dell'appliance di installazione di VMware Cloud Foundation (VCF).

Panoramica

Il toolkit della soluzione VMware automatizza la configurazione iniziale delle istanze ESXi bare metal di cui è stato eseguito il deployment nel tuo progetto Google Cloud . Se eseguito da una VM jumpbox, il toolkit esegue le seguenti azioni:

  1. Verifica delle credenziali dell'host e reimpostazione della password: si connette a ogni istanza ESXi bare metal e reimposta la password ESXi root iniziale sul secret esxi-root-password archiviato in Secret Manager.
  2. Configurazione di rete: configura vSwitch0 e crea gruppi di porte con tag VLAN per la rete del programma di installazione VCF.
  3. Configurazione dello spazio di archiviazione: inizializza gli SSD locali in un pool vsanDatastore.
  4. Deployment del programma di installazione VCF: scarica l'Open Virtual Appliance (OVA) del programma di installazione VCF dal repository offline, esegue il deployment dell'appliance su un host ESXi di destinazione designato, inserisce i parametri di rete e DNS e inizializza il programma di installazione.

Scegli un percorso di deployment

Puoi eseguire il toolkit utilizzando uno dei seguenti approcci:

  • Percorso uno: esegui il provisioning di un jumpbox utilizzando Terraform (consigliato): utilizza Terraform per eseguire il provisioning di una VM jumpbox Compute Engine dedicata all'interno del VPC dell'host ESXi, della subnet VPC, del gateway Cloud NAT e delle regole firewall SSH di Identity-Aware Proxy (IAP).
  • Percorso due: utilizza una VM jumpbox esistente: esegui il toolkit direttamente da una VM Linux esistente situata all'interno del VPC dell'host ESXi in una subnet con l'accesso privato Google abilitato.

Prima di iniziare

Prima di eseguire il toolkit, completa i seguenti prerequisiti:

Consenti il networking di subnet di livello 2 basato su VLAN

La soluzione VMware richiede che le subnet della rete Virtual Private Cloud (VPC) abbiano la proprietà Risolvi subnet mask impostata su Trasmetti solo l'intervallo principale con apprendimento per supportare il networking basato su VLAN. Apri un ticket di assistenza nel Centro assistenza della consoleGoogle Cloud con le seguenti informazioni:

  • Prodotto: Google Cloud VMware Engine
  • Priorità: P2
  • Categoria: connettività di rete
  • Impatto aziendale: domanda tecnica generale
  • Fornisci maggiori dettagli: Allowlist L2 network connectivity for my project, oltre all'ID progetto, al numero di progetto e alla regione e alla zona di destinazione del deployment

Per ulteriori informazioni sul supporto del networking basato su VLAN, consulta Emulazione di livello 2: trasmissione ARP e apprendimento MAC personalizzato.

Abilita le API richieste

Devi avere un progetto Google Cloud attivo con la fatturazione abilitata (può essere lo stesso progetto Google Cloud in cui si trovano gli host ESXi o un progetto jumpbox separato). Abilita le seguenti API:

  • API Compute Engine (compute.googleapis.com) per i progetti di jumpbox e host ESXi
  • API Identity and Access Management (IAM) (iam.googleapis.com) per il progetto jumpbox
  • API Cloud Resource Manager (cloudresourcemanager.googleapis.com) per i progetti jumpbox e host ESXi
  • API Cloud Identity-Aware Proxy (iap.googleapis.com) per il progetto jumpbox
  • API Secret Manager (secretmanager.googleapis.com) per il progetto host ESXi

Per abilitare le API utilizzando l'interfaccia a riga di comando gcloud, esegui questo comando:

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

Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud target.

Configurare le autorizzazioni IAM

Il flusso di lavoro del toolkit utilizza le seguenti identità e ruoli:

  • Terraform Invoker: l'utente o l'identità CI/CD che avvia terraform apply. Richiede il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) sul service account Terraform Runner se viene simulata l'identità del runner.
  • Terraform Runner: l'identità che esegue il provisioning dell'infrastruttura Terraform:
    • Compute Network Admin (roles/compute.networkAdmin)
    • Amministratore istanze Compute v1 (roles/compute.instanceAdmin.v1)
    • Compute Security Admin (roles/compute.securityAdmin)
    • Service Account User (roles/iam.serviceAccountUser)
    • Project IAM Admin (roles/resourcemanager.projectIamAdmin) sul progetto di destinazione (se utilizzi la gestione IAM automatizzata con Terraform)
  • Utente SSH Jumpbox: l'identità che si connette alla VM jumpbox utilizzando IAP:
    • IAP Tunnel Resource Accessor (roles/iap.tunnelResourceAccessor)
    • Compute Viewer (roles/compute.viewer)
  • Jumpbox Script Runner: l'utente o il account di servizio che esegue lo script del toolkit Python sul jumpbox:
    • Secret Manager Secret Accessor (roles/secretmanager.secretAccessor)
    • Compute Admin (roles/compute.admin)
    • Project IAM Admin (roles/resourcemanager.projectIamAdmin)
  • Agente di servizio per la deviazione della rete VMware Engine (P4SA) (service-PROJECT_NUMBER@gcp-sa-network-drift.):
    • Compute Network Admin (roles/compute.networkAdmin)

Archivia le credenziali in Secret Manager

Il toolkit recupera le password in fase di runtime da Secret Manager e utilizza il secret esxi-root-password per reimpostare la password root iniziale su ogni istanza ESXi bare metal. Crea secret nel tuo progetto Google Cloud per la password ESXi root, la password VCF root e la password dell'utente locale 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'

Prima di eseguire i comandi, sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud di destinazione.
  • YOUR_ESXI_ROOT_PASSWORD: la nuova password root da impostare sugli host ESXi bare metal, che sostituisce la password dell'istanza iniziale.
  • YOUR_VCF_ROOT_PASSWORD: la password root per l'appliance del programma di installazione VCF.
  • YOUR_VCF_ADMIN_PASSWORD: la password dell'utente amministratore locale per l'appliance del programma di installazione VCF.

Esegui il provisioning di un jumpbox utilizzando Terraform

Se non hai un jumpbox esistente con connettività di rete ai tuoi host ESXi, utilizza i moduli Terraform forniti per eseguire il deployment di una VM jumpbox.

Clona il repository del toolkit

Clona il repository del toolkit sulla tua workstation locale:

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

Configura le variabili Terraform

Vai alla directory infrastructure e crea il file terraform.tfvars:

cd infrastructure
cp terraform.tfvars.example terraform.tfvars

Aggiorna il file terraform.tfvars con i parametri del progetto:

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"

La tabella seguente descrive le principali variabili di input di Terraform:

Variabile Requisito Predefinito Descrizione
project_id Obbligatorio Nessuno ID progettoGoogle Cloud in cui Terraform esegue il deployment dell'infrastruttura.
region Obbligatorio Nessuno Regione Google Cloud target (ad esempio, us-central1).
zone Facoltativo ${region}-a Zona target. Imposta questa variabile in modo che corrisponda alla zona dei tuoi host ESXi bare metal per ridurre al minimo la latenza.
vpc_name Condizionale "" Nome della rete VPC che ospita i nodi ESXi. Obbligatorio se la variabile create_subnet è impostata su true.
create_subnet Facoltativo true Imposta su true per creare una nuova subnet o su false per utilizzare una subnet esistente.
subnet_name Facoltativo "smve-toolkit-subnet" Nome della subnet per la VM jumpbox. Se la variabile create_subnet è impostata su false, la subnet deve esistere nella rete vpc_name.
subnet_cidr Condizionale "" Intervallo CIDR IPv4 principale (minimo /29). Obbligatorio se la variabile create_subnet è impostata su true.
enable_internet Facoltativo true Controlla la creazione di router Cloud, Cloud NAT e route predefinite per il traffico in uscita verso internet. Imposta su false dopo la configurazione per eliminare il gateway NAT, il router e la route.
jumpbox_name Facoltativo "smve-toolkit-jumpbox" Il nome della VM jumpbox di Compute Engine.
machine_type Facoltativo "e2-micro" Tipo di macchina per l'istanza VM jumpbox.
boot_disk_size Facoltativo 30 Dimensione del disco di avvio in GB per l'istanza VM jumpbox (minimo 10 GB).
boot_disk_type Facoltativo "pd-balanced" Tipo di Persistent Disk per il disco di avvio del jumpbox (pd-balanced, pd-standard, pd-ssd, pd-extreme).
boot_disk_image Facoltativo "debian-cloud/debian-12" Famiglia di immagini disco di avvio del sistema operativo o immagine specifica self_link.
jumpbox_internal_ip Facoltativo "" Indirizzo IPv4 interno statico (ad esempio, "10.10.0.5"), nome IP prenotato o URI. Il valore predefinito è un indirizzo IP temporaneo dinamico.
service_account_email Facoltativo "" Email del account di servizio personalizzato da collegare alla VM jumpbox. Il valore predefinito è l'account di servizio predefinito di Compute Engine.

Esegui il deployment dell'infrastruttura del jumpbox

Inizializza e applica la configurazione 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

Sostituisci TERRAFORM_RUNNER_SA con l'indirizzo email del account di servizio runner di Terraform.

Connettiti al jumpbox utilizzando IAP

Connettiti alla VM jumpbox utilizzando l'inoltro TCP di IAP (non è richiesto un indirizzo IP pubblico):

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

Prima di eseguire il comando, sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud che ospita la VM jumpbox.
  • ZONE: la zona Google Cloud in cui è stato eseguito il deployment della VM jumpbox.

Utilizza una VM jumpbox esistente

Se utilizzi una VM jumpbox esistente, deve essere una VM Linux Compute Engine situata all'interno della stessa rete VPC che ospita i nodi ESXi bare metal. Questo requisito di posizionamento del VPC è obbligatorio per garantire la connettività di rete all'endpoint Private Service Connect (PSC) del repository offline che ospita l'OVA del programma di installazione di VCF.

Prima di eseguire il toolkit, verifica che la VM jumpbox esistente soddisfi i seguenti requisiti:

  1. Posizionamento VPC: devi eseguire il deployment della VM all'interno della rete VPC che ospita i nodi ESXi.
  2. Accesso APIGoogle Cloud : la subnet che ospita la VM jumpbox deve avere l'accesso privato Google abilitato (private_ip_google_access = true) o l'accesso a internet in uscita per raggiungere secretmanager.googleapis.com, compute.googleapis.com e iam.googleapis.com.
  3. Traffico in uscita per l'installazione dei pacchetti: accesso HTTP/HTTPS in uscita (tramite Cloud NAT, un proxy aziendale o traffico in uscita diretto) per installare le dipendenze Python.
  4. Abilitazione delle API e autorizzazioni IAM: l'identità che esegue lo script deve avere i ruoli roles/secretmanager.secretAccessor, roles/compute.admin e roles/resourcemanager.projectIamAdmin nel progetto Google Cloud .
  5. Connettività SSH: il jumpbox deve consentire il traffico SSH in entrata sulla porta TCP 22 dall'intervallo IP IAP (35.235.240.0/20) o dagli intervalli IP pubblici autorizzati e l'identità di connessione deve avere i ruoli applicabili (roles/iap.tunnelResourceAccessor e roles/compute.viewer).

Configura il toolkit sul jumpbox

Nel terminale del jumpbox, installa le dipendenze e scarica lo script del toolkit.

Installa i pacchetti di sistema

Installa Python 3, pip, venv e Git:

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

Ottieni gli script del toolkit

Clona il repository o copia gli script dalla tua workstation locale:

  • Opzione A (clonazione tramite 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
    
  • Opzione B (copia dalla workstation locale utilizzando 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
    

Crea e attiva un ambiente virtuale Python

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

Configura il file di configurazione dello script del toolkit

Crea un file di configurazione config.json sulla VM jumpbox per specificare le istanze ESXi di destinazione e le impostazioni di deployment di VCF.

Parametri di configurazione

Parametro Obbligatorio Tipo di dati Descrizione
project Sì string ID progetto Google Cloud di destinazione in cui si trovano le istanze ESXi bare metal.
zone Sì string Zona Google Cloud di destinazione in cui si trovano i nodi ESXi.
gce_nodes Sì list(string) o object Elenco esplicito dei nomi delle istanze ESXi bare metal (ad esempio, ["vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2"]) o un oggetto che rileva le istanze per prefix (ad esempio, {"prefix": "vcf-mgmt-sample"}) o subnet ({"subnet": "vcf-mgmt-subnet"}).
esxi_root_password_secret Sì string Nome del secret di Secret Manager o percorso della risorsa contenente la password root ESXi.
vcf_deployment_config Facoltativo object Oggetto di configurazione per il deployment e l'inizializzazione del programma di installazione VCF. Ometti questo oggetto se non devi eseguire il deployment del programma di installazione di VCF su nessuno dei nodi in fase di preparazione.
└─ target_gce_node Condizionale string Nodo bare metal di destinazione che ospita i workload del deployment iniziale. Obbligatorio se l'oggetto vcf_deployment_config è definito.
└─ vcf_appliance_root_password_secret Condizionale string Nome del secret di Secret Manager contenente la password root dell'appliance VCF.
└─ vcf_appliance_local_user_password_secret Condizionale string Nome del secret di Secret Manager contenente la password dell'utente locale (amministratore) dell'appliance VCF.
└─ vcf_installer_ip_source Condizionale string o object Origine dell'indirizzo IP per il programma di installazione VCF (SDDC Manager). Specifica {"reserved_address": "ADDRESS_NAME"}, {"forwarding_rule": "RULE_NAME"} o una stringa URI della risorsa diretta (ad esempio, projects/PROJECT_ID/regions/REGION/forwardingRules/RULE_NAME).
└─ vcf_installer_fqdn Condizionale string Nome di dominio completo (FQDN) per il programma di installazione di VCF (SDDC Manager).
└─ offline_depot_subnet_cidr Condizionale string Intervallo CIDR IPv4 principale per la subnet del repository offline dedicato (ad esempio /29). Non deve sovrapporsi o riutilizzare subnet esistenti nel VPC.
└─ dns_server Facoltativo string Indirizzo IP del server DNS (ad esempio, l'IP DNS riservato della tua subnet o un server DNS personalizzato). Se omesso, il valore predefinito è il server dei metadatiGoogle Cloud (169.254.169.254). Se utilizzi Cloud DNS, specifica un indirizzo IP di una subnet non di livello 2.

Configurazioni di esempio

Le seguenti schede mostrano configurazioni config.json di esempio (basate su modelli disponibili nella directory python/examples/) per diversi approcci di targeting delle istanze e strategie di allocazione degli IP:

Elenco di nodi esplicito

Utilizza questa configurazione (python/examples/config_explicit_nodes.json) per scegliere come target nomi di istanze ESXi specifici:

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

Filtro per prefisso del nome del nodo

Utilizza questa configurazione (python/examples/config_prefix_filter.json) per rilevare dinamicamente le istanze ESXi corrispondenti a un prefisso del nome e utilizza una regola di forwarding:

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

Filtro di rilevamento delle subnet

Utilizza questa configurazione (python/examples/config_subnet_filter.json) per rilevare dinamicamente le istanze ESXi collegate a una subnet specifica e fornire un URI della risorsa completo per l'origine 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"
}
}

Solo preparazione dei nodi (nessun programma di installazione VCF)

Ometti l'oggetto vcf_deployment_config nel file config.json se non devi eseguire il deployment dell'appliance del programma di installazione di VCF su nessuno dei nodi in fase di preparazione (ad esempio, quando prepari i nodi per l'aggiunta di nodi del giorno 2 o la creazione di cluster di dati dei workload):

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

Sostituisci quanto segue nel file config.json (e rimuovi eventuali commenti incorporati prima di eseguire lo script Python):

  • PROJECT_ID: l'ID del progetto Google Cloud in cui si trovano le tue istanze ESXi bare metal.
  • ZONE: la zona Google Cloud in cui si trovano le istanze ESXi bare metal (ad esempio, us-east4-c).
  • SUBNET_NAME: il nome della subnet VPC collegata alle istanze ESXi (ad esempio, vcf-mgmt-subnet).

Esegui lo script del toolkit

Esegui l'autenticazione con Google Cloud utilizzando le Credenziali predefinite dell'applicazione sul terminale del jumpbox:

gcloud auth application-default login --no-browser

Con l'ambiente virtuale attivo (source venv/bin/activate) e config.json configurato, esegui il toolkit:

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

Workflow di esecuzione

Lo script esegue controlli di convalida automatizzati ed esegue le seguenti fasi di configurazione:

  1. Convalida preflight: verifica che le istanze target eseguano immagini ESXi supportate, convalida l'accesso a Secret Manager, verifica l'allineamento del CIDR IP e calcola le impronte dei certificati SSL.
  2. Configurazione delle credenziali e reimpostazione della password: si connette a ogni host e reimposta la password ESXi root iniziale sul secret esxi-root-password archiviato in Secret Manager.
  3. Creazione di vSwitch e gruppi di porte: configura vSwitch0 e crea gruppi di porte con tag VLAN (vlan-VLAN_ID-RANDOM_SUFFIX).
  4. Inizializzazione vSAN: formatta gli SSD NVMe locali in un vsanDatastore.
  5. Deployment del programma di installazione VCF: esegue il deployment del file OVA VCF su target_gce_node, inserisce la configurazione di rete e avvia l'appliance.

Al termine dell'esecuzione, disattiva l'ambiente virtuale:

deactivate

Attività post-deployment

Dopo aver eseguito il toolkit e aver eseguito il deployment dell'appliance del programma di installazione VCF, esegui la seguente configurazione post-deployment:

(Facoltativo) Disattiva il traffico in uscita verso internet sul jumpbox

Dopo aver installato le dipendenze Python, puoi eliminare Cloud NAT per applicare una sicurezza in uscita rigorosa. Nella workstation terraform.tfvars:

enable_internet = false

Applica di nuovo Terraform:

terraform apply

Esamina i problemi noti prima di procedere

Prima di avviare il deployment di VCF, esamina tutti i problemi documentati nella pagina Problemi noti. Ignorare questi problemi può causare errori di deployment.


Risoluzione dei problemi

Questa sezione descrive come diagnosticare e risolvere i problemi comuni durante la configurazione o l'esecuzione del toolkit.

Controlla i log di esecuzione del toolkit sul jumpbox

Quando esegui il toolkit sul jumpbox, lo script Python scrive log di esecuzione dettagliati nella directory ~/logs/ nella home directory del jumpbox. Ogni file di log è denominato vcf_deployer_TIMESTAMP.log. Se un passaggio di preparazione del nodo o di deployment del programma di installazione di VCF non va a buon fine, esamina il file vcf_deployer_*.log più recente in ~/logs/ per diagnosticare l'errore.

Errore di deployment del programma di installazione VCF a causa di password inefficaci

  • Sintomo: lo script del toolkit Python non va a buon fine o si comporta in modo imprevisto durante il deployment e l'inizializzazione del programma di installazione VCF.
  • Risoluzione: non inserire password inefficaci per gli utenti VCF in Secret Manager, poiché le password inefficaci possono causare l'errore dello script Python per il deployment del programma di installazione di VCF. Assicurati che tutte le password rispettino le linee guida sulla complessità delle password di Broadcom.

Autorizzazione negata (roles/iam.serviceAccountTokenCreator)

  • Sintomo: errori durante la simulazione dell'identità dei account di servizio durante l'esecuzione di Terraform.
  • Risoluzione: assicurati che l'identità che esegue Terraform disponga dell'autorizzazione roles/iam.serviceAccountTokenCreator concessa al account di servizio del runner Terraform.

Errore di connessione SSH IAP (403 Forbidden / timeout)

  • Sintomo: gcloud compute ssh non riesce a stabilire un tunnel IAP.
  • Risoluzione:
    • Verifica che l'API Cloud Identity-Aware Proxy (iap.googleapis.com) sia abilitata.
    • Assicurati che la tua identità utente disponga di roles/iap.tunnelResourceAccessor e roles/compute.viewer.
    • Verifica che la regola firewall allow-iap-ssh-* esista e consenta il traffico in entrata da 35.235.240.0/20 sulla porta TCP 22.

Avviso di eliminazione della subnet alla nuova applicazione (flag create_subnet)

  • Sintomo: l'esecuzione di terraform apply dopo l'impostazione di enable_internet = false tenta di eliminare la subnet.
  • Risoluzione: mantieni create_subnet = true se la subnet è stata creata da Terraform. La modifica di create_subnet in false indica a Terraform di interrompere la gestione della risorsa, pianificandone l'eliminazione.

Passaggi successivi

  • Se hai preparato i nodi e hai eseguito il deployment di un programma di installazione VCF per il deployment del dominio di gestione:
    1. Configura la connessione al repository offline regionale nel programma di installazione VCF per scaricare i bundle software richiesti:
      • Protocollo: HTTPS
      • FQDN (non utilizzare un indirizzo IP): offline-depot.REGION.selfmanagedvmwareengine.goog (sostituisci REGION con la regione Google Cloud in cui si trovano i nodi bare metal)
      • Porta: 443
      • Nome utente: vcf-depot-user
      • Password: Google1!
    2. Esegui il deployment del dominio di gestione:
      • Se hai eseguito il provisioning delle risorse Google Cloud utilizzando i moduli Terraform end-to-end (Esegui il deployment dei nodi e di VCF utilizzando Terraform e il toolkit), converti l'output Terraform management_domain_deployment_input_config in JSON utilizzando lo script helper (scripts/export_deployment_config.py), sostituisci tutti i campi contrassegnati come user_should_input con i valori di destinazione e fornisci il file JSON al programma di installazione di VCF.
      • Se hai eseguito il provisioning delle risorse Google Cloud senza utilizzare i moduli Terraform end-to-end, fornisci manualmente gli input di configurazione del dominio di gestione nel programma di installazione di VCF.
      • Per istruzioni su come completare il workflow di attivazione del programma di installazione VCF, consulta Esegui il deployment di un nuovo parco risorse VCF o di una nuova istanza VCF nella documentazione di Broadcom.
  • Se hai preparato i nodi per l'aggiunta a un cluster esistente: aggiungi i nodi preparati al cluster VMware VCF 9.x utilizzando l'interfaccia utente o le API di VMware.
  • Scopri come aggiungere e rimuovere nodi in Gestisci la capacità dei nodi o Gestisci la capacità dei nodi utilizzando Terraform.