Preparar nós e implantar o VCF usando o kit de ferramentas

Nesta página, descrevemos como usar o kit de ferramentas da solução VMware no Google Cloud para preparar nós ESXi bare metal, configurar redes vSwitch e repositórios de dados vSAN e implantar o dispositivo instalador do VMware Cloud Foundation (VCF).

Visão geral

O kit de ferramentas da solução VMware automatiza a configuração inicial de instâncias do ESXi bare metal implantadas no projeto do Google Cloud . Quando executado em uma VM jumpbox, o kit de ferramentas realiza as seguintes ações:

  1. Verificação de credenciais do host e redefinição de senha: conecta-se a cada instância do ESXi bare metal e redefine a senha inicial do ESXi root para o secret esxi-root-password armazenado no Secret Manager.
  2. Configuração de rede: configura o vSwitch0 e cria grupos de portas com tags de VLAN para a rede do instalador do VCF.
  3. Configuração de armazenamento: inicializa SSDs locais em um pool vsanDatastore.
  4. Implantação do instalador do VCF: faz o download do Open Virtual Appliance (OVA) do instalador do VCF no repositório off-line, implanta o dispositivo em um host ESXi de destino designado, injeta parâmetros de rede e DNS e inicializa o instalador.

Escolher um caminho de implantação

É possível executar o kit de ferramentas usando uma das seguintes abordagens:

  • Caminho um: provisionar um jumpbox usando o Terraform (recomendado): use o Terraform para provisionar uma VM de jumpbox dedicada do Compute Engine dentro da VPC do host ESXi, da sub-rede VPC, do gateway do Cloud NAT e das regras de firewall SSH do Identity-Aware Proxy (IAP).
  • Caminho dois: use uma VM jumpbox: execute o kit de ferramentas diretamente de uma VM do Linux localizada dentro da VPC do host ESXi em uma sub-rede com o Acesso privado do Google ativado.

Antes de começar

Antes de executar o kit de ferramentas, conclua os seguintes pré-requisitos:

Rede de sub-rede da camada 2 baseada em VLAN na lista de permissão

A solução VMware exige que as sub-redes da sua rede de nuvem privada virtual (VPC) tenham a propriedade Resolver máscara de sub-rede definida como Transmitir intervalo principal apenas com aprendizado para oferecer suporte à rede baseada em VLAN. Abra um tíquete de suporte na Central de suporte do console doGoogle Cloud com as seguintes informações:

  • Produto: Google Cloud VMware Engine
  • Prioridade: P2
  • Categoria: conectividade de rede
  • Impacto nos negócios: pergunta técnica geral
  • Forneça mais detalhes: Allowlist L2 network connectivity for my project, além do ID do projeto, do número do projeto e da região e zona de destino da implantação.

Para mais informações sobre o suporte a redes baseadas em VLAN, consulte Emulação de camada 2: transmissão ARP e aprendizado de MAC personalizado.

Ativar APIs obrigatórias

Você precisa ter um projeto ativo do Google Cloud com o faturamento ativado. Pode ser o mesmo projeto do Google Cloud em que os hosts do ESXi estão ou um projeto de jumpbox separado. Ative as APIs a seguir:

  • API Compute Engine (compute.googleapis.com): para projetos de jumpbox e host do ESXi
  • API Identity and Access Management (IAM) (iam.googleapis.com): para o projeto jumpbox
  • API Cloud Resource Manager (cloudresourcemanager.googleapis.com): para projetos de jumpbox e host do ESXi
  • API Cloud Identity-Aware Proxy (iap.googleapis.com): para o projeto jumpbox
  • API Secret Manager (secretmanager.googleapis.com): para o projeto de host do ESXi

Para ativar as APIs usando a CLI gcloud, execute o seguinte comando:

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

Substitua PROJECT_ID pelo ID do projeto de destino do Google Cloud .

Configurar as permissões do IAM

