도구 키트를 사용하여 노드 준비 및 VCF 배포
이 페이지에서는 Google Cloud 의 VMware 솔루션 도구 키트를 사용하여 베어메탈 ESXi 노드를 준비하고, vSwitch 네트워킹 및 vSAN 데이터 스토어를 구성하고, VMware Cloud Foundation (VCF) 설치 프로그램 어플라이언스를 배포하는 방법을 설명합니다.
개요
VMware 솔루션 툴킷은 Google Cloud 프로젝트에 배포된 베어메탈 ESXi 인스턴스의 초기 설정을 자동화합니다. 점프박스 VM에서 실행하면 툴킷은 다음 작업을 수행합니다.
- 호스트 사용자 인증 정보 확인 및 비밀번호 재설정: 각 베어메탈 ESXi 인스턴스에 연결하고 초기 ESXi
root비밀번호를 Secret Manager에 저장된esxi-root-password보안 비밀로 재설정합니다. - 네트워크 구성:
vSwitch0를 구성하고 VCF 설치 프로그램 네트워크에 VLAN 태그가 지정된 포트 그룹을 만듭니다. - 스토리지 구성: 로컬 SSD를
vsanDatastore풀로 초기화합니다. - VCF 설치 프로그램 배포: 오프라인 저장소에서 VCF 설치 프로그램 Open Virtual Appliance (OVA)를 다운로드하고, 지정된 대상 ESXi 호스트에 어플라이언스를 배포하고, 네트워크 및 DNS 매개변수를 삽입하고, 설치 프로그램을 초기화합니다.
배포 경로 선택
다음 방법 중 하나를 사용하여 도구 키트를 실행할 수 있습니다.
- 경로 1: Terraform을 사용하여 점프박스 프로비저닝 (권장): Terraform을 사용하여 ESXi 호스트 VPC, VPC 서브넷, Cloud NAT 게이트웨이, IAP (Identity-Aware Proxy) SSH 방화벽 규칙 내에 전용 Compute Engine 점프박스 VM을 프로비저닝합니다.
- 경로 2: 기존 점프박스 VM 사용: 비공개 Google 액세스가 사용 설정된 서브넷의 ESXi 호스트 VPC 내에 있는 기존 Linux VM에서 직접 도구 키트를 실행합니다.
시작하기 전에
툴킷을 실행하기 전에 다음 기본 요건을 완료하세요.
허용 목록 VLAN 기반 레이어 2 서브넷 네트워킹
VMware 솔루션에서는 VLAN 기반 네트워킹을 지원하기 위해 Virtual Private Cloud (VPC) 네트워크의 서브넷에 Resolve Subnet Mask 속성이 Broadcast primary range only with learning으로 설정되어 있어야 합니다. Google Cloud 콘솔 지원 센터에서 다음 정보를 입력하여 지원 티켓을 엽니다.
- 제품: Google Cloud VMware Engine
- 우선순위: P2
- 카테고리: 네트워크 연결
- 비즈니스 영향: 일반적인 기술 관련 질문
- 자세한 내용 제공:
Allowlist L2 network connectivity for my project, 프로젝트 ID, 프로젝트 번호, 배포의 대상 리전 및 영역
VLAN 기반 네트워킹 지원에 대한 자세한 내용은 레이어 2 에뮬레이션: ARP 브로드캐스팅 및 커스텀 MAC 학습을 참조하세요.
필요한 API 사용 설정
결제가 사용 설정된 활성 Google Cloud 프로젝트가 있어야 합니다. 이는 ESXi 호스트가 있는 동일한 Google Cloud 프로젝트 또는 별도의 점프박스 프로젝트일 수 있습니다. 다음 API를 사용 설정합니다.
- Compute Engine API (
compute.googleapis.com) - 점프박스 및 ESXi 호스트 프로젝트용 - Identity and Access Management (IAM) API (
iam.googleapis.com) - 점프박스 프로젝트용 - Cloud Resource Manager API (
cloudresourcemanager.googleapis.com) - 점프박스 및 ESXi 호스트 프로젝트용 - Cloud Identity-Aware Proxy API (
iap.googleapis.com) - 점프박스 프로젝트용 - Secret Manager API (
secretmanager.googleapis.com) — ESXi 호스트 프로젝트용
gcloud CLI를 사용하여 API를 사용 설정하려면 다음 명령어를 실행합니다.
gcloud services enable \
compute.googleapis.com \
iam.googleapis.com \
cloudresourcemanager.googleapis.com \
iap.googleapis.com \
secretmanager.googleapis.com \
--project='PROJECT_ID'
PROJECT_ID를 대상 Google Cloud 프로젝트의 ID로 바꿉니다.
IAM 권한 구성
툴킷 워크플로는 다음 ID와 역할을 사용합니다.
- Terraform 호출자:
terraform apply를 실행하는 사용자 또는 CI/CD ID입니다. 실행자를 가장하는 경우 Terraform 실행자 서비스 계정에 서비스 계정 토큰 생성자(roles/iam.serviceAccountTokenCreator)가 필요합니다. - Terraform 실행기: Terraform 인프라를 프로비저닝하는 ID입니다.
- Compute 네트워크 관리자(
roles/compute.networkAdmin) - Compute 인스턴스 관리자 v1 (
roles/compute.instanceAdmin.v1) - Compute 보안 관리자(
roles/compute.securityAdmin) - 서비스 계정 사용자(
roles/iam.serviceAccountUser) - 대상 프로젝트의 프로젝트 IAM 관리자 (
roles/resourcemanager.projectIamAdmin)(Terraform에서 자동화된 IAM 관리를 사용하는 경우)
- Compute 네트워크 관리자(
- 점프박스 SSH 사용자: IAP를 사용하여 점프박스 VM에 연결하는 ID입니다.
- IAP 터널 리소스 접근자 (
roles/iap.tunnelResourceAccessor) - Compute 뷰어 (
roles/compute.viewer)
- IAP 터널 리소스 접근자 (
- Jumpbox 스크립트 실행자: Jumpbox에서 Python 도구 키트 스크립트를 실행하는 사용자 또는 서비스 계정입니다.
- Secret Manager 보안 비밀 접근자(
roles/secretmanager.secretAccessor) - Compute 관리자(
roles/compute.admin) - 프로젝트 IAM 관리자(
roles/resourcemanager.projectIamAdmin)
- Secret Manager 보안 비밀 접근자(
- VMware Engine 네트워크 드리프트 서비스 에이전트 (P4SA)(
service-PROJECT_NUMBER@gcp-sa-network-drift.):- Compute 네트워크 관리자(
roles/compute.networkAdmin)
- Compute 네트워크 관리자(
Secret Manager에 사용자 인증 정보 저장
툴킷은 런타임 시 Secret Manager에서 비밀번호를 검색하고 esxi-root-password 보안 비밀을 사용하여 각 베어메탈 ESXi 인스턴스에서 초기 root 비밀번호를 재설정합니다. ESXi root 비밀번호, VCF root 비밀번호, VCF 로컬 사용자 (admin) 비밀번호에 대해 Google Cloud 프로젝트에 보안 비밀을 만듭니다.
# 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'
명령어를 실행하기 전에 다음을 바꿉니다.
PROJECT_ID: 대상Google Cloud 프로젝트의 ID입니다.YOUR_ESXI_ROOT_PASSWORD: 베어메탈 ESXi 호스트에 설정할 새root비밀번호로, 초기 인스턴스 비밀번호를 대체합니다.YOUR_VCF_ROOT_PASSWORD: VCF 설치 프로그램 어플라이언스의root비밀번호입니다.YOUR_VCF_ADMIN_PASSWORD: VCF 설치 프로그램 어플라이언스의 로컬 관리자 사용자 비밀번호입니다.
Terraform을 사용하여 점프박스 프로비저닝
ESXi 호스트에 대한 네트워크 연결이 있는 기존 점프박스가 없는 경우 제공된 Terraform 모듈을 사용하여 점프박스 VM을 배포합니다.
툴킷 저장소 클론
툴킷 저장소를 로컬 워크스테이션에 클론합니다.
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
Terraform 변수 구성
infrastructure 디렉터리로 이동하여 terraform.tfvars 파일을 만듭니다.
cd infrastructure
cp terraform.tfvars.example terraform.tfvars
프로젝트 매개변수로 terraform.tfvars 파일을 업데이트합니다.
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"
다음 표에서는 주요 Terraform 입력 변수를 설명합니다.
| 변수 | 요구사항 | 기본값 | 설명 |
|---|---|---|---|
project_id
|
필수 | 없음 | Terraform이 인프라를 배포하는Google Cloud 프로젝트 ID입니다. |
region
|
필수 | 없음 | 대상 Google Cloud리전 (예: us-central1) |
zone
|
선택사항 | ${region}-a
|
목표 구간 지연 시간을 최소화하려면 이 변수를 베어메탈 ESXi 호스트의 영역과 일치하도록 설정합니다. |
vpc_name
|
조건부 | ""
|
ESXi 노드를 호스팅하는 VPC 네트워크의 이름입니다. create_subnet 변수가 true로 설정된 경우 필수입니다. |
create_subnet
|
선택사항 | true
|
새 서브넷을 만들려면 true로 설정하고 기존 서브넷을 사용하려면 false로 설정합니다. |
subnet_name
|
선택사항 | "smve-toolkit-subnet"
|
점프박스 VM의 서브네트워크 이름입니다. create_subnet 변수가 false로 설정된 경우 서브넷이 vpc_name 네트워크에 있어야 합니다. |
subnet_cidr
|
조건부 | ""
|
기본 IPv4 CIDR 범위 (최소 /29)입니다. create_subnet 변수가 true로 설정된 경우 필요합니다. |
enable_internet
|
선택사항 | true
|
인터넷 이그레스에 대한 Cloud Router, Cloud NAT, 기본 경로 생성을 제어합니다.
NAT 게이트웨이, 라우터, 경로를 해제하려면 설정 후 false로 설정합니다. |
jumpbox_name
|
선택사항 | "smve-toolkit-jumpbox"
|
Compute Engine 점프박스 VM의 이름입니다. |
machine_type
|
선택사항 | "e2-micro"
|
점프박스 VM 인스턴스의 머신 유형입니다. |
boot_disk_size
|
선택사항 | 30
|
점프박스 VM 인스턴스의 부팅 디스크 크기(GB)(최소 10GB)입니다. |
boot_disk_type
|
선택사항 | "pd-balanced"
|
점프박스 부팅 디스크(pd-balanced, pd-standard, pd-ssd, pd-extreme)에 대한 영구 디스크 유형입니다. |
boot_disk_image
|
선택사항 | "debian-cloud/debian-12"
|
OS 부팅 디스크 이미지 계열 또는 특정 이미지 self_link입니다. |
jumpbox_internal_ip
|
선택사항 | ""
|
고정 내부 IPv4 주소 (예: "10.10.0.5"), 예약된 IP 이름 또는 URI입니다. 기본값은 동적 임시 IP 주소입니다. |
service_account_email
|
선택사항 | ""
|
점프박스 VM에 연결할 커스텀 서비스 계정 이메일입니다. 기본값은 Compute Engine 기본 서비스 계정입니다. |
점프박스 인프라 배포
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
TERRAFORM_RUNNER_SA을 Terraform 실행기 서비스 계정의 이메일 주소로 바꿉니다.
IAP를 사용하여 점프박스에 연결
IAP TCP 전달을 사용하여 점프박스 VM에 연결합니다 (공개 IP 주소 필요 없음).
gcloud compute ssh smve-toolkit-jumpbox \
--project='PROJECT_ID' \
--zone='ZONE' \
--tunnel-through-iap
명령어를 실행하기 전에 다음을 바꿉니다.
PROJECT_ID: 점프박스 VM을 호스팅하는 Google Cloud 프로젝트의 ID입니다.ZONE: 점프박스 VM이 배포된 Google Cloud 영역입니다.
기존 점프박스 VM 사용
기존 점프박스 VM을 가져오는 경우 베어메탈 ESXi 노드를 호스팅하는 동일한 VPC 네트워크 내에 있는 Linux Compute Engine VM이어야 합니다. 이 VPC 배치 요구사항은 VCF 설치 프로그램 OVA를 호스팅하는 오프라인 저장소 Private Service Connect (PSC) 엔드포인트에 대한 네트워크 연결을 보장하는 데 필수적입니다.
툴킷을 실행하기 전에 기존 점프박스 VM이 다음 요구사항을 충족하는지 확인합니다.
- VPC 배치: ESXi 노드를 호스팅하는 VPC 네트워크 내에 VM을 배포해야 합니다.
- Google Cloud API 액세스: 점프박스 VM을 호스팅하는 서브네트워크에 비공개 Google 액세스 (
private_ip_google_access = true) 또는secretmanager.googleapis.com,compute.googleapis.com,iam.googleapis.com에 도달하기 위한 아웃바운드 인터넷 액세스가 사용 설정되어 있어야 합니다. - 패키지 설치 이그레스: Python 종속 항목을 설치하기 위한 아웃바운드 HTTP/HTTPS 액세스 (Cloud NAT, 회사 프록시 또는 직접 이그레스 사용)
- API 사용 설정 및 IAM 권한: 스크립트를 실행하는 ID에는 Google Cloud 프로젝트에 대한
roles/secretmanager.secretAccessor,roles/compute.admin,roles/resourcemanager.projectIamAdmin역할이 있어야 합니다. - SSH 연결: 점프박스는 IAP IP 범위 (
35.235.240.0/20) 또는 승인된 공개 IP 범위에서 TCP 포트 22의 SSH 인그레스를 허용해야 하며 연결 ID에 관련 역할(roles/iap.tunnelResourceAccessor및roles/compute.viewer)이 있어야 합니다.
점프박스에서 도구 키트 설정
점프박스 터미널에서 종속 항목을 설치하고 툴킷 스크립트를 다운로드합니다.
시스템 패키지 설치
Python 3, pip, venv, Git을 설치합니다.
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv git
툴킷 스크립트 가져오기
로컬 워크스테이션에서 저장소를 클론하거나 스크립트를 복사합니다.
옵션 A (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옵션 B(
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
Python 가상 환경 만들기 및 활성화
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
툴킷 스크립트 구성 파일 구성
점프박스 VM에서 config.json 구성 파일을 만들어 대상 ESXi 인스턴스 및 VCF 배포 설정을 지정합니다.
구성 매개변수
| 매개변수 | 필수 | 데이터 유형 | 설명 |
|---|---|---|---|
project
|
예 | string
|
베어메탈 ESXi 인스턴스가 있는 대상 Google Cloud 프로젝트 ID입니다. |
zone |
예 | string |
ESXi 노드가 있는 대상 Google Cloud 영역입니다. |
gce_nodes
|
예 | list(string) 또는 object
|
베어메탈 ESXi 인스턴스 이름의 명시적 목록 (예: ["vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2"]) 또는 prefix (예: {"prefix": "vcf-mgmt-sample"}) 또는 subnet ({"subnet":
"vcf-mgmt-subnet"})로 인스턴스를 검색하는 객체입니다. |
esxi_root_password_secret
|
예 | string
|
ESXi 루트 비밀번호가 포함된 Secret Manager 보안 비밀 이름 또는 리소스 경로입니다. |
vcf_deployment_config
|
선택사항 | object
|
VCF 설치 프로그램 배포 및 초기화를 위한 구성 객체입니다. 준비 중인 노드에 VCF 설치 프로그램을 배포할 필요가 없으면 이 객체를 생략합니다. |
└─ target_gce_node
|
조건부 | string
|
초기 배포 워크로드를 호스팅하는 대상 베어메탈 노드입니다.
vcf_deployment_config 객체가 정의된 경우 필수입니다. |
└─ vcf_appliance_root_password_secret
|
조건부 | string
|
VCF 어플라이언스 루트 비밀번호가 포함된 Secret Manager 보안 비밀 이름입니다. |
└─
vcf_appliance_local_user_password_secret |
조건부 | string
|
VCF 어플라이언스 로컬 사용자 (관리자) 비밀번호가 포함된 Secret Manager 보안 비밀 이름입니다. |
└─ vcf_installer_ip_source
|
조건부 | string 또는
object
|
VCF 설치 프로그램 (SDDC Manager)의 IP 주소 소스입니다. {"reserved_address": "ADDRESS_NAME"}, {"forwarding_rule":
"RULE_NAME"} 또는 직접 리소스 URI 문자열 (예: projects/PROJECT_ID/regions/REGION/forwardingRules/RULE_NAME)을 지정합니다. |
└─ vcf_installer_fqdn
|
조건부 | string
|
VCF 설치 프로그램 (SDDC Manager)의 정규화된 도메인 이름 (FQDN)입니다. |
└─ offline_depot_subnet_cidr
|
조건부 | string
|
전용 오프라인 저장소 서브넷의 기본 IPv4 CIDR 범위입니다(예: /29). VPC의 기존 서브넷과 겹치거나 재사용해서는 안 됩니다. |
└─ dns_server
|
선택사항 | string
|
DNS 서버 IP 주소 (예: 서브넷 또는 커스텀 DNS 서버의 예약된 DNS IP) 생략하면 기본적으로Google Cloud 메타데이터 서버 (169.254.169.254)로 설정됩니다.
Cloud DNS를 사용하는 경우 레이어 2가 아닌 서브넷의 IP 주소를 지정합니다. |
샘플 구성
다음 탭은 다양한 인스턴스 타겟팅 접근 방식 및 IP 할당 전략에 대한 샘플 config.json 구성 (python/examples/ 디렉터리에서 사용 가능한 템플릿 기반)을 보여줍니다.
명시적 노드 목록
이 구성 (python/examples/config_explicit_nodes.json)을 사용하여 특정 ESXi 인스턴스 이름을 타겟팅합니다.
{
// 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"
}
}
노드 이름 프리픽스 필터
이 구성 (python/examples/config_prefix_filter.json)을 사용하여 이름 프리픽스와 일치하는 ESXi 인스턴스를 동적으로 검색하고 전달 규칙을 사용합니다.
{
// 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"
}
}
서브넷 검색 필터
이 구성 (python/examples/config_subnet_filter.json)을 사용하여 특정 서브넷에 연결된 ESXi 인스턴스를 동적으로 검색하고 IP 소스의 전체 리소스 URI를 제공합니다.
{
// 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"
}
}
노드 준비만 (VCF 설치 프로그램 없음)
준비 중인 노드에 VCF 설치 프로그램 어플라이언스를 배포할 필요가 없는 경우 (예: 2일 차 노드 추가 또는 워크로드 데이터 클러스터 생성을 위해 노드를 준비하는 경우) config.json 파일에서 vcf_deployment_config 객체를 생략합니다.
{
"project": "PROJECT_ID",
"zone": "ZONE",
"gce_nodes": {
"subnet": "SUBNET_NAME"
},
"esxi_root_password_secret": "esxi-root-password"
}
config.json 파일에서 다음을 바꿉니다 (Python 스크립트를 실행하기 전에 인라인 주석 삭제).
PROJECT_ID: 베어메탈 ESXi 인스턴스가 있는 Google Cloud 프로젝트의 ID입니다.ZONE: 베어메탈 ESXi 인스턴스가 있는 Google Cloud 영역 (예:us-east4-c)SUBNET_NAME: ESXi 인스턴스에 연결된 VPC 서브넷의 이름입니다 (예:vcf-mgmt-subnet).
툴킷 스크립트 실행
점프박스 터미널에서 애플리케이션 기본 사용자 인증 정보를 사용하여 Google Cloud 에 인증합니다.
gcloud auth application-default login --no-browser
가상 환경 (source venv/bin/activate)이 활성화되고 config.json가 구성된 상태에서 도구 키트를 실행합니다.
python3 -m vcf_deployer.main --config config.json
실행 워크플로
스크립트는 자동 검증 검사를 실행하고 다음 설정 단계를 실행합니다.
- 사전 검증: 대상 인스턴스가 지원되는 ESXi 이미지를 실행하는지 확인하고, Secret Manager 액세스를 검증하고, IP CIDR 정렬을 확인하고, SSL 인증서 지문을 계산합니다.
- 사용자 인증 정보 구성 및 비밀번호 재설정: 각 호스트에 연결하고 초기 ESXi
root비밀번호를 Secret Manager에 저장된esxi-root-password보안 비밀로 재설정합니다. - vSwitch 및 포트 그룹 만들기:
vSwitch0를 구성하고 VLAN 태그가 지정된 포트 그룹(vlan-VLAN_ID-RANDOM_SUFFIX)을 만듭니다. - vSAN 초기화: 로컬 NVMe SSD를
vsanDatastore로 포맷합니다. - VCF 설치 프로그램 배포: VCF OVA를
target_gce_node에 배포하고 네트워크 구성을 삽입하고 어플라이언스를 시작합니다.
실행이 완료되면 가상 환경을 비활성화합니다.
deactivate
배포 후 작업
툴킷을 실행하고 VCF 설치 프로그램 어플라이언스를 배포한 후 다음 배포 후 구성을 수행합니다.
점프박스에서 인터넷 이그레스 사용 중지 (선택사항)
Python 종속 항목이 설치되면 Cloud NAT를 해제하여 엄격한 이그레스 보안을 적용할 수 있습니다. 워크스테이션 terraform.tfvars에서 다음을 실행합니다.
enable_internet = false
Terraform을 다시 적용합니다.
terraform apply
계속하기 전에 알려진 문제를 검토하세요.
VCF 배포를 시작하기 전에 알려진 문제 페이지에서 문서화된 모든 문제를 검토합니다. 이러한 문제를 간과하면 배포 실패가 발생할 수 있습니다.
문제 해결
이 섹션에서는 툴킷을 구성하거나 실행할 때 발생하는 일반적인 문제를 진단하고 해결하는 방법을 설명합니다.
점프박스에서 도구 모음 실행 로그 검사
점프박스에서 도구 키트를 실행하면 Python 스크립트가 점프박스 홈 디렉터리의 ~/logs/ 디렉터리에 자세한 실행 로그를 작성합니다. 각 로그 파일의 이름은 vcf_deployer_TIMESTAMP.log입니다. 노드 준비 또는 VCF 설치 프로그램 배포 단계가 실패하면 ~/logs/에서 가장 최근의 vcf_deployer_*.log 파일을 검사하여 실패를 진단합니다.
취약한 비밀번호로 인한 VCF 설치 프로그램 배포 실패
- 증상: VCF 설치 프로그램 배포 및 초기화 중에 Python 도구 키트 스크립트가 실패하거나 예기치 않게 작동합니다.
- 해결 방법: Secret Manager에서 VCF 사용자에 대해 취약한 비밀번호를 입력하지 마세요. 취약한 비밀번호로 인해 VCF 설치 프로그램 배포를 위한 Python 스크립트가 실패할 수 있습니다. 모든 비밀번호가 Broadcom 비밀번호 복잡성 가이드라인을 준수하는지 확인합니다.
권한 거부됨 (roles/iam.serviceAccountTokenCreator)
- 증상: Terraform을 실행하는 동안 서비스 계정 가장 중에 오류가 발생합니다.
- 해결 방법: Terraform을 실행하는 ID에 Terraform 실행기 서비스 계정에 대한
roles/iam.serviceAccountTokenCreator이 부여되었는지 확인합니다.
IAP SSH 연결 실패 (403 금지됨 / 시간 초과)
- 증상:
gcloud compute ssh에서 IAP 터널을 설정할 수 없습니다. - 해결 방법:
- Cloud Identity-Aware Proxy API (
iap.googleapis.com)가 사용 설정되어 있는지 확인합니다. - 사용자 ID에
roles/iap.tunnelResourceAccessor및roles/compute.viewer가 있는지 확인합니다. - 방화벽 규칙
allow-iap-ssh-*가 있고 TCP 포트 22에서35.235.240.0/20의 인그레스를 허용하는지 확인합니다.
- Cloud Identity-Aware Proxy API (
다시 적용 시 서브넷 삭제 경고 (create_subnet 플래그)
- 증상:
enable_internet = false를 설정한 후terraform apply를 실행하면 서브넷을 삭제하려고 시도합니다. - 해결 방법: Terraform에서 서브넷을 만든 경우
create_subnet = true를 유지합니다.create_subnet를false로 변경하면 Terraform이 리소스 관리를 중지하고 삭제를 예약합니다.
다음 단계
- 관리 도메인 배포를 위해 노드를 준비하고 VCF 설치 프로그램을 배포한 경우:
- VCF 설치 프로그램에서 리전 오프라인 저장소에 대한 연결을 구성하여 필요한 소프트웨어 번들을 다운로드합니다.
- 프로토콜:
HTTPS - FQDN (IP 주소 사용 안함):
offline-depot.REGION.selfmanagedvmwareengine.goog(REGION를 베어메탈 노드가 있는 Google Cloud리전으로 바꿈) - 포트:
443 - 사용자 이름:
vcf-depot-user - 비밀번호:
Google1!
- 프로토콜:
- 관리 도메인을 배포합니다.
- 엔드 투 엔드 Terraform 모듈(Terraform 및 도구 키트를 사용하여 노드 및 VCF 배포)을 사용하여 Google Cloud 리소스를 프로비저닝한 경우 도우미 스크립트(
scripts/export_deployment_config.py)를 사용하여management_domain_deployment_input_configTerraform 출력을 JSON으로 변환하고user_should_input로 표시된 모든 필드를 대상 값으로 바꾼 후 JSON 파일을 VCF 설치 프로그램에 제공합니다. - 엔드 투 엔드 Terraform 모듈을 사용하지 않고 Google Cloud 리소스를 프로비저닝한 경우 VCF 설치 프로그램에서 관리 도메인 구성 입력을 수동으로 제공합니다.
- VCF 설치 프로그램 브링업 워크플로를 완료하는 방법은 Broadcom 문서의 새 VCF Fleet 또는 새 VCF 인스턴스 배포를 참조하세요.
- 엔드 투 엔드 Terraform 모듈(Terraform 및 도구 키트를 사용하여 노드 및 VCF 배포)을 사용하여 Google Cloud 리소스를 프로비저닝한 경우 도우미 스크립트(
- VCF 설치 프로그램에서 리전 오프라인 저장소에 대한 연결을 구성하여 필요한 소프트웨어 번들을 다운로드합니다.
- 기존 클러스터에 추가할 노드를 준비한 경우: VMware UI 또는 API를 사용하여 준비된 노드를 VMware VCF 9.x 클러스터에 추가합니다.
- 노드 용량 관리 또는 Terraform을 사용하여 노드 용량 관리에서 노드를 추가하고 삭제하는 방법을 알아보세요.