Linux VDA 自动更新
此功能可帮助您立即或在计划时间自动更新 Linux VDA 软件。当您在 Citrix Virtual Apps and Desktops Standard for Azure 中创建 Linux VDA 时,此功能尤其有用。您在 Azure 中没有 VM 的管理员权限。有关详细信息,请参阅在 Citrix Virtual Apps and Desktops Standard for Azure 中创建 Linux VDA。
配置
要使用此功能,请完成以下步骤:
步骤 1:将更新信息和新的 VDA 包上传到 Azure 容器
步骤 1a:在 Azure 存储帐户下创建容器,并将容器访问级别设置为 Blob(仅限 Blob 的匿名读取访问)。
注意:
Azure 容器和 Blob 由客户独占持有和管理。Citrix® 对其任何安全问题概不负责。为确保数据安全性和成本效率,请在每次自动更新后将容器访问级别设置为专用(无匿名访问)。
步骤 1b:将 VDA 更新信息整合到名为 UpdateInfo.json 的 JSON 文件中。有关文件格式的示例,请参阅以下代码块:
{
"Version": "21.04.200.4",
"Distributions":[
{
"TargetOS": "RHEL7_9",
"PackageName": "",
"PackageHash": ""
},
{
"TargetOS": "RHEL8_3",
"PackageName": "XenDesktopVDA-21.04.200.4-1.el8_x.x86_64.rpm",
"PackageHash": "a6f2aba23b84bbc3a4640294a8bb92474e0cacbab1e5ae33416c0a4473a28d73"
},
{
"TargetOS": "UBUNTU16_04",
"PackageName": "",
"PackageHash": ""
},
{
"TargetOS": "UBUNTU18_04",
"PackageName": "xendesktopvda_21.04.200.4-1.ubuntu18.04_amd64.deb",
"PackageHash": "4148cc3f25d3717e3cbc19bd953b42c72bd38ee3fcd7f7034c2cd6f2b15b3c5a"
},
{
- "TargetOS": "UBUNTU20_04",
- "PackageName": "",
- "PackageHash": ""
}
]
}
<!--NeedCopy-->
其中,“Version” 指示新的 VDA 版本,“Distributions” 是更新对象的数组。每个对象包含三个项:
-
“TargetOS”:必须是 “RHEL7_9”(适用于 RHEL 7 和 CentOS 7)、”RHEL8_3”、”UBUNTU16_04”、”UBUNTU18_04” 或 “UBUNTU20_04”。
ctxmonitorservice不识别任何其他发行版。 - “PackageName”:指定版本的 VDA 包的完整名称。
-
“PackageHash”:使用
shasum -a 256 <pkgname>命令计算的 SHA-256 值。
步骤 1c:将 JSON 文件和新版本的 Linux VDA 包上传到 Azure 容器。
步骤 2:在主映像或每个 VDA 上启用自动更新功能
默认情况下,自动更新处于禁用状态。如果您在 Citrix Virtual Apps and Desktops™ Standard for Azure 中创建 Linux VDA,则必须在主映像上启用该功能。否则,请直接在每个目标 VDA 上启用该功能。
要启用自动更新,请运行与以下类似的命令来编辑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\SelfUpdate 处的注册表项。
/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\SelfUpdate" -t "REG_DWORD" -v "fEnabled" -d "0x00000001" –force
/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\SelfUpdate" -t "REG_SZ" -v "ScheduledTime" -d "Immediately" –force
/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\SelfUpdate" -t "REG_SZ" -v "Url" -d "<Your-Azure-Container-Url>" –force
/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\SelfUpdate" -t "REG_SZ" -v "CaCertificate" -d "<Local-Certificate-Path-of-PortalAzureCom>" --force
<!--NeedCopy-->
下表描述了注册表设置。
| 注册表设置 | 描述 |
|---|---|
| fEnabled | 此设置为必需项。默认情况下,值为 0,表示自动更新已禁用。您可以将其设置为 1 以启用自动更新。 |
| Url | 此设置为必需项。它设置 Azure 容器的 URL,以获取更新信息和新的 VDA 包。 |
| ScheduledTime | 此设置为必需项。您可以将其设置为立即或下次启动。立即表示在下载 VDA 包后立即运行更新。当下载速度快且更新紧急时,此选项适用。但是,如果在下载包时有任何活动会话,它可能会中断用户体验。下次启动表示在 ctxmonitorservice 下次启动时执行更新。当下载速度不快且更新不紧急时,此选项适用。 |
| CaCertificate | 此设置为可选项。它设置 PEM 证书的完整路径,以验证 Azure 容器的 URL。对于 Azure Blob,它可以是从浏览器检索然后转换为 PEM 的 portal.azure.com 证书。为了安全起见,我们建议您添加此注册表设置,但它仅在 Ubuntu 上受支持。在 RHEL 上,它缺少 curl 命令的一些 NSS 库链接。请务必设置证书的最低权限。 |
当 ctxmonitorservice 重新启动时,它首先查询 Url 以获取 UpdateInfo.json 文件并从 JSON 文件中检索更新版本。然后,ctxmonitorservice 将更新版本与当前版本进行比较。如果当前版本较早,则服务会从 Azure 下载新版本的 VDA 包并将其本地保存。之后,它会根据 ScheduledTime 的设置运行更新。对于本地部署,您可以直接重新启动 ctxmonitorservice 以触发更新。但是,在 Citrix Virtual Apps and Desktops Standard for Azure 中,您没有 VM 的管理员权限,ctxmonitorservice 只能在 VDA 计算机重新启动后才能重新启动。如果更新失败,您的 VDA 将回滚到现有版本。
注意:
- 您在主映像上配置的注册表设置无法更改。
- 如果环境中的所有 VM 同时下载一个包,则本地网络可能会拥堵。
- 如果更新和回滚都失败,则用户数据将丢失。
- 如果更新失败但回滚成功,则同一网络上的用户可能具有不同版本的 Linux VDA。这种情况并不理想。
- 更新通常需要几分钟才能完成。Citrix Studio 中没有状态指示器。