O fluxo de trabalho do kit de ferramentas usa as seguintes identidades e papéis:

  • Invocador do Terraform: o usuário ou a identidade de CI/CD que inicia o terraform apply. Requer o Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) na conta de serviço do Terraform Runner se estiver representando o executor.
  • Terraform Runner: a identidade que provisiona a infraestrutura do Terraform:
    • Administrador de rede do Compute (roles/compute.networkAdmin)
    • Administrador da instância do Compute v1 (roles/compute.instanceAdmin.v1)
    • Administrador de segurança do Compute (roles/compute.securityAdmin)
    • Usuário da conta de serviço (roles/iam.serviceAccountUser)
    • Administrador de IAM do projeto (roles/resourcemanager.projectIamAdmin) no projeto de destino (se estiver usando o gerenciamento automatizado do IAM com o Terraform)
  • Usuário SSH do jumpbox: a identidade que se conecta à VM do jumpbox usando o IAP:
    • Acessador de recursos do túnel do IAP (roles/iap.tunnelResourceAccessor)
    • Leitor do Compute (roles/compute.viewer)
  • Executor de script do Jumpbox: o usuário ou a conta de serviço que executa o script do kit de ferramentas do Python no jumpbox:
    • Acessador de secrets do Secret Manager (roles/secretmanager.secretAccessor)
    • Administrador do Compute (roles/compute.admin)
    • Administrador de IAM do projeto (roles/resourcemanager.projectIamAdmin)
  • Agente de serviço de desvio de rede do VMware Engine (P4SA) (service-PROJECT_NUMBER@gcp-sa-network-drift.):
    • Administrador de rede do Compute (roles/compute.networkAdmin)

Armazenar credenciais no Secret Manager

O kit de ferramentas recupera senhas no ambiente de execução do Secret Manager e usa o secret esxi-root-password para redefinir a senha inicial de root em cada instância de ESXi bare-metal. Crie secrets no projeto do Google Cloud para a senha do ESXi root, a senha do VCF root e a senha do usuário local do 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'

Antes de executar os comandos, substitua o seguinte:

  • PROJECT_ID: o ID do projeto de destino doGoogle Cloud .
  • YOUR_ESXI_ROOT_PASSWORD: a nova senha do root a ser definida nos hosts ESXi bare metal, substituindo a senha inicial da instância.
  • YOUR_VCF_ROOT_PASSWORD: a senha root do dispositivo instalador do VCF.
  • YOUR_VCF_ADMIN_PASSWORD: a senha do usuário administrador local do dispositivo instalador do VCF.

Provisionar um jumpbox usando o Terraform

Se você não tiver um jumpbox com conectividade de rede com os hosts ESXi, use os módulos do Terraform fornecidos para implantar uma VM de jumpbox.

Clonar o repositório do kit de ferramentas

Clone o repositório do kit de ferramentas na estação de trabalho 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

Configurar variáveis do Terraform

Acesse o diretório infrastructure e crie o arquivo terraform.tfvars:

cd infrastructure
cp terraform.tfvars.example terraform.tfvars

Atualize o arquivo terraform.tfvars com os parâmetros do projeto:

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"

A tabela a seguir descreve as principais variáveis de entrada do Terraform:

Variável Requisito Padrão Descrição
project_id Obrigatório Nenhum ID do projeto doGoogle Cloud em que o Terraform implanta a infraestrutura.
region Obrigatório Nenhum Região de destino Google Cloud(por exemplo, us-central1).
zone Opcional ${region}-a Zona de destino. Defina essa variável para corresponder à zona dos hosts ESXi bare metal para minimizar a latência.
vpc_name Condicional "" Nome da rede VPC que hospeda os nós do ESXi. Obrigatório se a variável create_subnet estiver definida como true.
create_subnet Opcional true Defina como true para criar uma nova sub-rede ou false para usar uma sub-rede atual.
subnet_name Opcional "smve-toolkit-subnet" Nome da sub-rede da VM do jumpbox. Se a variável create_subnet estiver definida como false, a sub-rede precisará existir na rede vpc_name.
subnet_cidr Condicional "" Intervalo CIDR IPv4 principal (mínimo /29). Obrigatório se a variável create_subnet estiver definida como true.
enable_internet Opcional true Controla o Cloud Router, o Cloud NAT e a criação de rotas padrão para saída de dados para a internet. Defina como false após a configuração para remover o gateway NAT, o roteador e a rota.
jumpbox_name Opcional "smve-toolkit-jumpbox" Nome da VM de jumpbox do Compute Engine.
machine_type Opcional "e2-micro" Tipo de máquina para a instância de VM do jumpbox.
boot_disk_size Opcional 30 Tamanho do disco de inicialização em GB para a instância de VM do jumpbox (mínimo de 10 GB).
boot_disk_type Opcional "pd-balanced" Tipo de disco permanente para o disco de inicialização do jumpbox (pd-balanced, pd-standard, pd-ssd, pd-extreme).
boot_disk_image Opcional "debian-cloud/debian-12" Família de imagens do disco de inicialização do SO ou imagem específica self_link.
jumpbox_internal_ip Opcional "" Endereço IPv4 interno estático (por exemplo, "10.10.0.5"), nome de IP reservado ou URI. O padrão é um endereço IP temporário dinâmico.
service_account_email Opcional "" E-mail da conta de serviço personalizada a ser anexado à VM do jumpbox. O padrão é a conta de serviço padrão do Compute Engine.

