获取验证码
本文基于William Lam官方运维速报,拆解VCF Operations(原vRealize Operations)两套PAK升级自动化API方案:分步上传+手动安装、一键静默上传自动部署,完整给出curl原生调用命令、参数释义、进度轮询接口;解决图形界面两步操作、长时间等待无法批量自动化痛点,适配VCF 9.0/9.1、VVF全套私有云环境,提供可直接运行Bash完整自动化脚本,覆盖上传、部署、循环监控、失败重试全流程。
有VMware全系列产品官方资源和定制版资源需求的可以移步:
通过CASA集群管理REST API可完全无人值守完成VCF Operations PAK升级;方案1分步模式对齐网页后台操作逻辑,适合分步调试;方案2 silent_install静默接口一键上传+自动安装,搭配CLOBBER覆盖参数跳过重复校验,适合CI/CD流水线;两套接口均返回PakID作为唯一任务标识,调用/status端点可持续轮询升级进度,支持批量脚本、Ansible集成,大幅减少人工界面操作时长。
API归属:CASA(Cluster and Slice Administration)VCF Operations集群管理接口,访问地址为VCF Operations主节点FQDN,端口443; 权限要求:admin账号,具备集群升级管理员权限; 证书参数:-k 跳过自签名证书校验,生产环境建议导入根CA移除该参数; 文件格式:仅官方后缀.pak系统升级包支持上传。
| 方案 | 执行流程 | 适用场景 | 关键参数 |
|---|---|---|---|
| Option1 分步上传安装 | 上传文件→获取PakID→调用安装接口→轮询进度 | 调试、分步校验、需确认包完整性再部署 | 无额外URL参数 |
| Option2 静默一键部署 | 上传+自动安装合并单请求,返回PakID直接监控 | 自动化流水线、批量运维、无人值守窗口 | pak_handling_advice=CLOBBER、force_content_update=true |
参数释义: 1. pak_handling_advice=CLOBBER:存在同名旧PAK包直接覆盖,无需手动删除; 2. force_content_update=true:强制校验并执行组件更新,跳过预校验拦截。
curl -X POST -F "[email protected];type=multipart/form-data" \ -k -u 'admin:VMware1!VMware1!' \ https://vcf01.vcf.lab/casa/upgrade/cluster/pak/reserved/operation/upload
执行成功返回PakID示例:vRealizeOperationsManagerEnterprise-910020025500347
curl -X POST -k -u 'admin:VMware1!VMware1!' \ https://vcf01.vcf.lab/casa/upgrade/cluster/pak/vRealizeOperationsManagerEnterprise-910020025500347/operation/install
curl -X GET -k -u 'admin:VMware1!VMware1!' \ https://vcf01.vcf.lab/casa/upgrade/cluster/pak/vRealizeOperationsManagerEnterprise-910020025500347/status
返回JSON包含state(RUNNING/SUCCESS/FAILED)、progress百分比、错误日志字段。
curl -X POST -F "[email protected];type=multipart/form-data" \ -k -u 'admin:VMware1!VMware1!' \ 'https://vcf01.vcf.lab/casa/upgrade/cluster/pak/reserved/operation/silent_install?pak_handling_advice=CLOBBER&force_content_update=true'
请求完成直接返回PakID,立刻调用/status监控升级状态。
curl -X GET -k -u 'admin:VMware1!VMware1!' \ https://vcf01.vcf.lab/casa/upgrade/cluster/pak/[此处替换返回的PakID]/status
#!/bin/bash # 环境变量配置 VCF_OPS_FQDN="vcf01.vcf.lab" ADMIN_USER="admin" ADMIN_PWD="VMware1!VMware1!" PAK_FILE="./Operations-Upgrade-9.1.0.0400.25541550.pak" # 1、静默一键上传并自动安装,捕获PakID echo "开始上传并静默部署PAK升级包..." RESP=$(curl -s -X POST -F "contents=@$PAK_FILE;type=multipart/form-data" \ -k -u "$ADMIN_USER:$ADMIN_PWD" \ "https://$VCF_OPS_FQDN/casa/upgrade/cluster/pak/reserved/operation/silent_install?pak_handling_advice=CLOBBER&force_content_update=true") # 提取PakID(接口返回纯字符串ID) PAK_ID=$(echo $RESP | tr -d '" ') echo "获取升级任务PakID: $PAK_ID" # 2、循环轮询升级进度 while true; do STATUS_RAW=$(curl -s -k -u "$ADMIN_USER:$ADMIN_PWD" \ https://$VCF_OPS_FQDN/casa/upgrade/cluster/pak/$PAK_ID/status) STATE=$(echo $STATUS_RAW | grep -o '"state":"[^"]*"' | cut -d'"' -f4) PROGRESS=$(echo $STATUS_RAW | grep -o '"progress":[0-9]*' | cut -d':' -f2) echo "当前升级状态:$STATE 进度:$PROGRESS%" if [ "$STATE" = "SUCCESS" ]; then echo "✅ PAK升级全部完成!" break fi if [ "$STATE" = "FAILED" ]; then echo "❌ 升级任务失败,完整日志:$STATUS_RAW" exit 1 fi sleep 30 done
脚本说明:每30秒轮询一次进度,成功自动退出,失败打印完整日志终止任务,适配定时维护窗口自动执行。
账号安全:脚本禁止明文存储密码,生产改用API令牌、Ansible加密变量;
证书优化:内部私有CA环境移除curl -k参数,导入信任根证书;
前置校验:升级前先调用集群健康API确认所有VCF Operations节点Online;
版本约束:该CASA静默接口仅VCF 9.0、9.1可用,8.x旧版无silent_install端点;
离线环境:提前将PAK文件上传至执行脚本服务器,保证本地文件路径可访问。
admin账号密码错误,或账号无集群升级权限,登录后台分配Lifecycle管理员角色。
1、multipart/form-data文件路径不存在;2、PAK包损坏/版本不匹配;3、URL参数&符号未用单引号包裹转义。
1、集群存在离线数据节点;2、磁盘空间不足;3、前置版本跨度过大不支持直刷9.1,先过渡中间PAK;查看status返回完整errorMessage字段定位根因。
大PAK包建议内网高速链路执行,拆分上传分段逻辑或延长脚本等待间隔。
1、Ansible:将Bash脚本封装shell模块,批量升级多套VCF私有云Operations组件; 2、CI/CD流水线(GitLab CI/Jenkins):维护窗口自动拉取新版PAK,执行静默升级并推送结果告警; 3、监控联动:升级成功后调用监控API校验服务进程,失败推送邮件/企业微信告警; 4、批量升级:循环遍历多台VCF Operations FQDN,串行执行升级任务。
依托VCF Operations内置CASA集群管理REST API,提供分步调试、静默一键两套PAK自动化升级方案;silent_install接口搭配CLOBBER覆盖参数实现上传+部署合并执行,适配自动化运维流水线,通过/status端点持续轮询任务状态;配套完整可直接运行Bash无人值守脚本,支持VCF 9.0/9.1、VVF全栈私有云,替代网页后台人工两步操作,大幅缩短升级维护工时,适配批量集群、定时维护窗口自动化落地。