获取验证码
在 VMware Cloud Foundation(VCF)环境部署中,VCF Operations 9 的初始配置通常需要通过 Web 界面完成一系列手动操作,包括网络配置、节点设置、认证配置等,过程繁琐且易出错。幸运的是,借助 vRealize Operations 集群与分片管理(CASA)API,我们可以将这一过程自动化,大幅提升部署效率。本文将详细介绍如何使用 CASA API 结合 PowerShell 脚本,实现 VCF Operations 9 的自动初始配置,同时补充环境准备、脚本解析、手动补全步骤等关键细节,帮助运维人员快速落地实践。

作为博通 VMware Cloud Foundation 部门的杰出平台工程架构师,William Lam 早在 2014 年就计划探索 CASA API 的自动化应用,如今该 API 在 VCF Operations 9.0 中依然适用且文档更完善,为自动化部署提供了可靠支撑。
在开始自动化配置前,需确保满足以下环境与工具要求:
1.已部署 VCF Operations 9.0 OVA:需完成 OVA 模板导入、虚拟硬件配置、网络参数(IP 地址、子网掩码、网关)的基础设置,可参考 William Lam 此前的《VCF Operations 9.0 OVA 的自动部署》教程完成此步骤。
2.网络可达性:部署后的 VCF Operations 设备需与运行脚本的机器网络互通,确保 443 端口(HTTPS)开放,支持 API 请求传输。
3.权限准备:拥有 VCF Operations 设备的管理员账号(默认 admin),以及 vCenter Server 的相关操作权限(若涉及多节点集群部署)。
4.工具配置:
安装 PowerShell 5.1 及以上版本(Windows 系统)或 PowerShell Core(Linux/macOS 系统)。
启用 PowerShell 脚本执行权限(执行Set-ExecutionPolicy RemoteSigned命令)。
可选工具:Postman 或 curl(用于 API 调试)、文本编辑器(如 VS Code,用于修改脚本参数)。
5.环境信息收集:提前记录 VCF Operations 设备的 FQDN 或 IP 地址、管理员密码、NTP 服务器地址、DNS 服务器地址等关键配置项。
1. API 简介
CASA(Cluster and Slice Administration)API 是 VCF Operations 内置的 RESTful API 接口集,专为集群管理、节点配置、系统初始化等操作设计。与旧版本相比,VCF Operations 9.0 的 CASA API 文档更完善,包含详细的请求示例、参数说明及响应格式,可直接通过设备内置地址访问:
https://[VCF Operations FQDN或IP]/casa/api-guide.html
替换上述地址中的 FQDN 为实际部署的设备域名(如 vcf02.vcf.lab),即可查看完整的 API 参考文档,包括节点配置、认证管理、服务启停等核心端点。

2. 认证机制
CASA API 采用 Bearer Token 认证方式(遵循 RFC 6750 规范),所有 API 请求需在 HTTP 头部携带有效的认证令牌。认证流程如下:
通过管理员账号密码向/casa/api/auth/token端点发送 POST 请求,获取临时访问令牌。
在后续 API 请求的 Header 中添加 `Authorization: Bearer 身份验证。
令牌有效期通常为 1 小时,过期后需重新获取。
这种认证方式无需每次请求都携带账号密码,既提升安全性,又简化了脚本编写,是现代 API 的主流认证方案。
步骤 1:获取并配置 PowerShell 脚本
William Lam 提供的configure_vcf_operations.ps1脚本是自动化配置的核心,默认支持主节点与数据节点的组合部署,可按以下步骤配置:
1.下载脚本:通过 William Lam 的 GitHub 仓库(https://github.com/lamw/vmware-scripts)获取脚本文件,或直接创建新的 PowerShell 脚本文件,复制核心代码(下文附关键代码解析)。

2.修改环境参数:用文本编辑器打开脚本,找到以下参数并替换为实际环境信息:
# 基础配置
$vcfOpsHost = "vcf02.vcf.lab" # 替换为VCF Operations设备FQDN/IP
$adminUsername = "admin" # 管理员账号
$adminPassword = "VMware1!VMware1!" # 管理员密码
$ntpServers = @("10.0.0.1", "10.0.0.2") # NTP服务器地址
$dnsServers = @("10.0.0.3", "10.0.0.4") # DNS服务器地址
$timeZone = "Asia/Shanghai" # 时区(如America/New_York)
# 节点配置(默认主节点+数据节点组合)
$nodeType = "combined" # 节点类型:combined(组合节点)、master(主节点)、data(数据节点)扩展节点支持(可选):若需部署多节点集群(如主节点 + 副本节点 + 数据节点),可添加节点配置数组,示例如下:
$nodes = @(
@{Type = "master"; FQDN = "vcf-master.vcf.lab"; IP = "10.0.0.10"},
@{Type = "replica"; FQDN = "vcf-replica.vcf.lab"; IP = "10.0.0.11"},
@{Type = "data"; FQDN = "vcf-data.vcf.lab"; IP = "10.0.0.12"}
)步骤 2:脚本核心功能解析
该 PowerShell 脚本通过调用 CASA API 实现以下自动化操作,关键代码逻辑如下:
1.获取认证令牌:
$authPayload = @{
username = $adminUsername
password = $adminPassword
authSource = "local"
} | ConvertTo-Json
# 发送认证请求
$authResponse = Invoke-WebRequest -Uri "https://$vcfOpsHost/casa/api/auth/token" `
-Method Post -Body $authPayload -ContentType "application/json" `
-SkipCertificateCheck # 忽略自签名证书警告
$token = ($authResponse.Content | ConvertFrom-Json).token
# 构建请求头
$headers = @{
"Authorization" = "Bearer $token"
"Content-Type" = "application/json"
}2.配置 NTP 服务器:参考 CASA API 文档的/casa/api/v1/ntp端点,发送 POST 请求配置时间同步:
$ntpPayload = @{
servers = $ntpServers
authentication = "disabled"
} | ConvertTo-Json
Invoke-WebRequest -Uri "https://$vcfOpsHost/casa/api/v1/ntp" `
-Method Post -Body $ntpPayload -Headers $headers -SkipCertificateCheck3.配置 DNS 与网络参数:通过/casa/api/v1/network端点设置 DNS 服务器、域名等信息,确保设备网络正常。
4.初始化节点集群:根据节点类型发送集群配置请求,完成主节点激活与数据节点注册。
步骤 3:运行脚本并监控执行结果
1.启动 PowerShell 终端,导航至脚本所在目录。
2.执行脚本命令:
.\configure_vcf_operations.ps1
3.观察执行输出:脚本会逐步骤打印操作日志,若出现 "Success" 提示则表示对应配置完成;若报错,需根据错误信息排查(如网络不通、参数错误、权限不足等)。
4.脚本执行完成后,设备会自动重启相关服务,约 5-10 分钟后完成初始化。