Implantar a infraestrutura do jumpbox

Inicialize e aplique a configuração do 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

Substitua TERRAFORM_RUNNER_SA pelo endereço de e-mail da conta de serviço do executor do Terraform.

Conectar-se ao jumpbox usando o IAP

Conecte-se à VM do jumpbox usando o encaminhamento de TCP do IAP (não é necessário um endereço IP público):

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

Antes de executar o comando, substitua o seguinte:

  • PROJECT_ID: o ID do projeto do Google Cloud que hospeda a VM do jumpbox.
  • ZONE: a Google Cloud zona em que a VM jumpbox está implantada.

Usar uma VM jumpbox atual

Se você usar uma VM jumpbox, ela precisará ser uma VM do Linux Compute Engine localizada na mesma rede VPC que hospeda os nós bare metal do ESXi. Esse requisito de posicionamento da VPC é obrigatório para garantir a conectividade de rede com o endpoint do Private Service Connect (PSC) do repositório off-line que hospeda o OVA do instalador do VCF.

Antes de executar o kit de ferramentas, verifique se a VM de jumpbox atual atende aos seguintes requisitos:

  1. Posicionamento da VPC: é preciso implantar a VM na rede VPC que hospeda os nós do ESXi.
  2. Google Cloud Acesso à API: a sub-rede que hospeda a VM do jumpbox precisa ter o Acesso privado do Google ativado (private_ip_google_access = true) ou acesso de saída à Internet para acessar secretmanager.googleapis.com, compute.googleapis.com e iam.googleapis.com.
  3. Saída de instalação de pacotes: acesso HTTP/HTTPS de saída (usando o Cloud NAT, um proxy corporativo ou saída direta) para instalar dependências do Python.
  4. Ativação da API e permissões do IAM: a identidade que executa o script precisa ter os papéis roles/secretmanager.secretAccessor, roles/compute.admin e roles/resourcemanager.projectIamAdmin no projeto do Google Cloud .
  5. Conectividade SSH: o jumpbox precisa permitir a entrada SSH na porta TCP 22 do intervalo de IP do IAP (35.235.240.0/20) ou de intervalos de IP públicos autorizados, e a identidade de conexão precisa ter os papéis aplicáveis (roles/iap.tunnelResourceAccessor e roles/compute.viewer).

Configurar o kit de ferramentas no jumpbox

No terminal do jumpbox, instale as dependências e faça o download do script do kit de ferramentas.

Instalar pacotes do sistema

Instale o Python 3, pip, venv e o Git:

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

Acessar os scripts do kit de ferramentas

