Préparer les nœuds et déployer VCF à l'aide du kit d'outils
Cette page explique comment utiliser le kit d'outils de la solution VMware sur Google Cloud pour préparer des nœuds ESXi bare metal, configurer la mise en réseau vSwitch et les datastores vSAN, et déployer l'appareil d'installation VMware Cloud Foundation (VCF).
Présentation
Le kit d'outils de la solution VMware automatise la configuration initiale des instances ESXi bare metal déployées dans votre projet Google Cloud . Lorsqu'il est exécuté à partir d'une VM jumpbox, le kit d'outils effectue les actions suivantes :
- Vérification des identifiants de l'hôte et réinitialisation du mot de passe : se connecte à chaque instance ESXi bare metal et réinitialise le mot de passe ESXi
rootinitial sur le secretesxi-root-passwordstocké dans Secret Manager. - Configuration du réseau : configure
vSwitch0et crée des groupes de ports avec tag VLAN pour le réseau du programme d'installation VCF. - Configuration du stockage : initialise les disques SSD locaux dans un pool
vsanDatastore. - Déploiement du programme d'installation VCF : télécharge le fichier OVA (Open Virtual Appliance) du programme d'installation VCF à partir du dépôt hors connexion, déploie l'appareil sur un hôte ESXi cible désigné, injecte les paramètres réseau et DNS, et initialise le programme d'installation.
Choisir un chemin de déploiement
Vous pouvez exécuter le kit d'outils en utilisant l'une des approches suivantes :
- Option 1 : Provisionner un jumpbox à l'aide de Terraform (recommandé) : utilisez Terraform pour provisionner une VM jumpbox Compute Engine dédiée dans le VPC de l'hôte ESXi, le sous-réseau VPC, la passerelle Cloud NAT et les règles de pare-feu SSH Identity-Aware Proxy (IAP).
- Option 2 : Utiliser une VM jumpbox existante : exécutez le kit d'outils directement à partir d'une VM Linux existante située dans le VPC de l'hôte ESXi, dans un sous-réseau où l'accès privé à Google est activé.
Avant de commencer
Avant d'exécuter le kit d'outils, assurez-vous de remplir les conditions préalables suivantes :
Mettre en liste d'autorisation la mise en réseau de sous-réseaux de couche 2 basée sur les VLAN
La solution VMware nécessite que la propriété Résoudre le masque de sous-réseau des sous-réseaux de votre réseau cloud privé virtuel (VPC) soit définie sur Diffuser la plage principale uniquement avec l'apprentissage pour prendre en charge la mise en réseau basée sur les VLAN. Ouvrez une demande d'assistance dans le Centre d'assistance de la consoleGoogle Cloud en fournissant les informations suivantes :
- Produit : Google Cloud VMware Engine
- Priority : P2
- Catégorie : Connectivité réseau
- Impact sur l'entreprise : question technique d'ordre général
- Fournissez plus de détails :
Allowlist L2 network connectivity for my project, ainsi que l'ID de votre projet, son numéro, et la région et la zone cibles de votre déploiement.
Pour en savoir plus sur la compatibilité avec la mise en réseau basée sur les VLAN, consultez Émulation de couche 2 : diffusion ARP et apprentissage MAC personnalisé.
Activer les API requises
Vous devez disposer d'un projet Google Cloud actif pour lequel la facturation est activée (il peut s'agir du même projet Google Cloud que celui dans lequel résident les hôtes ESXi ou d'un projet jumpbox distinct). Activez les API suivantes :
- API Compute Engine (
compute.googleapis.com) : pour les projets d'hôte ESXi et de jumpbox - API Identity and Access Management (IAM) (
iam.googleapis.com) : pour le projet jumpbox - API Cloud Resource Manager (
cloudresourcemanager.googleapis.com) : pour les projets d'hôte ESXi et de jumpbox - API Cloud Identity-Aware Proxy (
iap.googleapis.com) : pour le projet jumpbox - API Secret Manager (
secretmanager.googleapis.com) : pour le projet d'hôte ESXi
Pour activer les API à l'aide de la CLI gcloud, exécutez la commande suivante :
gcloud services enable \
compute.googleapis.com \
iam.googleapis.com \
cloudresourcemanager.googleapis.com \
iap.googleapis.com \
secretmanager.googleapis.com \
--project='PROJECT_ID'
Remplacez PROJECT_ID par l'ID de votre projet cible Google Cloud .
Configurer les autorisations IAM
Le workflow du kit d'outils utilise les identités et les rôles suivants :
- Demandeur Terraform : utilisateur ou identité CI/CD lançant
terraform apply. Nécessite le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) sur le compte de service de l'exécuteur Terraform si vous empruntez l'identité de l'exécuteur. - Exécuteur Terraform : identité provisionnant l'infrastructure Terraform :
- Administrateur de réseaux Compute (
roles/compute.networkAdmin) - Administrateur d'instances Compute v1 (
roles/compute.instanceAdmin.v1) - Administrateur de sécurité de Compute (
roles/compute.securityAdmin) - Utilisateur du compte de service (
roles/iam.serviceAccountUser) - Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin) sur le projet cible (si vous utilisez la gestion IAM automatisée avec Terraform)
- Administrateur de réseaux Compute (
- Utilisateur SSH de la jumpbox : identité se connectant à la VM jumpbox à l'aide d'IAP :
- Accesseur de ressources de tunnel IAP (
roles/iap.tunnelResourceAccessor) - Lecteur de Compute (
roles/compute.viewer)
- Accesseur de ressources de tunnel IAP (
- Exécuteur de script Jumpbox : l'utilisateur ou le compte de service exécutant le script du kit d'outils Python sur la jumpbox :
- Accesseur de secrets Secret Manager (
roles/secretmanager.secretAccessor) - Administrateur de Compute (
roles/compute.admin) - Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin)
- Accesseur de secrets Secret Manager (
- Agent de service de dérive réseau VMware Engine (P4SA) (
service-PROJECT_NUMBER@gcp-sa-network-drift.) :- Administrateur de réseaux Compute (
roles/compute.networkAdmin)
- Administrateur de réseaux Compute (
Stocker les identifiants dans Secret Manager
Le kit d'outils récupère les mots de passe au moment de l'exécution à partir de Secret Manager et utilise le secret esxi-root-password pour réinitialiser le mot de passe root initial sur chaque instance ESXi Bare Metal. Créez des secrets dans votre projet Google Cloud pour le mot de passe ESXi root, le mot de passe VCF root et le mot de passe de l'utilisateur local 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'
Avant d'exécuter les commandes, remplacez les éléments suivants :
PROJECT_ID: ID de votre projetGoogle Cloud cible.YOUR_ESXI_ROOT_PASSWORD: nouveau mot de passerootà définir sur vos hôtes ESXi Bare Metal, en remplacement du mot de passe d'instance initial.YOUR_VCF_ROOT_PASSWORD: mot de passerootde l'appareil du programme d'installation VCF.YOUR_VCF_ADMIN_PASSWORD: mot de passe de l'administrateur local pour l'appareil du programme d'installation VCF.
Provisionner un jumpbox à l'aide de Terraform
Si vous ne disposez pas d'un jumpbox existant avec une connectivité réseau à vos hôtes ESXi, utilisez les modules Terraform fournis pour déployer une VM jumpbox.
Cloner le dépôt du kit d'outils
Clonez le dépôt du kit d'outils sur votre poste de travail local :
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
Configurer les variables Terraform
Accédez au répertoire infrastructure et créez le fichier terraform.tfvars :
cd infrastructure
cp terraform.tfvars.example terraform.tfvars
Mettez à jour le fichier terraform.tfvars avec les paramètres de votre projet :
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"
Le tableau suivant décrit les principales variables d'entrée Terraform :
| Variable | Exigence | Par défaut | Description |
|---|---|---|---|
project_id
|
Obligatoire | Aucun | ID du projetGoogle Cloud dans lequel Terraform déploie l'infrastructure. |
region
|
Obligatoire | Aucun | Région cible Google Cloud(par exemple, us-central1). |
zone
|
Facultatif | ${region}-a
|
Zone cible. Définissez cette variable pour qu'elle corresponde à la zone de vos hôtes ESXi bare metal afin de minimiser la latence. |
vpc_name
|
Conditionnel | ""
|
Nom du réseau VPC hébergeant les nœuds ESXi. Obligatoire si la variable create_subnet est définie sur true. |
create_subnet
|
Facultatif | true
|
Définissez cette option sur true pour créer un sous-réseau ou sur false pour utiliser un sous-réseau existant. |
subnet_name
|
Facultatif | "smve-toolkit-subnet"
|
Nom du sous-réseau de la VM jumpbox. Si la variable create_subnet est définie sur false, le sous-réseau doit exister dans le réseau vpc_name. |
subnet_cidr
|
Conditionnel | ""
|
Plage CIDR IPv4 principale (/29 minimum). Obligatoire si la variable create_subnet est définie sur true. |
enable_internet
|
Facultatif | true
|
Contrôle la création de Cloud Router, de Cloud NAT et de la route par défaut pour la sortie Internet.
Définissez cette option sur false après la configuration pour supprimer la passerelle NAT, le routeur et la route. |
jumpbox_name
|
Facultatif | "smve-toolkit-jumpbox"
|
Nom de la VM jumpbox Compute Engine. |
machine_type
|
Facultatif | "e2-micro"
|
Type de machine pour l'instance de VM jumpbox. |
boot_disk_size
|
Facultatif | 30
|
Taille du disque de démarrage en Go pour l'instance de VM jumpbox (minimum 10 Go). |
boot_disk_type
|
Facultatif | "pd-balanced"
|
Type de disque persistant pour le disque de démarrage du jumpbox (pd-balanced, pd-standard, pd-ssd, pd-extreme). |
boot_disk_image
|
Facultatif | "debian-cloud/debian-12"
|
Famille d'images de disque de démarrage de l'OS ou image spécifique self_link. |
jumpbox_internal_ip
|
Facultatif | ""
|
Adresse IPv4 interne statique (par exemple, "10.10.0.5"), nom d'adresse IP réservée ou URI. La valeur par défaut est une adresse IP éphémère dynamique. |
service_account_email
|
Facultatif | ""
|
Adresse e-mail du compte de service personnalisé à associer à la VM jumpbox. La valeur par défaut est le compte de service Compute Engine par défaut. |
Déployer l'infrastructure de jumpbox
Initialisez et appliquez la configuration 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
Remplacez TERRAFORM_RUNNER_SA par l'adresse e-mail du compte de service de l'exécuteur Terraform.
Se connecter au jumpbox à l'aide d'IAP
Connectez-vous à la VM jumpbox à l'aide du transfert TCP IAP (aucune adresse IP publique n'est requise) :
gcloud compute ssh smve-toolkit-jumpbox \
--project='PROJECT_ID' \
--zone='ZONE' \
--tunnel-through-iap
Avant d'exécuter la commande, remplacez les éléments suivants :
PROJECT_ID: ID du projet Google Cloud hébergeant la VM jumpbox.ZONE: zone Google Cloud où la VM jumpbox est déployée.
Utiliser une VM jumpbox existante
Si vous utilisez une VM jumpbox existante, il doit s'agir d'une VM Linux Compute Engine située dans le même réseau VPC que celui qui héberge les nœuds ESXi bare metal. Cette exigence de placement VPC est obligatoire pour garantir la connectivité réseau au point de terminaison Private Service Connect (PSC) du dépôt hors connexion hébergeant l'OVA du programme d'installation VCF.
Avant d'exécuter le kit d'outils, vérifiez que votre VM jumpbox existante répond aux exigences suivantes :
- Emplacement du VPC : vous devez déployer la VM dans le réseau VPC hébergeant les nœuds ESXi.
- Google Cloud Accès à l'API : l'accès privé à Google doit être activé sur le sous-réseau hébergeant la VM jumpbox (
private_ip_google_access = true) ou l'accès à Internet sortant doit être activé pour atteindresecretmanager.googleapis.com,compute.googleapis.cometiam.googleapis.com. - Sortie d'installation de package : accès HTTP/HTTPS sortant (à l'aide de Cloud NAT, d'un proxy d'entreprise ou d'une sortie directe) pour installer les dépendances Python.
- Activation de l'API et autorisations IAM : l'identité qui exécute le script doit disposer des rôles
roles/secretmanager.secretAccessor,roles/compute.adminetroles/resourcemanager.projectIamAdminsur votre projet Google Cloud . - Connectivité SSH : la jumpbox doit autoriser l'entrée SSH sur le port TCP 22 à partir de la plage d'adresses IP IAP (
35.235.240.0/20) ou des plages d'adresses IP publiques autorisées, et l'identité de connexion doit disposer des rôles applicables (roles/iap.tunnelResourceAccessoretroles/compute.viewer).
Configurer le kit d'outils sur la jumpbox
Sur le terminal de votre jumpbox, installez les dépendances et téléchargez le script du kit d'outils.
Installer des packages système
Installez Python 3, pip, venv et Git :
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv git
Obtenir les scripts du kit d'outils
Clonez le dépôt ou copiez les scripts depuis votre poste de travail local :
Option A (cloner à l'aide de 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/pythonOption B (copie depuis votre poste de travail local à l'aide de
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
Créer et activer un environnement virtuel Python
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Configurer le fichier de configuration du script du kit d'outils
Créez un fichier de configuration config.json sur la VM jumpbox pour spécifier vos instances ESXi cibles et vos paramètres de déploiement VCF.
Paramètres de configuration
| Paramètre | Obligatoire | Type de données | Description |
|---|---|---|---|
project
|
Oui | string
|
ID du projet cible Google Cloud où résident les instances ESXi Bare Metal. |
zone |
Oui | string |
Zone cible Google Cloud où résident les nœuds ESXi. |
gce_nodes
|
Oui | list(string) ou object
|
Liste explicite de noms d'instances ESXi bare metal (par exemple, ["vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2"]) ou objet découvrant des instances par prefix (par exemple, {"prefix": "vcf-mgmt-sample"}) ou subnet ({"subnet":
"vcf-mgmt-subnet"}). |
esxi_root_password_secret
|
Oui | string
|
Nom du secret Secret Manager ou chemin d'accès à la ressource contenant le mot de passe racine ESXi. |
vcf_deployment_config
|
Facultatif | object
|
Objet de configuration pour le déploiement et l'initialisation du programme d'installation VCF. Omettez cet objet si vous n'avez pas besoin de déployer le programme d'installation VCF sur l'un des nœuds en cours de préparation. |
└─ target_gce_node
|
Conditionnel | string
|
Nœud Bare Metal cible hébergeant les charges de travail du déploiement initial.
Obligatoire si l'objet vcf_deployment_config est défini. |
└─ vcf_appliance_root_password_secret
|
Conditionnel | string
|
Nom du secret Secret Manager contenant le mot de passe racine de l'appareil VCF. |
└─
vcf_appliance_local_user_password_secret |
Conditionnel | string
|
Nom du secret Secret Manager contenant le mot de passe de l'utilisateur local (administrateur) de l'appareil VCF. |
└─ vcf_installer_ip_source
|
Conditionnel | string ou object
|
Source de l'adresse IP pour le programme d'installation VCF (SDDC Manager). Spécifiez {"reserved_address": "ADDRESS_NAME"}, {"forwarding_rule":
"RULE_NAME"} ou une chaîne d'URI de ressource directe (par exemple, projects/PROJECT_ID/regions/REGION/forwardingRules/RULE_NAME). |
└─ vcf_installer_fqdn
|
Conditionnel | string
|
Nom de domaine complet (FQDN) du programme d'installation VCF (SDDC Manager). |
└─ offline_depot_subnet_cidr
|
Conditionnel | string
|
Plage CIDR IPv4 principale pour le sous-réseau du dépôt hors connexion dédié (par exemple, /29). Ne doit pas chevaucher ni réutiliser des sous-réseaux existants dans le VPC. |
└─ dns_server
|
Facultatif | string
|
Adresse IP du serveur DNS (par exemple, l'adresse IP DNS réservée de votre sous-réseau ou un serveur DNS personnalisé). La valeur par défaut est le serveur de métadonnéesGoogle Cloud (169.254.169.254) si elle est omise.
Spécifiez une adresse IP d'un sous-réseau non de couche 2 si vous utilisez Cloud DNS. |
Exemples de configurations
Les onglets suivants présentent des exemples de configurations config.json (basées sur des modèles disponibles dans le répertoire python/examples/) pour différentes approches de ciblage d'instances et stratégies d'allocation d'adresses IP :
Liste de nœuds explicite
Utilisez cette configuration (python/examples/config_explicit_nodes.json) pour cibler des noms d'instances ESXi spécifiques :
{
// 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"
}
}
Filtre de préfixe de nom de nœud
Utilisez cette configuration (python/examples/config_prefix_filter.json) pour découvrir de manière dynamique les instances ESXi correspondant à un préfixe de nom et utilisez une règle de transfert :
{
// 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"
}
}
Filtre de découverte de sous-réseaux
Utilisez cette configuration (python/examples/config_subnet_filter.json) pour découvrir de manière dynamique les instances ESXi associées à un sous-réseau spécifique et fournir un URI de ressource complet pour la source 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"
}
}
Préparation des nœuds uniquement (pas de programme d'installation VCF)
Omettez l'objet vcf_deployment_config dans le fichier config.json si vous n'avez pas besoin de déployer l'appareil du programme d'installation VCF sur l'un des nœuds en cours de préparation (par exemple, lors de la préparation des nœuds pour l'ajout de nœuds au jour 2 ou la création d'un cluster de données de charge de travail) :
{
"project": "PROJECT_ID",
"zone": "ZONE",
"gce_nodes": {
"subnet": "SUBNET_NAME"
},
"esxi_root_password_secret": "esxi-root-password"
}
Remplacez les éléments suivants dans votre fichier config.json (et supprimez les commentaires intégrés avant d'exécuter le script Python) :
PROJECT_ID: ID du projet Google Cloud dans lequel résident vos instances ESXi Bare Metal.ZONE: zone Google Cloud où résident vos instances ESXi Bare Metal (par exemple,us-east4-c).SUBNET_NAME: nom du sous-réseau VPC associé à vos instances ESXi (par exemple,vcf-mgmt-subnet).
Exécuter le script du kit d'outils
Authentifiez-vous auprès de Google Cloud à l'aide des Identifiants par défaut de l'application sur le terminal jumpbox :
gcloud auth application-default login --no-browser
Une fois votre environnement virtuel activé (source venv/bin/activate) et config.json configuré, exécutez le kit d'outils :
python3 -m vcf_deployer.main --config config.json
Workflow d'exécution
Le script exécute des vérifications de validation automatisées et effectue les étapes de configuration suivantes :
- Validation préliminaire : confirme que les instances cibles exécutent des images ESXi compatibles, valide l'accès à Secret Manager, vérifie l'alignement des CIDR IP et calcule les empreintes des certificats SSL.
- Configuration des identifiants et réinitialisation du mot de passe : se connecte à chaque hôte et réinitialise le mot de passe ESXi initial
rootsur le secretesxi-root-passwordstocké dans Secret Manager. - Création de vSwitch et de groupes de ports : configure
vSwitch0et crée des groupes de ports avec tag VLAN (vlan-VLAN_ID-RANDOM_SUFFIX). - Initialisation vSAN : formate les SSD NVMe locaux en
vsanDatastore. - Déploiement du programme d'installation VCF : déploie le fichier OVA VCF sur
target_gce_node, injecte la configuration réseau et démarre l'appareil.
Une fois l'exécution terminée, désactivez l'environnement virtuel :
deactivate
Tâches post-déploiement
Après avoir exécuté le kit d'outils et déployé l'appareil du programme d'installation VCF, effectuez la configuration post-déploiement suivante :
Désactiver la sortie Internet sur la jumpbox (facultatif)
Une fois les dépendances Python installées, vous pouvez supprimer Cloud NAT pour appliquer une sécurité stricte des sorties. Dans votre station de travail terraform.tfvars :
enable_internet = false
Réappliquez Terraform :
terraform apply
Consulter les problèmes connus avant de continuer
Consultez tous les problèmes documentés sur la page Problèmes connus avant de commencer le déploiement de VCF. Ignorer ces problèmes peut entraîner des échecs de déploiement.
Dépannage
Cette section explique comment diagnostiquer et résoudre les problèmes courants lors de la configuration ou de l'exécution du kit d'outils.
Inspecter les journaux d'exécution du kit d'outils sur la jumpbox
Lorsque vous exécutez le kit d'outils sur la jumpbox, le script Python écrit des journaux d'exécution détaillés dans le répertoire ~/logs/ du répertoire d'accueil de la jumpbox. Chaque fichier journal est nommé vcf_deployer_TIMESTAMP.log. Si une étape de préparation de nœud ou de déploiement du programme d'installation VCF échoue, inspectez le fichier vcf_deployer_*.log le plus récent dans ~/logs/ pour diagnostiquer l'échec.
Échec du déploiement du programme d'installation VCF en raison de mots de passe peu sécurisés
- Symptôme : le script du kit d'outils Python échoue ou se comporte de manière inattendue lors du déploiement et de l'initialisation du programme d'installation VCF.
- Résolution : Ne saisissez pas de mots de passe peu sécurisés pour les utilisateurs VCF dans Secret Manager, car ils peuvent entraîner l'échec du script Python pour le déploiement du programme d'installation VCF. Assurez-vous que tous les mots de passe respectent les consignes de Broadcom concernant la complexité des mots de passe.
Autorisation refusée (roles/iam.serviceAccountTokenCreator)
- Symptôme : erreurs lors de l'emprunt d'identité d'un compte de service lors de l'exécution de Terraform.
- Résolution : Assurez-vous que l'identité exécutant Terraform dispose de l'autorisation
roles/iam.serviceAccountTokenCreatorsur le compte de service de l'exécuteur Terraform.
Échec de la connexion SSH IAP (403 Forbidden / délai d'expiration)
- Symptôme :
gcloud compute sshne parvient pas à établir un tunnel IAP. - Solution :
- Vérifiez que l'API Cloud Identity-Aware Proxy (
iap.googleapis.com) est activée. - Assurez-vous que votre identité utilisateur dispose des rôles
roles/iap.tunnelResourceAccessoretroles/compute.viewer. - Vérifiez que la règle de pare-feu
allow-iap-ssh-*existe et autorise le trafic entrant depuis35.235.240.0/20sur le port TCP 22.
- Vérifiez que l'API Cloud Identity-Aware Proxy (
Avertissement de suppression de sous-réseau lors de la réapplication (option create_subnet)
- Symptôme : l'exécution de
terraform applyaprès la définition deenable_internet = falsetente de détruire le sous-réseau. - Résolution : conservez
create_subnet = truesi Terraform a créé le sous-réseau. En remplaçantcreate_subnetparfalse, vous demandez à Terraform d'arrêter de gérer la ressource et de planifier sa suppression.
Étapes suivantes
- Si vous avez préparé les nœuds et déployé un programme d'installation VCF pour le déploiement du domaine de gestion :
- Configurez la connexion au dépôt régional hors connexion dans le programme d'installation VCF pour télécharger les bundles logiciels requis :
- Protocole :
HTTPS - FQDN (n'utilisez pas d'adresse IP) :
offline-depot.REGION.selfmanagedvmwareengine.goog(remplacezREGIONpar la région Google Cloud où résident vos nœuds Bare Metal) - Port :
443 - Nom d'utilisateur :
vcf-depot-user - Mot de passe :
Google1!
- Protocole :
- Déployez le domaine de gestion :
- Si vous avez provisionné vos ressources Google Cloud à l'aide des modules Terraform de bout en bout (Déployer des nœuds et VCF à l'aide de Terraform et du kit d'outils), convertissez la sortie Terraform
management_domain_deployment_input_configau format JSON à l'aide du script d'assistance (scripts/export_deployment_config.py), remplacez tous les champs marqués commeuser_should_inputpar vos valeurs cibles, puis fournissez le fichier JSON au programme d'installation de VCF. - Si vous avez provisionné vos ressources Google Cloud sans utiliser les modules Terraform de bout en bout, fournissez manuellement les entrées de configuration du domaine de gestion dans le programme d'installation VCF.
- Pour savoir comment exécuter le workflow de mise en service du programme d'installation VCF, consultez Déployer un nouveau parc VCF ou une nouvelle instance VCF dans la documentation Broadcom.
- Si vous avez provisionné vos ressources Google Cloud à l'aide des modules Terraform de bout en bout (Déployer des nœuds et VCF à l'aide de Terraform et du kit d'outils), convertissez la sortie Terraform
- Configurez la connexion au dépôt régional hors connexion dans le programme d'installation VCF pour télécharger les bundles logiciels requis :
- Si vous avez préparé les nœuds pour les ajouter à un cluster existant : ajoutez les nœuds préparés à votre cluster VMware VCF 9.x à l'aide de l'UI ou des API VMware.
- Découvrez comment ajouter et supprimer des nœuds dans Gérer la capacité des nœuds ou Gérer la capacité des nœuds à l'aide de Terraform.