VMware 虚拟化环境
如果您使用 VMware 提供虚拟机,请按照此指导进行操作。
安装 vCenter Server 以及相应的管理工具。(不支持 vSphere vCenter 链接模式操作。)
如果您计划使用 MCS,请勿在 vCenter Server 中禁用数据存储浏览器功能(如 https://kb.vmware.com/s/article/2101567 中所述)。禁用了此功能时,MCS 无法正常工作。
可以使用 Citrix Provisioning(以前称为 Provisioning Services) 和 Machine Creation Services 预配以下各项:
- 支持的桌面或服务器操作系统 VM 的旧版 BIOS。
- 支持的桌面或服务器操作系统 VM 的 UEFI,包括安全引导。
所需权限
使用本文中列出的一组或全部权限创建一个 VMware 用户帐户以及一个或多个 VMware 角色。基于用户权限所需的特定粒度级别进行角色创建,以随时请求各种 Citrix DaaS 操作。要随时授予用户特定的权限,请至少在数据中心级别将其与相应的角色相关联,并选择 Propagate to children(传播到子代)选项。
以下各表显示了 Citrix Virtual Apps and Desktops 操作与所需的最低 VMware 权限之间的映射关系。
注意:
某些 vSphere 版本的权限列表显示名称(特别是用户界面)不同。例如,在 vSphere 6.7 中,用户界面权限为更改内存和更改设置,而非本页上注明的所需权限中所述的设置和内存。
添加连接和资源
SDK | 用户界面 |
---|---|
System.Anonymous、System.Read 和 System.View | 自动添加。可以使用内置的只读角色。 |
电源管理
SDK | 用户界面 |
---|---|
VirtualMachine.Interact.PowerOff | 虚拟机 > 交互 > 关闭 |
VirtualMachine.Interact.PowerOn | 虚拟机 > 交互 > 打开 |
VirtualMachine.Interact.Reset | 虚拟机 > 交互 > 重置 |
VirtualMachine.Interact.Suspend | 虚拟机 > 交互 > 挂起 |
Datastore.Browse | 数据存储 > 浏览数据存储 |
预配计算机 (Machine Creation Services)
要使用 MCS 预配计算机,必须具备以下权限:
SDK | 用户界面 |
---|---|
Datastore.AllocateSpace | 数据存储 > 分配空间 |
Datastore.Browse | 数据存储 > 浏览数据存储 |
Datastore.FileManagement | 数据存储 > 低级别文件操作 |
Network.Assign | 网络 > 分配网络 |
Resource.AssignVMToPool | 资源 > 将虚拟机分配到资源池 |
VirtualMachine.Config.AddExistingDisk | 虚拟机 > 配置 > 添加现有磁盘 |
VirtualMachine.Config.AddNewDisk | 虚拟机 > 配置 > 添加新磁盘 |
Virtual machine.Config.Add 或删除设备 | 虚拟机 > 配置 > 添加或删除设备 |
VirtualMachine.Config.AdvancedConfig | 虚拟机 > 配置 > 高级 |
VirtualMachine.Config.RemoveDisk | 虚拟机 > 配置 > 删除磁盘 |
VirtualMachine.Config.CPUCount | 虚拟机 > 配置 > 更改 CPU 计数 |
VirtualMachine.Config.Memory | 虚拟机 > 配置 > 更改内存 |
VirtualMachine.Config.Settings | 虚拟机 > 配置 > 更改设置 |
VirtualMachine.Interact.PowerOff | 虚拟机 > 交互 > 关闭 |
VirtualMachine.Interact.PowerOn | 虚拟机 > 交互 > 打开 |
VirtualMachine.Interact.Reset | 虚拟机 > 交互 > 重置 |
VirtualMachine.Interact.Suspend | 虚拟机 > 交互 > 挂起 |
VirtualMachine.Inventory.CreateFromExisting | 虚拟机 > 清单 > 从现有项创建 |
VirtualMachine.Inventory.Create | 虚拟机 > 清单 > 新建 |
VirtualMachine.Inventory.Delete | 虚拟机 > 清单 > 删除 |
VirtualMachine.Provisioning.Clone | 虚拟机 > 预配 > 克隆虚拟机 |
VirtualMachine.State.CreateSnapshot | vSphere 5.0 Update 2、vSphere 5.1 Update 1 和 vSphere 6.x Update 1:虚拟机 > 状态 > 创建快照;vSphere 5.5: 虚拟机 > 快照管理 > 创建快照 |
映像更新和回滚
SDK | 用户界面 |
---|---|
Datastore.AllocateSpace | 数据存储 > 分配空间 |
Datastore.Browse | 数据存储 > 浏览数据存储 |
Datastore.FileManagement | 数据存储 > 低级别文件操作 |
Network.Assign | 网络 > 分配网络 |
Resource.AssignVMToPool | 资源 > 将虚拟机分配到资源池 |
VirtualMachine.Config.AddExistingDisk | 虚拟机 > 配置 > 添加现有磁盘 |
VirtualMachine.Config.AddNewDisk | 虚拟机 > 配置 > 添加新磁盘 |
VirtualMachine.Config.AdvancedConfig | 虚拟机 > 配置 > 高级 |
VirtualMachine.Config.RemoveDisk | 虚拟机 > 配置 > 删除磁盘 |
VirtualMachine.Interact.PowerOff | 虚拟机 > 交互 > 关闭 |
VirtualMachine.Interact.PowerOn | 虚拟机 > 交互 > 打开 |
VirtualMachine.Interact.Reset | 虚拟机 > 交互 > 重置 |
VirtualMachine.Inventory.CreateFromExisting | 虚拟机 > 清单 > 从现有项创建 |
VirtualMachine.Inventory.Create | 虚拟机 > 清单 > 新建 |
VirtualMachine.Inventory.Delete | 虚拟机 > 清单 > 删除 |
VirtualMachine.Provisioning.Clone | 虚拟机 > 预配 > 克隆虚拟机 |
删除预配的计算机
SDK | 用户界面 |
---|---|
Datastore.Browse | 数据存储 > 浏览数据存储 |
Datastore.FileManagement | 数据存储 > 低级别文件操作 |
VirtualMachine.Config.RemoveDisk | 虚拟机 > 配置 > 删除磁盘 |
VirtualMachine.Interact.PowerOff | 虚拟机 > 交互 > 关闭 |
VirtualMachine.Inventory.Delete | 虚拟机 > 清单 > 删除 |
存储配置文件 (vSAN)
要在 vSAN 数据存储上创建目录期间查看、创建或删除存储策略,必须具备以下权限:
SDK | 用户界面 |
---|---|
StorageProfile.Update | 配置文件驱动的存储 > 配置文件驱动的存储更新。对于 vSphere 8:VM 存储策略 > 更新 VM 存储策略 |
StorageProfile.View | 配置文件驱动的存储 > 配置文件驱动的存储视图。对于 vSphere 8:VM 存储策略 > 查看 VM 存储策略 |
标记和自定义属性
标记和自定义属性允许您将元数据附加到在 vSphere 清单中创建的 VM,从而更轻松地搜索和筛选这些对象。要创建、编辑、分配和删除标记或类别,必须具备以下权限:
SDK | 用户界面 |
---|---|
InventoryService.Tagging.CreateTag | vSphere 标记 > 创建 vSphere 标记 |
InventoryService.Tagging.CreateCategory | vSphere 标记 > 创建 vSphere 标记类别 |
InventoryService.Tagging.EditTag | vSphere 标记 > 编辑 vSphere 标记 |
InventoryService.Tagging.EditCategory | vSphere 标记 > 编辑 vSphere 标记类别 |
InventoryService.Tagging.DeleteTag | vSphere 标记 > 删除 vSphere 标记 |
InventoryService.Tagging.DeleteCategory | vSphere 标记 > 删除 vSphere 标记类别 |
InventoryService.Tagging.AttachTag | vSphere 标记 > 分配或取消分配 vSphere 标记 |
InventoryService.Tagging.ObjectAttachable | vSphere 标记 > 在对象上分配或取消分配 vSphere 标记 |
Global.ManageCustomFields | 全局 > 管理自定义属性 |
Global.SetCustomField | 全局 > 设置自定义属性 |
注意:
当 MCS 创建计算机目录时,它会使用特殊的名称标记来标记目标 VM。这些标记将主映像与 MCS 创建的 VM 区分开来,并防止使用 MCS 创建的 VM 进行映像准备。您可以在 vCenter 中通过
XdProvisioned
属性的值来识别差异。如果 MCS 创建了 VM,该属性将设置为 True。
加密操作
加密操作权限控制谁可以对哪种类型的对象执行哪种类型的加密操作。vSphere Native Key Provider 使用 Cryptographer.*
权限。加密操作需要以下最低权限:
注意:
使用配备 vTPM 的 VM 创建 MCS 计算机目录需要这些权限。
SDK | 用户界面 |
---|---|
Cryptographer.Access | 权限 > 所有权限 > 加密操作 > 直接访问 |
Cryptographer.AddDisk | 权限 > 所有权限 > 加密操作 > 添加磁盘 |
Cryptographer.Clone | 权限 > 所有权限 > 加密操作 > 克隆 |
Cryptographer.Encrypt | 权限 > 所有权限 > 加密操作 > 加密 |
Cryptographer.EncryptNew | 权限 > 所有权限 > 加密操作 > 加密新对象 |
Cryptographer.Decrypt | 权限 > 所有权限 > 加密操作 > 解密 |
Cryptographer.Migrate | 权限 > 所有权限 > 加密操作 > 迁移 |
Cryptographer.ReadKeyServersInfo | 权限 > 所有权限 > 加密操作 > 读取 KMS 信息 |
预配计算机 (Citrix Provisioning)
要通过 Citrix Provisioning 控制台使用 Citrix Virtual Apps and Desktops 设置向导和“导出设备”向导预配 VM,需要这些克隆和部署模板的权限。在创建托管连接时设置权限。您需要来自预配计算机 (Machine Creation Services) 的所有权限以及以下权限。
SDK | 用户界面 |
---|---|
VirtualMachine.Config.AddRemoveDevice | 虚拟机 > 配置 > 添加或删除设备 |
VirtualMachine.Config.CPUCount | 虚拟机 > 配置 > 更改 CPU 计数 |
VirtualMachine.Config.Memory | 虚拟机 > 配置 > 内存 |
VirtualMachine.Config.Settings | 虚拟机 > 配置 > 设置 |
VirtualMachine.Provisioning.CloneTemplate | 虚拟机 > 预配 > 克隆模板 |
VirtualMachine.Provisioning.DeployTemplate | 虚拟机 > 预配 > 部署模板 |
VApp.Export | vApp > 导出 |
注意:
VApp.Export
是使用计算机配置文件创建 MCS 计算机目录所必需的。
获取和导入证书
为了保护 vSphere 通信的安全,Citrix 建议您使用 HTTPS,而不使用 HTTP。
HTTPS 需要数字证书。使用由证书颁发机构颁发的符合贵组织的安全策略的数字证书。
如果无法使用证书颁发机构所颁发的数字证书,则可以使用由 VMware 安装的自签名证书。仅当贵组织的安全策略允许时才能使用此方法。在每个 Delivery Controller 中添加 VMware vCenter 证书。
-
将运行 vCenter Server 的计算机的完全限定域名 (FQDN) 添加到该服务器上的主机文件中,文件位于:
%SystemRoot%/WINDOWS/system32/Drivers/etc/
。只有当域名系统中尚不存在运行 vCenter Server 的计算机的 FQDN 时,才需要执行此步骤。 -
使用以下任意三种方法之一获取 vCenter 证书:
从 vCenter Server。
- 将 rui.crt 文件从 vCenter Server 复制到 Delivery Controller 上可访问的位置。
- 在 Controller 上,导航到导出的证书所在的位置,然后打开 rui.crt 文件。
使用 Web 浏览器下载证书。如果使用 Internet Explorer,请右键单击 Internet Explorer,然后选择以管理员身份运行以下载或安装证书。
- 打开 Web 浏览器,与 vCenter Server 建立安全 Web 连接(例如 https://server1.domain1.com))。
- 接受安全警告。
- 单击显示证书错误的地址栏。
- 查看证书并单击“详细信息”选项卡。
- 选择 Copy to file and export in .CER format(复制到文件并导出为 .CER 格式),并在系统提示时提供名称。
- 保存导出的证书。
- 导航到导出的证书所在的位置,然后打开 .CER 文件。
从以管理员身份运行的 Internet Explorer 直接导入。
- 打开 Web 浏览器,与 vCenter Server 建立安全 Web 连接(例如 https://server1.domain1.com))。
- 接受安全警告。
- 单击显示证书错误的地址栏。
- 查看证书。
-
将证书导入到每个 Controller 上的证书存储中。
- 单击安装证书选项,选择本地计算机,然后单击下一步。
- 选择将所有的证书都放入下列存储,然后单击浏览。选择受信任人,然后单击确定。单击下一步,然后单击完成。
如果在安装后更改 vSphere 服务器的名称,必须在该服务器上生成新的自签名证书,然后再导入新证书。
配置注意事项
创建主 VM:
使用主 VM 在计算机目录中提供用户桌面和应用程序。在虚拟机管理程序上:
- 在主 VM 上安装 VDA,选择用于优化桌面的选项,这样会提高性能。
- 生成主 VM 的快照作为备份。
创建连接:
在连接创建向导中执行以下操作:
- 选择 VMware 连接类型。
- 指定 vCenter SDK 接入点的地址。
- 指定先前设置的具有创建 VM 权限的 VMware 用户帐户的凭据。以域/用户名格式指定用户名。
VMware SSL 指纹
VMware SSL 指纹功能无需手动创建与 VMware vSphere 虚拟机管理程序的主机连接。在创建连接之前,不再需要在站点中的 Delivery Controller 与虚拟机管理程序的证书之间手动创建信任关系。
VMware SSL 指纹功能将不受信任的证书的指纹存储在站点数据库中。此配置可确保虚拟机管理程序可以连续地被 Citrix Virtual Apps and Desktops 识别为可信任,即使不是 Controller 识别的亦如此。
在 Studio 中创建 vSphere 主机连接时,可以通过一个对话框查看要连接的计算机的证书。然后,您可以选择是否信任该证书。
重置操作系统磁盘
使用 PowerShell 命令 Reset-ProvVMDisk
在 MCS 创建的计算机目录中重置永久 VM 的操作系统磁盘。
要成功运行 PowerShell 命令,请确保:
- 目标 VM 位于永久 MCS 目录中。
- MCS 计算机目录运行正常。
- 这意味着资源预配方案和主机存在,并且预配方案有正确的条目。
- VMware vCenter 未处于维护模式。
- 目标 VM 已关闭电源并处于维护模式。
请执行以下步骤以重置操作系统磁盘:
- 打开 PowerShell 窗口。
- 运行 asnp citrix* 以加载特定于 Citrix 的 PowerShell 模块。
-
使用以下任一方式运行 PowerShell 命令
Reset-ProvVMDisk
:-
将 VM 列表指定为以逗号分隔的列表,然后在每个 VM 上执行重置:
Reset-ProvVMDisk -ProvisioningSchemeName "xxx" -VMName ("abc","def") -OS <!--NeedCopy-->
-
将 VM 列表指定为
Get-ProvVM
命令的输出,然后在每个 VM 上执行重置:(Get-ProvVM -ProvisioningSchemeName "xxx") | Reset-ProvVMDisk "abc" -OS <!--NeedCopy-->
-
按名称指定单个 VM:
Reset-ProvVMDisk -ProvisioningSchemeName "xxx" -VMName "abc" -OS <!--NeedCopy-->
-
为
Get-ProvVM
命令返回的每个 VM 创建单独的重置任务。这种方法效率较低,因为每个任务都将执行相同的冗余检查,例如虚拟机管理程序功能检查、每个 VM 的连接检查。Get-ProvVM -ProvisioningSchemeName "xxx" | Reset-ProvVMDisk -ProvisioningSchemeName "xxx" -OS <!--NeedCopy-->
-
-
出现确认提示,其中列出了要重置的 VM 以及一条警告消息,提示这是不可恢复的操作。如果您没有提供答案并按 Enter 键,则不会采取进一步的操作。
注意:
在重置过程完成之前,请勿使 VM 退出维护模式或打开其电源。
可以运行 PowerShell 命令
-WhatIf
来打印其要执行的操作,然后在不执行该操作的情况下退出。也可以使用以下方法之一绕过确认提示:
-
提供
-Force
参数:Reset-ProvVMDisk -ProvisioningSchemeName "xxx" -VMName "abc" -OS -Force <!--NeedCopy-->
-
提供
-Confirm:$false
参数:Reset-ProvVMDisk -ProvisioningSchemeName "xxx" -VMName "abc" -OS -Confirm:$false <!--NeedCopy-->
-
在运行
Reset-ProvVMDisk
之前,请将$ConfirmPreference
更改为无:PS C:\Windows\system32> $ConfirmPreference='None' PS C:\Windows\system32> $ConfirmPreference None PS C:\Windows\system32> Reset-ProvVMDisk -ProvisioningSchemeName "xxx" -VMName "abc" -OS <!--NeedCopy-->
-
- 运行
Get-ProvTask
以获取Reset-ProvVMDisk
命令返回的任务的状态。
更新计算机目录的文件夹 ID
您可以通过在 Set-ProvScheme
命令的自定义属性中指定 FolderId
来更新 MCS 计算机目录的文件夹 ID。更新文件夹 ID 后创建的 VM 将在此新文件夹 ID 下创建。如果未在 CustomProperties
中指定此属性,则会在主映像所在的文件夹下创建 VM。
要更新计算机目录的文件夹 ID,请执行以下步骤。
-
打开 Web 浏览器,然后输入 vSphere Web Client 的 URL。
-
输入凭据,然后单击登录。
-
在 vSphere Web Client 中创建用于放置 VM 的文件夹。
-
打开 PowerShell 窗口。
-
运行 asnp citrix* 以加载特定于 Citrix 的 PowerShell 模块。
-
在
Set-ProvScheme
的CustomProperties
中指定FolderID
。在此示例中,文件夹 ID 值为group-v2406
。Set-ProvScheme -ProvisioningSchemeUid "50bb319c-2e83-4a37-9ea1-94f630687372" -CustomProperties "<CustomProperties xmlns=""http://schemas.citrix.com/2014/xd/machinecreation"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""><Property xsi:type=""StringProperty"" Name=""FolderId"" Value=""group-v2406"" /></CustomProperties>" <!--NeedCopy-->
- 使用 Studio 将 VM 添加到计算机目录。
- 检查 vSphere Web Client 上是否有新 VM。新 VM 将在新文件夹下创建。
在 vSphere 中查找文件夹 ID
访问任何 ESXi 或 vCenter 服务器系统中的托管对象浏览器 (MOB) 以查找 VM 的文件夹 ID。
MOB 是一款基于 Web 的服务器应用程序,内置于所有 ESX/ESXi 和 vCenter 服务器系统中。此 vSphere 实用程序允许您查看有关 VM、数据存储和资源池等对象的详细信息。
- 打开 Web 浏览器并输入
http://x.x.x.x/mob
,其中 x.x.x.x 为 vCenter Server 或 ESX/ESXi 主机的 IP 地址。例如,https://10.60.4.70/mob。 - 在 MOB 的主页上,单击属性 content 的值。
- 单击 rootFolder 的值。
- 单击 childEntity 的值。
- 单击 vmFolder的值。
- 您可以在 childEntity 的值中找到文件夹 ID。
故障排除
如果目录创建失败,请参阅 CTX294978。