Clone o repositório ou copie os scripts da estação de trabalho local:

  • Opção A (clonar usando o 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
    
  • Opção B (copiar da estação de trabalho local usando 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
    

Crie e ative um ambiente virtual Python

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

Configurar o arquivo de configuração do script do kit de ferramentas

Crie um arquivo de configuração config.json na VM do jumpbox para especificar as instâncias de destino do ESXi e as configurações de implantação do VCF.

Parâmetros de configuração

Parâmetro Obrigatório Tipo de dados Descrição
project Sim string ID do projeto de destino Google Cloud em que as instâncias bare metal do ESXi estão.
zone Sim string Zona de destino Google Cloud em que os nós do ESXi residem.
gce_nodes Sim list(string) ou object Lista explícita de nomes de instâncias bare metal do ESXi (por exemplo, ["vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2"]) ou um objeto que descobre instâncias por prefix (por exemplo, {"prefix": "vcf-mgmt-sample"}) ou subnet ({"subnet": "vcf-mgmt-subnet"}).
esxi_root_password_secret Sim string Nome do secret do Secret Manager ou caminho do recurso que contém a senha raiz do ESXi.
vcf_deployment_config Opcional object Objeto de configuração para implantação e inicialização do instalador do VCF. Omita esse objeto se você não precisar implantar o instalador do VCF em nenhum dos nós que estão sendo preparados.
└─ target_gce_node Condicional string Nó bare metal de destino que hospeda as cargas de trabalho de implantação inicial. Obrigatório se o objeto vcf_deployment_config estiver definido.
└─ vcf_appliance_root_password_secret Condicional string Nome do secret do Secret Manager que contém a senha raiz do dispositivo VCF.
└─ vcf_appliance_local_user_password_secret Condicional string Nome do secret do Secret Manager que contém a senha do usuário local (administrador) do dispositivo do VCF.
└─ vcf_installer_ip_source Condicional string ou object Origem do endereço IP para o instalador do VCF (SDDC Manager). Especifique {"reserved_address": "ADDRESS_NAME"}, {"forwarding_rule": "RULE_NAME"} ou uma string de URI de recurso direto (por exemplo, projects/PROJECT_ID/regions/REGION/forwardingRules/RULE_NAME).
└─ vcf_installer_fqdn Condicional string Nome de domínio totalmente qualificado (FQDN) do instalador do VCF (SDDC Manager).
└─ offline_depot_subnet_cidr Condicional string Intervalo CIDR IPv4 principal para a sub-rede dedicada do repositório off-line (por exemplo, /29). Não pode se sobrepor nem reutilizar sub-redes na VPC.
└─ dns_server Opcional string Endereço IP do servidor DNS (por exemplo, o IP de DNS reservado da sua sub-rede ou um servidor DNS personalizado). O padrão será o servidor de metadadosGoogle Cloud (169.254.169.254) se omitido. Especifique um endereço IP de uma sub-rede que não seja da camada 2 se você usar o Cloud DNS.

Configurações de amostra

As guias a seguir mostram exemplos de configurações de config.json (com base em modelos disponíveis no diretório python/examples/) para diferentes abordagens de segmentação de instâncias e estratégias de alocação de IP:

Lista de nós explícita

Use essa configuração (python/examples/config_explicit_nodes.json) para segmentar nomes de instâncias do ESXi específicos:

{
// 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 de prefixo do nome do nó

Use essa configuração (python/examples/config_prefix_filter.json) para descobrir dinamicamente instâncias do ESXi que correspondam a um prefixo de nome e use uma regra de encaminhamento:

{
// 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 de descoberta de sub-rede

Use essa configuração (python/examples/config_subnet_filter.json) para descobrir dinamicamente instâncias do ESXi anexadas a uma sub-rede específica e fornecer um URI de recurso completo para a origem do 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"
}
}

Somente preparação de nós (sem instalador do VCF)

Omita o objeto vcf_deployment_config no arquivo config.json se você não precisar implantar o dispositivo instalador do VCF em nenhum dos nós que estão sendo preparados (por exemplo, ao preparar nós para adição de nós no dia 2 ou criação de cluster de dados de carga de trabalho):

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

Substitua o seguinte no arquivo config.json (e remova todos os comentários inline antes de executar o script Python):

  • PROJECT_ID: o ID do projeto do Google Cloud em que as instâncias do ESXi bare metal estão.
  • ZONE: a zona do Google Cloud em que as instâncias do ESXi bare metal estão localizadas (por exemplo, us-east4-c).
  • SUBNET_NAME: o nome da sub-rede VPC anexada às instâncias do ESXi (por exemplo, vcf-mgmt-subnet).

Executar o script do kit de ferramentas

Autentique-se com o Google Cloud usando o Application Default Credentials no terminal do jumpbox:

gcloud auth application-default login --no-browser

Com o ambiente virtual ativo (source venv/bin/activate) e o config.json configurado, execute o kit de ferramentas:

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

Fluxo de trabalho de execução

O script executa verificações de validação automatizadas e as seguintes etapas de configuração:

  1. Validação pré-voo: confirma que as instâncias de destino executam imagens ESXi compatíveis, valida o acesso ao Secret Manager, verifica o alinhamento do CIDR de IP e calcula as impressões digitais do certificado SSL.
  2. Configuração de credenciais e redefinição de senha: conecta-se a cada host e redefine a senha inicial do ESXi root para o secret esxi-root-password armazenado no Secret Manager.
  3. Criação de vSwitch e grupo de portas: configura vSwitch0 e cria grupos de portas com tag de VLAN (vlan-VLAN_ID-RANDOM_SUFFIX).
  4. Inicialização do vSAN: formata SSDs NVMe locais em um vsanDatastore.
  5. Implantação do instalador do VCF: implanta o OVA do VCF no target_gce_node, injeta a configuração de rede e inicia o dispositivo.

Depois que a execução for concluída, desative o ambiente virtual:

deactivate

Tarefas pós-implantação

Depois de executar o kit de ferramentas e implantar o dispositivo do instalador do VCF, faça a seguinte configuração pós-implantação:

Desativar a saída de dados para a Internet no jumpbox (opcional)

Depois que as dependências do Python forem instaladas, será possível desativar o Cloud NAT para aplicar uma segurança de saída rigorosa. Na estação de trabalho terraform.tfvars:

enable_internet = false

Aplique o Terraform novamente:

terraform apply

Analisar os problemas conhecidos antes de continuar

Analise todos os problemas documentados na página Problemas conhecidos antes de iniciar a implantação do VCF. Ignorar esses problemas pode causar falhas na implantação.


Solução de problemas

Nesta seção, descrevemos como diagnosticar e resolver problemas comuns ao configurar ou executar o kit de ferramentas.

Inspecionar os registros de execução do kit de ferramentas no jumpbox

Quando você executa o kit de ferramentas no jumpbox, o script Python grava registros de execução detalhados no diretório ~/logs/ no diretório inicial do jumpbox. Cada arquivo de registro é chamado de vcf_deployer_TIMESTAMP.log. Se uma etapa de preparação de nó ou de implantação do instalador do VCF falhar, inspecione o arquivo vcf_deployer_*.log mais recente em ~/logs/ para diagnosticar a falha.

Falha na implantação do instalador do VCF devido a senhas fracas

  • Sintoma: o script do kit de ferramentas do Python falha ou se comporta de maneira inesperada durante a implantação e a inicialização do instalador do VCF.
  • Resolução: não insira senhas fracas para usuários do VCF no Secret Manager, porque elas podem causar falhas no script Python para a implantação do instalador do VCF. Verifique se todas as senhas seguem as diretrizes de complexidade de senha da Broadcom.

Permissão negada (roles/iam.serviceAccountTokenCreator)

  • Sintoma: erros durante a identidade temporária de conta de serviço ao executar o Terraform.
  • Resolução: verifique se a identidade que executa o Terraform tem roles/iam.serviceAccountTokenCreator concedido na conta de serviço do executor do Terraform.

Falha na conexão SSH do IAP (403 Proibido / tempo limite)

  • Sintoma: o gcloud compute ssh não consegue estabelecer um túnel do IAP.
  • Resolução:
    • Verifique se a API Cloud Identity-Aware Proxy (iap.googleapis.com) está ativada.
    • Verifique se a identidade do usuário tem roles/iap.tunnelResourceAccessor e roles/compute.viewer.
    • Verifique se a regra de firewall allow-iap-ssh-* existe e permite a entrada de 35.235.240.0/20 na porta TCP 22.

Aviso de exclusão de sub-rede ao reaplicar (flag create_subnet)

  • Sintoma: executar terraform apply depois de definir enable_internet = false tenta destruir a sub-rede.
  • Resolução: mantenha create_subnet = true se o Terraform tiver criado a sub-rede. Mudar create_subnet para false instrui o Terraform a parar de gerenciar o recurso, programando-o para exclusão.

A seguir

  • Se você preparou os nós e implantou um instalador do VCF para a implantação do domínio de gerenciamento:
    1. Configure a conexão com o repositório off-line regional no instalador do VCF para fazer o download dos pacotes de software necessários:
      • Protocolo: HTTPS
      • FQDN (não use um endereço IP): offline-depot.REGION.selfmanagedvmwareengine.goog (substitua REGION pela região do Google Cloud em que os nós bare metal estão)
      • Porta: 443
      • Nome de usuário: vcf-depot-user
      • Senha: Google1!
    2. Implante o domínio de gerenciamento:
      • Se você provisionou os recursos do Google Cloud usando os módulos do Terraform de ponta a ponta (Implantar nós e o VCF usando o Terraform e o kit de ferramentas), converta a saída do Terraform management_domain_deployment_input_config em JSON usando o script auxiliar (scripts/export_deployment_config.py), substitua todos os campos marcados como user_should_input pelos valores de destino e forneça o arquivo JSON ao instalador do VCF.
      • Se você provisionou os recursos do Google Cloud sem usar os módulos do Terraform de ponta a ponta, forneça as entradas de configuração do domínio de gerenciamento manualmente no instalador do VCF.
      • Para instruções sobre como concluir o fluxo de trabalho de ativação do instalador do VCF, consulte Implantar uma nova frota do VCF ou uma nova instância do VCF na documentação da Broadcom.
  • Se você preparou os nós para adicionar a um cluster atual: adicione os nós preparados ao cluster do VMware VCF 9.x usando a interface ou as APIs do VMware.
  • Saiba como adicionar e remover nós em Gerenciar a capacidade de nós ou Gerenciar a capacidade de nós usando o Terraform.