0x01 前言

这些天我发现VCSA有新的补丁,但在升级过程中出现补丁包下载失败的情况。手动配置代理服务器后再尝试也无法下载。

最后只能通过下载离线升级包进行升级。

0x02 BUG

登陆进入 VMware vSphere Appliance Management:

在“更新”窗口中单击“检查更新”–>“检查存储库”,稍等片刻后即可查询是否有新的补丁:

在“可用更新”一栏中找到“知识库”地址,在后面下载补丁的时候需要用到。

在这里先点击“安装更新”–>“安装所有更新”,如果转储成功,那么VCSA会自动安装并重启;如果失败,会有以下提示:

请注意右下角的提示,这个提示只会显示3秒左右,很容便宜被忽略。另外还有一种情况:

如上图所示,升级卡在转储升级软件包的过程中。

如果点击“更新”界面中的“设置”按钮,可以找到升级包的存储库URL:

我尝试将改地址通过浏览器访问,但返还404,不知道是因为VMware服务器有问题还是我的网络有问题。另外还可以自建web服务器,这样就可以配置“使用指定存储库”。

0x03 准备

既然自动升级不可行,那就手动升级吧。

首先将知识库的地址复制到浏览器的地址栏并打开:

知识库 https://kb.vmware.com/kb/000050864

请复制你升级界面中的知识库地址,以上地址仅用于演示:

打开后的页面如上图所示,其中包含几个重要的信息:

  • 发布时间
  • 补丁信息
  • 安装教程

补丁的下载请单击箭头所指的链接,这里需要注册一个VMware账号,补丁下载是免费的:

在打开的窗口中选择“VC”,并选择版本,我VC的版本是6.5,选择完成后会弹出补丁列表。

然后需要搜索补丁的build号,确认补丁版本后点击“Download”即可下载。

VCSA补丁都很大,下载需要的时间比较长,需要耐心等待。

0x04 安装

首先需要将下载下来的镜像挂载到VCSA虚拟机中。先给VCSA虚拟机添加一个直通的光盘驱动器:

然后打开VCSA的Vmware remote console:

然后挂载下载下来的镜像:

完成后通过ssh登入到VCSA:

这里不需要用到shell,使用VMware CLI即可。然后输入以下命令指向ISO:

software-packages stage --iso

回车后弹出一堆用户协议,按回车到最后会弹出是否接受该协议的交互,输入yes并回车即可:

在开始安装补丁之前一定要使用以下命令检查该镜像的信息,还需要确认build号:

software-packages list --staged

#返还的内容如下
Command> software-packages list --staged
 [2017-11-26T13:57:05.330] : 
	category: Bugfix
	kb: https://kb.vmware.com/kb/000050864
	vendor: VMware, Inc.
	name: VC-6.5.0U1c-Appliance-FP
	tags: [u'']
	summary: Patch for VMware vCenter Server Appliance 6.5.0
	thirdPartyInstallation: False
	releasedate: November 14, 2017
	TPP_ISO: False
	version: 6.5.0.12000
	buildnumber: 7119157
	rebootrequired: True
	productname: VMware vCenter Server Appliance
	eulaAcceptTime: 2017-11-26 13:55:01 HKT
	severity: Critical

在升级之前请为VCSA创建一个快照!

确认无误后通过以下命令即可升级:

software-packages install --staged

#返还的内容
Command> software-packages install --staged
 [2017-11-26T14:00:03.330] : Validating software update payload
 [2017-11-26T14:00:03.330] : The version check is passed.
 [2017-11-26T14:00:03.330] : Validation successful
 [2017-11-26 14:00:03,262] : Copying software packages  [2017-11-26T14:00:03.330] : ISO mounted successfully
31/31
 [2017-11-26T14:00:20.330] : ISO unmounted successfully
 [2017-11-26 14:00:21,722] : Running test transaction ....
 [2017-11-26 14:00:26,876] : Running pre-install script.....
 [2017-11-26T14:02:48.330] : All VMware services are stopped.
 [2017-11-26 14:02:48,528] : Upgrading software packages ....
 [2017-11-26 14:03:51,965] : Running post-install script.....
 [2017-11-26T14:03:54.330] : Packages upgraded successfully, Reboot is required to complete the installation.

请注意:在Running  test transaction后的Running pre-install script这一步有可能会出现卡顿的情况,请不要关闭shell窗口,也不要对VC做任何操作!请耐心等待。

稍等片刻后,补丁的安装即可完成。完成后需要手动重启VCSA。

因为安装补丁的时候已经关闭VC所有的服务,所以重启工作只能通过shell或者esxi host重启虚拟机。

因为我的shell窗口还没关,所以我选择使用shell重启虚拟机。在shell窗口输入“shell”并回车以进入bash:

Command> shell
Shell access is granted to root
root@vcenter [ ~ ]#

然后输入“reboot”并回车:

root@vcenter [ ~ ]# reboot 
root@vcenter [ ~ ]# Connection closing...Socket close.

然后是漫长的等待,VCSA重启后再通过SSH登入vcenter并输入以下命令即可检查版本:

Command> version.get
Version: 
   Product: VMware vCenter Server Appliance
   Installtime: 2017-04-06T13:19:42 UTC
   Summary: Patch for VMware vCenter Server Appliance 6.5.0
   Releasedate: November 14, 2017
   Version: 6.5.0.12000
   Build: 7119157
   Type: vCenter Server with an embedded Platform Services Controller

0x05 结语

这种方式也适合升级不联网的VCSA,当然也可以自行搭建一个存储库。