步骤 4:手动补全 EULA 与 CEIP 配置
目前 CASA API 暂不支持自动化接受最终用户许可协议(EULA)和客户体验改进计划(CEIP),需通过 Web 界面手动完成:
1.打开浏览器,访问https://[VCF Operations FQDN或IP],输入管理员账号密码登录。
2.在弹出的初始配置向导中,勾选 "我接受许可协议"(EULA),选择是否参与 CEIP(建议根据企业政策选择)。
3.点击 "完成" 按钮,系统会自动应用配置并跳转到 VCF Operations 控制台首页。
步骤 5:验证配置有效性
登录 VCF Operations 控制台后,通过以下方式确认自动化配置是否生效:
1.导航至 "系统配置"→"网络",检查 DNS、NTP 服务器地址是否与脚本配置一致。
2.查看 "节点管理" 页面,确认所有节点状态为 "正常运行"(绿色)。
通过 API 调试工具发送请求,验证配置参数:
# 示例:查询NTP配置(curl命令)
curl -X GET -H "Authorization: Bearer $token" ` -k "https://$vcfOpsHost/casa/api/v1/ntp"
若返回的服务器地址与配置一致,则说明自动化配置成功。
1.支持多节点类型:修改脚本中的nodeType参数,或扩展$nodes数组,可适配主节点、副本节点、数据节点的独立部署场景,只需对应调整 API 请求中的nodeRole字段。
2.添加错误重试机制:在关键 API 调用处添加try-catch语句,实现失败自动重试,提升脚本健壮性:
$maxRetries = 3
$retryCount = 0
while ($retryCount -lt $maxRetries) {
try {
Invoke-WebRequest -Uri "https://$vcfOpsHost/casa/api/v1/ntp" `
-Method Post -Body $ntpPayload -Headers $headers -SkipCertificateCheck
break # 成功则退出循环
} catch {
$retryCount++
Write-Warning "配置NTP失败,第$retryCount次重试..."
Start-Sleep -Seconds 10
}
}3.导出配置日志:在脚本中添加日志输出功能,将执行结果保存至文件,便于后续审计与故障排查:
$logPath = "C:\vcf_operations_config.log" "[$(Get-Date)] 脚本开始执行" | Out-File -FilePath $logPath -Append # 每个操作后添加日志 "[$(Get-Date)] NTP配置完成" | Out-File -FilePath $logPath -Append
1.API 文档访问:若无法打开内置 API 文档,需检查设备防火墙是否放行 443 端口,或直接使用 IP 地址访问(避免 DNS 解析问题)。
2.证书警告处理:脚本中使用-SkipCertificateCheck参数忽略自签名证书警告,生产环境建议部署合法 SSL 证书,或在脚本中添加证书验证逻辑。
3.权限限制:确保执行脚本的账号拥有 VCF Operations 的管理员权限,否则会导致 API 调用失败(返回 403 Forbidden)。
4.EULA 自动化限制:由于 EULA 和 CEIP 的接受接口为私有 API,目前无公开文档支持自动化,需关注 VMware 官方更新,若后续开放接口可同步更新脚本。
5.节点部署要求:多节点集群部署时,需确保所有节点的时区、网络参数一致,否则会导致集群注册失败。
通过 CASA API 结合 PowerShell 脚本,我们成功实现了 VCF Operations 9 的初始配置自动化,大幅减少了手动操作成本,提升了部署一致性与效率。该方案适用于企业私有云部署、实验室环境搭建等场景,尤其适合批量部署多套 VCF 环境的需求。
尽管 EULA 和 CEIP 仍需手动补全,但核心配置流程的自动化已能覆盖大部分重复工作。未来随着 CASA API 的持续完善,有望实现全流程自动化。建议运维人员根据实际环境扩展脚本功能,如集成监控告警、配置备份等模块,进一步提升 VCF 环境的运维效率。