Citrix DaaS

使用 Image Portability Service 在资源位置之间迁移工作负载

Image Portability Service 简化了跨平台管理映像的过程。Citrix Virtual Apps and Desktops REST API 可用于自动管理 Citrix Virtual Apps and Desktops 站点中的资源。

当您使用 Citrix Cloud 开始在两个资源位置之间迁移映像时,映像可移植性工作流程即开始。导出映像后,Image Portability Service 可帮助您传输和准备映像,以便在目标虚拟机管理程序或公有云上运行。最后,Citrix Provisioning 或 Machine Creation Services 将在目标环境中预置映像。

组件

Image Portability Service 组件包括:

  • Citrix Cloud 服务
  • Citrix Credential Wallet
  • Citrix Connector Appliance
  • Compositing Engine VM
  • PowerShell 示例脚本

Citrix Cloud 服务

Citrix Cloud 服务 API 是一项 REST API 服务,可与 Image Portability Service 进行交互。使用 REST API 服务,您可以创建和监视 Image Portability 作业。例如,您调用 API 来启动 Image Portability 作业(例如导出磁盘),然后调用以获取任务的状态。

Citrix Credential Wallet

Citrix Credential Wallet 服务可以安全地管理系统凭据,从而允许 Image Portability Service 与您的资产进行交互。例如,将磁盘从 vSphere 导出到 SMB 共享时,Image Portability Service 需要凭据才能打开与 SMB 共享的连接才能写入磁盘。如果凭据存储在 Credential Wallet 中,则 Image Portability Service 可以检索和使用这些凭据。

此服务使您能够完全管理您的凭据。云服务 API 充当接入点,使您能够创建、更新和删除凭据。

Compositing Engine

Compositing Engine 是 Image Portability Service 的主力。Compositing Engine (CE) 是在 Image Portability 导出或准备作业开始时创建的单个 VM。这些 VM 是在执行作业的同一环境中创建的。例如,从 vSphere 导出磁盘时,将在 vSphere 服务器上创建 CE。同样,在 Azure、AWS 或 Google Cloud 中运行准备任务时,CE 将分别在 Azure、AWS 或 Google Cloud 中创建。CE 会将您的磁盘装载到自身,然后对磁盘进行必要的操作。完成准备或导出作业后,CE VM 及其所有组件都将被删除。

Connector Appliance

Connector Appliance 运行用于管理 IPS 资源的提供商软件,可在您的环境(本地和 Azure、AWS 或 Google Cloud 订阅中)运行,充当单个任务的控制器。它接收来自云服务的作业指令,并创建和管理 Compositing Engine VM。Connector Appliance VM 充当云服务与您的环境之间的单个安全通信点。在每个资源位置(本地、Azure、AWS 或 Google Cloud)部署一个或多个 Connector Appliance。为了安全起见,每个资源位置都部署了 Connector Appliance。通过将 Connector Appliance 和 Compositing Engine 放置在同一位置,部署的安全状况将大大提高,因为所有组件和通信都保存在您的资源位置内。

PowerShell 模块

我们提供了一组在脚本中使用的 PowerShell 模块,作为开发您自己的自定义自动化的起点。提供的模块按原样受支持,但如果部署有需要,您可以对其进行修改。

PowerShell 自动化使用提供的配置参数编写对 Citrix Cloud API 服务的 REST 调用以启操作业,然后随着作业的进展为您提供定期更新。

如果您想开发自己的自动化解决方案,则可以使用首选的编程语言直接调用云服务。有关配置和使用 Image Portability Service REST 端点和 PowerShell 模块的详细信息,请参阅 API 门户。

工作流

Image Portability Service 使用多阶段工作流从本地资源位置为您的公有云订阅准备主目录映像。该服务将从本地虚拟机管理程序平台导出映像,然后将其上载到公有云订阅(我们提供的 PowerShell 上载实用程序可以帮助实现此操作的自动化)。然后,Image Portability 会准备映像,使其与您的公有云平台兼容。最后,映像将发布并准备作为您的云资源位置中的新计算机目录进行部署。

Image Portability 工作流

这些高级工作流基于映像的源和目标预配配置(计算机创建或 Citrix Provisioning)。所选工作流决定了需要执行哪些 Image Portability 作业步骤。

请参见下表,了解每个受支持的 IPS 工作流都需要哪些作业。

工作流(从源到目标) 导出 上载 准备 发布
MCS 到 MCS
PVS 到 MCS*
PVS 到 PVS 不适用
MCS 到 PVS

*假设您拥有作为 Citrix Provisioning 虚拟磁盘的原始映像,并且不需要将其直接导出源平台虚拟机管理程序。

要求

要开始使用 Image Portability,您必须满足以下要求。

Citrix 计算机目录映像

IPS 要求使用具有下列经过测试的配置之一的映像:

  • Windows Server 2016、2019 和 2022H2

  • Windows 10 或 11

  • 使用 Machine Creation Services 或 Citrix Provisioning

  • Citrix Virtual Delivery Agent:
    • 1912 和 2203 LTSR 的最新两个累积更新
    • 最新的两个当前版本
  • 在 Azure 中为控制台访问启用了远程桌面服务

Image Portability Service 支持以下虚拟机管理程序和云平台:

源平台:

  • VMware vSphere 7.0 和 8.0

  • XenServer 8/Citrix Hypervisor 8.2

  • Nutanix AHV(仅限 Prism Element)

  • Microsoft Azure

  • Google 云端平台

目的地平台:

  • VMware vSphere 8.0

  • XenServer 8/Citrix Hypervisor 8.2

  • Nutanix AHV(仅限 Prism Element)

  • Microsoft Azure

  • AWS

  • Google 云端平台

Citrix Connector Appliance

您需要在计划使用 Image Portability 的每个资源位置安装和配置 Citrix Connector Appliance。例如,如果您使用 Image Portability 将映像从 vSphere 移动到 Azure、AWS 和 Google Cloud,则至少需要四个 Citrix Connector 设备:

有关详细说明,请参阅部署 Connector Appliance

SMB (Windows) 文件共享

您需要一个 Windows SMB 文件共享来存储导出任务的输出。该共享必须可供合成引擎虚拟机访问,该虚拟机将在您使用 Image Portability Service 的资源位置创建。请确保共享上的可用空间至少是映像的文件系统所配置的大小的两倍。

一台用于运行 PowerShell 脚本的计算机

请确保运行 PowerShell 脚本的计算机具有以下对象:

  • PowerShell 版本 5.1。

  • 与 SMB 文件共享的快速网络连接。它可以是托管文件共享的同一台计算机。

  • 与您计划使用 Image Portability 功能的公有云平台的快速网络连接。例如,Azure、AWS 或Google Cloud。

    有关如何从 PowerShell 库下载和配置 Image Portability 模块的详细信息,请参阅为 PowerShell 准备计算机部分。

您的 Citrix Cloud 客户 ID

确保您拥有有效的 Citrix DaaS 订阅

要继续,您需要访问 Citrix DaaS(以前称为 Citrix Virtual Apps and Desktops 服务)。如果您没有访问权限,请联系您的 Citrix 代表。

请参阅 API Getting Started(API 入门)文档,了解如何创建和配置用于 Image Portability 的 API 客户端。

Azure 所需的权限和配置

要使 Image Portability Service 对您的 Azure 资源执行操作,您需要向 Image Portability Service 所使用的 Azure 服务委托人授予某些 Azure 功能的权限。有关详细列表,请参阅 Microsoft Azure 所需的权限

您可以将 参与者 角色分配给关联资源中的服务委托人。或者,要分配所需的最低权限,您可以创建具有所需权限的自定义角色,然后将其分配给作用域为相应资源的服务主体。

有关为 Azure 服务主体配置安全角色创建自定义角色的信息,请参阅 Azure 文档。

Google Cloud 需要权限和配置

要使 Image Portability Service 在您的 Google Cloud 项目中执行操作,您需要向 Image Portability Service 使用的 Google Cloud 服务主体授予某些功能的权限。

有关详细列表,请参阅 Google Cloud 所需的权限

可以使用以下角色分配这些权限:

  • Cloud Build 编辑者
  • 计算管理员
  • 存储管理员
  • 服务帐户用户

有关配置服务帐户权限的详细信息,请参阅 Google Cloud documentation(Google Cloud 文档)。

Amazon Web Services 需要权限和配置

要使用 Amazon Web Services (AWS) 帐户执行 Image Portability Service 工作流程,相应的身份和访问管理 (IAM) 身份必须具有正确的权限。

有关详细列表,请参阅 AWS 必需的权限

设置 Image Portability Service

要设置 Image Portability Service,您可以:

部署 Connector Appliance

Image Portability 要求 Citrix Connector Appliance 创建 Image Portability 作业。Connector Appliance 可帮助保护与您的本地和公有云环境的交互。Connector Appliance 的通信回传到 Image Portability Service 以报告作业状态和整体服务运行状况。

要在您的环境中部署和配置 Connector Appliance,请按照 Connector Appliance for Cloud Services(适用于云服务的 Connector Appliance)中的步骤进行操作。

规划部署时,请注意设备所需的 hardware configuration(硬件配置)和 network port access(网络端口访问权限)。

部署和注册设备后,将自动安装启用 Image Portability 所需的组件。

为 PowerShell 准备计算机

为了帮助您启动和运行 Image Portability,我们创建了 PowerShell 模块,您可以自定义这些模块并与该服务一起使用。

以下各部分内容介绍了如何准备计算机以运行 PowerShell 脚本。这些脚本只是几个示例。请修改或增强这些脚本以满足您的需求。

注意:

初始安装后,请使用 Update-Module 更新 PowerShell 模块。

PowerShell 要求

要使用 PowerShell 脚本,您需要满足以下条件:

  • 一台 Windows 计算机,用于运行驱动 Image Portability 作业的 PowerShell 脚本。计算机:

    • 有最新版本的 PowerShell。

    • 与本地 SMB 文件共享的网络连接为 10 Gbs 或更高,并且可以快速连接到您的公有云(例如 Azure、AWS 或 Google Cloud)。

    • 可以是托管文件共享的同一台计算机。

    • 是运行 Windows 10、Windows Server 2019 或 Windows Server 2022 的计算机,并带有最新的 Microsoft 修补程序。

    • 可以连接到 Microsoft PowerShell 库以下载所需的 PowerShell 库。

根据您的 Windows 版本,您可能需要禁用 TLS 1.0/1.1 支持。有关详细信息,请参阅 Microsoft PowerShell Gallery TLS 支持文档

默认情况下,PowerShell 不会通过代理服务器自动进行身份验证。请确保您已按照 Microsoft 和代理供应商最佳实践将 PowerShell 会话配置为使用代理服务器。

如果在运行涉及 PowerShellGet 缺失或旧版本的 PowerShellGet 的 PowerShell 脚本时看到错误,则需要按如下所示安装最新版本:

Install-Module -Name PowerShellGet -Force -Scope CurrentUser -AllowClobber
<!--NeedCopy-->

安装库和模块

Image Portability Service 利用 Microsoft PowerShell 库中的库来推动可移植性操作。

重要:

初始安装后,请使用 Update-Module 安装新版本。

  1. 运行以下 PowerShell 命令以下载最新模块:

    Install-Module -Name "Citrix.Workloads.Portability","Citrix.Image.Uploader" -Scope CurrentUser
    <!--NeedCopy-->
    
    • 要更改 PATH 环境变量,请执行以下操作:

      YEnter 键接受。

    • 要安装 NuGet 提供程序,请执行以下操作:

      YEnter 键接受。

    • 如果被告知库不受信任:

      A (全部)并按 Enter 键继续。

  2. 通过运行以下命令确认所有必需的模块都已下载:

    Get-InstalledModule -Name Citrix.*
    <!--NeedCopy-->
    

    此命令返回类似于以下内容的输出:

    名称 存储库 说明
    Citrix.Image.Uploader PSGallery 将 VHD (x) 上载到 Azure 存储帐户、AWS 或 GCP 以及获取有关 VHD 信息的命令 (x)
    Citrix.Workloads.Portability PSGallery 用于 Citrix Image Portability Service 的映像作业的独立 Cmdlet

将模块更新到最新版本

运行以下命令将脚本更新到最新版本。

Update-Module -Name "Citrix.Workloads.Portability","Citrix.Image.Uploader" -Force
<!--NeedCopy-->

安装 Citrix Virtual Apps and Desktops Remote PowerShell SDK

Image Portability Service 需要 Citrix Virtual Apps and Desktops Remote PowerShell SDK 在 Citrix Cloud 中创建和管理可移植性作业。

在您的计算机上下载并安装 Remote PowerShell SDK

安装平台特定的第三方组件

Image Portability Service PowerShell 模块不安装第三方依赖项。因此,您可以将安装限制在您的目标平台上。如果您使用以下平台之一,请按照安装平台依赖项的相关说明进行操作:

VMware

如果您正在创建与 VMware 环境通信的映像可移植性作业,请运行以下命令来安装所需的 VMware PowerShell 模块。

Install-Module -Name VMWare.PowerCLI -Scope CurrentUser -AllowClobber -Force -SkipPublisherCheck
<!--NeedCopy-->
Amazon Web Services

如果您要在 AWS 中创建 Image Portability 作业,请下载并安装 AWS 命令行界面,然后运行以下命令来安装所需的 AWS PowerShell 模块:

Install-Module -Name AWS.Tools.Installer
Install-AWSToolsModule AWS.Tools.EC2,AWS.Tools.S3
<!--NeedCopy-->
Azure

如果要在 Azure 中创建 Image Portability 作业,请下载并安装 Azure 命令行实用程序,然后运行以下命令以安装所需的 Azure PowerShell 模块:

Install-Module -Name Az.Accounts -Scope CurrentUser -AllowClobber -Force
Install-Module -Name Az.Compute -Scope CurrentUser -AllowClobber -Force
<!--NeedCopy-->
Google Cloud

如果您要在 Google Cloud 中创建 Image Portability 作业,请在计算机上下载并安装 Google Cloud SDK

卸载脚本和模块

运行以下命令卸载 Image Portability 软件使用的模块。

注意:

卸载 IPS 模块时,不会自动删除第三方脚本和组件。

要卸载模块,请执行以下操作:

Get-InstalledModule -Name "Citrix.Workloads.Portability","Citrix.Images.Uploader" | Uninstall-Module
<!--NeedCopy-->

向 Credential Wallet 中添加凭据

对于端到端自动化场景,您可以将 Image Portability Service 配置为与 Citrix Cloud、您的公有云和本地资源进行非交互式身份验证。此外,每当我们的 API 直接使用您的本地和公有云资源进行身份验证时,Image Portability Service 都会使用存储在 Citrix Credential Wallet 中的凭据。按照本部分内容所述设置凭据是运行导出、准备和发布作业的必需步骤。

运行作业时,Image Portability Service 需要访问您可以控制的资源。例如,要使 Image Portability Service 将磁盘从 vSphere 服务器导出到 SMB 共享,该服务需要对这两个系统的登录访问权限。为了保护此帐户信息的安全,Image Portability Service 使用 Citrix Credential Wallet 服务。此服务使用用户定义的名称将您的凭据存储在钱包中。要运行作业时,请提供要使用的凭据的名称。此外,这些凭据可以随时更新或从钱包中删除。

通常会为以下平台存储凭据:

  • Microsoft Azure
  • AWS
  • Google Cloud
  • SMB 共享
  • VMware vSphere
  • Nutanix AHV
  • XenServer

要管理凭据,请参阅 Developer API Portal(开发人员 API 门户)的 Image Portability Service APIs(Image Portability Service API)和“凭据管理”部分。

使用 Image Portability Service

将本地资源位置中的映像准备到您的公有云订阅需要在 Citrix Cloud 中创建 Image Portability 作业。您可以创建任务以在脚本或程序中对服务进行直接 API 调用,也可以使用我们开发的示例 PowerShell 模块来自动调用 API。有关使用 REST API 和 PowerShell 模块创建 IPS 作业的信息,请参阅 Image Portability Service Developer API Portal(Image Portability Service 开发人员 API 门户)。

使用 Citrix Provisioning 发布计算机目录

Image Portability Service (IPS) 与 Azure、AWS、Google Cloud、Nutanix、vSphere 和 XenServer 中的 Machine Creation Services (MCS) 一起使用,或与 Azure、Google Cloud、vSphere 和 XenServer 中的 Citrix Provisioning (PVS) 一起使用。您可以将本指南中描述的 PowerShell 和 REST 解决方案与您的平台的工具、平台的 API 或 Citrix DaaS SDK 相结合,创建无缝自动化的端到端工作流程,用于根据准备好的映像创建计算机目录。根据您选择的云平台,从完成 IPS 准备工作到创建目录或分配给 PVS 目标,可能需要一些中间步骤。

AWS

IPS 在 AWS 上准备任务会产生一定的容量。Machine Creation Services 需要在目录创建期间使用 Amazon Machine Image (AMI)。要从迁移的映像生成 AMI,您首先需要从生成的卷创建映像快照,然后基于该快照创建 AMI。这可以通过 AWS 命令行接口 (CLI) 来完成:

> aws ec2 create-snapshot --volume-id <VolumeId>
> aws ec2 register-image --name <AmiName> --architecture 'x86_64' --root-device-name '/dev/sda1 --boot-mode uefi --ena-support --virtualization-type 'hvm' --block-device-mappings 'DeviceName=/dev/sda1,Ebs={SnapshotId=<SnapshotID>}'
<!--NeedCopy-->

<VolumeId> 是 IPS 准备作业的输出。生成的 AMI 可用作 MCS 主映像。

Citrix.Workloads.Portability 模块中提供了用于自动执行这部分工作流程的 PowerShell 示例脚本,其脚本名为 New-IpsAwsImage.ps1

Azure

在 Azure 上,IPS 生成可直接用作 MCS 主映像的托管磁盘。为了将生成的映像分配给 PVS 目标,IPS 提供了“发布”操作,用于将托管磁盘复制到 PVS 存储中的 VHD (x) 文件中。

Google Cloud

IPS 在Google Cloud 上准备工作生成磁盘。MCS 需要Google Cloud 实例模板。准备主虚拟机实例和永久性磁盘中详细介绍了从磁盘创建 MCS 实例模板的过程。

对于Google Cloud 上的 PVS 目标,IPS 提供“发布”操作,用于将磁盘复制到 PVS 商店中的 VHD (x) 文件中。

自动执行 VDA 配置

准备源自本地的 Citrix 管理的映像时,您可以在映像中重新配置 VDA,以支持正在准备的映像的目标环境。Image Portability Service 可以在工作流的准备阶段动态应用 VDA 配置更改。以下配置参数定义了 VDA 在迁移的映像中的运行方式:InstallMisaXdReconfigureInstallMcsio。在创建 IPS 任务时,请参阅 Image Portability Service PowerShell 示例,以定义这些参数。

配置

  • InstallMisa 配置为 true 使 Image Portability Service 能够安装使用 MCS 配置映像所需的任何缺失的 VDA 组件。

  • InstallMisa 配置为 true 或者将 InstallMcsio 配置为 true 也需要将 CloudProvisioningType 配置为 Mcs

  • InstallPvs 设置为部署映像的 PVS 服务器的版本。设置 InstallPvs 后,Image Portability Service (IPS) 会在准备作业期间自动在映像中安装指定版本的 PVS 目标设备软件。IPS 支持最新的两个长期服务版本 (LTSR) 和当前版本 (CR) 的最新两个版本(基本版本或累积更新)。

对于 InstallMisaInstallMcsio,请注意以下几点:

  • 这些功能仅在 VDA 的最新 LTSR 和 CR 版本中受支持。

  • 如果已安装的 VDA 的必要组件已存在,则即使配置了这些参数,也不会进行任何更改。

  • 对于受支持的 VDA 版本,即使必要的 VDA 组件不存在,Image Portability 也会安装所需组件的适当版本。

  • 对于不受支持的 VDA 版本,重新配置将失败,如果必要的 VDA 组件不存在,则会记录一条消息。即使 VDA 重新配置未完成,准备工作也已完成。

XdReconfigure 需要以下值之一:controllerssite_guid。下面是使用每个值的配置参数示例:

使用 controllers

XdReconfigure = @(
    [pscustomobject]@{
        ParameterName = 'controllers'
        ParameterValue = 'comma-separated-list-of-your-cloud-connectors-fqdns'
    }
)
<!--NeedCopy-->

其中 ParameterValue 是要指向 VDA 的新 DDC 的 FQDN 列表。可以用逗号分隔的格式指定多个 DDC。

使用 site_guid

XdReconfigure = @(
    [pscustomobject]@{
        ParameterName = 'site_guid'
        ParameterValue = 'active-directory-site-guid'
    }
)
<!--NeedCopy-->

XdReconfigure 还接受使用 /reconfigure 安装开关运行 VDA 命令行安装程序时支持的值,例如 XenDesktopVdaSetup.exe /reconfigure。这些值的一些示例包括 wem_agent_portwem_cached_data_sync_portwem_cloud_connectorswem_server。有关 VDA 重新配置命令行选项的完整列表,请参阅 Citrix DaaS VDA 文档

InstallMcsio 配置为 true 自动在映像上安装 MCSIO。要禁用映像上的自动 MCSIO 安装,请将 InstallMcsio 配置为 false

注意:

您可以在运行命令 -DryRun 时使用来验证您的配置和 Connector Appliance 的网络设置。

参考

本部分内容根据您的需要详细介绍了技术参考信息。

Image Portability Service 所需的权限

本部分内容详细介绍了 Image Portability Service 在每个受支持的本地和云平台上所需的权限。

Connector Appliance 所需的权限

Connector Appliance 需要访问以下 URL 才能在 Image Portability Service 中准备映像:

api-ap-s.cloud.com
api-eu.cloud.com
api-us.cloud.com
credentialwallet.citrixworkspaceapi.net
graph.microsoft.com
login.microsoftonline.com
management.azure.com
*.blob.storage.azure.net
<!--NeedCopy-->

VMware vCenter 所需的权限

要在 VMware 环境中运行 IPS 导出磁盘作业,必须具有以下 vCenter 权限。这些权限可在 vCenter 管理面板的 Access Control(访问控制)部分的 Roles(角色)下找到。

-  Cryptographic operations
    -  Direct Access

-  Datastore
    -  Allocate space
    -  Browse datastore
    -  Low level file operations
    -  Remove file

-  Folder
    -  Create folder
    -  Delete folder

-  Network
    -  Assign network

-  Resource
    -  Assign virtual machine to resource pool

-  Virtual machine
    -  Change Configuration
        -  Add existing disk
        -  Add new disk
        -  Remove disk

    -  Edit Inventory
        -  Create from existing
        -  Create new
        -  Remove

    -  Interaction
        -  Power off
        -  Power on
<!--NeedCopy-->

Microsoft Azure 所需的权限

Image Portability 要求您的 Azure 服务帐户具有以下权限。

当指定用于合成引擎的资源组时(即在 REST 请求的 resourceGroup 属性中或使用 Citrix.Workloads.Portability PowerShell 命令时在 -AzureVmResourceGroup 参数中),则需要在资源组作用域内具有以下权限。

Microsoft.Compute/disks/beginGetAccess/action
Microsoft.Compute/disks/endGetAccess/action
Microsoft.Compute/disks/delete
Microsoft.Compute/disks/read
Microsoft.Compute/disks/write
Microsoft.Compute/virtualMachines/delete
Microsoft.Compute/virtualMachines/powerOff/action
Microsoft.Compute/virtualMachines/read
Microsoft.Compute/virtualMachines/write
Microsoft.Network/networkInterfaces/delete
Microsoft.Network/networkInterfaces/join/action
Microsoft.Network/networkInterfaces/read
Microsoft.Network/networkInterfaces/write
Microsoft.Network/networkSecurityGroups/delete
Microsoft.Network/networkSecurityGroups/join/action
Microsoft.Network/networkSecurityGroups/read
Microsoft.Network/networkSecurityGroups/write
Microsoft.Resources/deployments/operationStatuses/read
Microsoft.Resources/deployments/read
Microsoft.Resources/deployments/write
Microsoft.Resources/subscriptions/resourcegroups/read
<!--NeedCopy-->

未指定用于 Compositing Engine 的资源组时,在订阅作用域内需要以下权限。

Microsoft.Compute/disks/beginGetAccess/action
Microsoft.Compute/disks/endGetAccess/action
Microsoft.Compute/disks/read
Microsoft.Compute/disks/write
Microsoft.Compute/virtualMachines/powerOff/action
Microsoft.Compute/virtualMachines/read
Microsoft.Compute/virtualMachines/write
Microsoft.Network/networkInterfaces/join/action
Microsoft.Network/networkInterfaces/read
Microsoft.Network/networkInterfaces/write
Microsoft.Network/networkSecurityGroups/join/action
Microsoft.Network/networkSecurityGroups/read
Microsoft.Network/networkSecurityGroups/write
Microsoft.Resources/deployments/operationStatuses/read
Microsoft.Resources/deployments/read
Microsoft.Resources/deployments/write
Microsoft.Resources/subscriptions/resourceGroups/delete
Microsoft.Resources/subscriptions/resourceGroups/write
Microsoft.Authorization/roleAssignments/read
Microsoft.Authorization/roleDefinitions/read
<!--NeedCopy-->

在指定目标资源组(即在 REST 请求的 targetDiskResourceGroupName 属性中指定的资源组或使用 PowerShell 时使用 -TargetResourceGroup 参数指定的资源组)作用域内需要以下权限。

Microsoft.Compute/disks/beginGetAccess/action
Microsoft.Compute/disks/delete
Microsoft.Compute/disks/read
Microsoft.Compute/disks/write
Microsoft.Compute/snapshots/delete
Microsoft.Compute/snapshots/read
Microsoft.Compute/snapshots/write
<!--NeedCopy-->

在指定的虚拟网络资源组(即 REST 请求的 virtualNetworkResourceGroupName 属性中指定的资源组或使用 PowerShell 时使用 -AzureVirtualNetworkResourceGroupName 参数指定的资源组)作用域内需要以下权限。

Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/join/action
<!--NeedCopy-->

重要:

“prepare”和“prepareAndPublish”任务的 ceVmSku 选项控制生成的托管磁盘适用的 Azure 虚拟机类型。您必须选择与要从输出映像中预置的虚拟机具有相同系列和版本的 ceVmSku。Standard_D2S_v3 的默认值适合在所有 v3 D 系列计算机上运行。不支持指定不包含临时磁盘的计算机 SKU。

Google Cloud 所需的权限

Image Portability 要求您的 Google Cloud 服务帐户具有以下权限:

cloudbuild.builds.create
cloudbuild.builds.get
cloudbuild.builds.list
compute.disks.create
compute.disks.delete
compute.disks.get
compute.disks.list
compute.disks.setLabels
compute.disks.use
compute.globalOperations.get
compute.images.create
compute.images.delete
compute.images.get
compute.images.list
compute.images.setLabels
compute.images.useReadOnly
compute.instances.create
compute.instances.delete
compute.instances.get
compute.instances.setLabels
compute.instances.setMetadata
compute.instances.setServiceAccount
compute.instances.setTags
compute.instances.stop
compute.instances.updateDisplayDevice
compute.networks.get
compute.subnetworks.use
compute.subnetworks.useExternalIp
compute.zoneOperations.get
compute.zones.list
iam.serviceAccounts.actAs
iam.serviceAccounts.get
iam.serviceAccounts.list
resourcemanager.projects.get
storage.buckets.create
storage.buckets.delete
storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
<!--NeedCopy-->

AWS 所需的权限

Image Portability 要求您将具有以下配置的 JSON 策略文档附加到 Identity and Access Management (IAM) 用户:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ebs:StartSnapshot",
                "ebs:PutSnapshotBlock",
                "ebs:CompleteSnapshot",
                "ec2:CreateTags",
                "ec2:CreateImage",
                "ec2:DeleteSnapshot",
                "ec2:DeleteVolume",
                "ec2:DeregisterImage",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:RebootInstances",
                "ec2:RegisterImage",
                "ec2:RunInstances",
                "ec2:TerminateInstances",
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

注意:

您可能需要根据需要进一步缩小资源的作用域。

Nutanix AHV 所需的权限

Image Portability 要求您成为 Nutanix AHV 配置的群集管理员。

XenServer 所需的权限

Image Portability 要求您至少拥有 XenServer 主机所在池的“虚拟机管理员”角色。

网络连接

Image Portability Service (IPS) 创建一个名为合成引擎 (CE) 的工作虚拟机来执行映像操作。关联资源位置中的所有 Connector Appliance 都必须能够通过 HTTPS 与 CE 通信。 Connector Appliance (CA) 与 CE 之间的所有通信均由 CA 发起,但 vSphere 除外,其中 CE 和 CA 之间存在双向 HTTPS 通信。

在云环境(Azure、AWS、Google Cloud)中,CE 是使用私有 IP 地址创建的。因此,CE 必须与 CA 位于同一个虚拟网络上,或者位于可从 CA 访问的虚拟网络上。

此外,对于涉及 SMB 共享上文件的作业(例如,导出任务),CE 必须位于连接到 SMB 共享的网络上。

有关如何在每个支持的平台上指定用于 CE 的网络的详细信息,请参阅 Image Portability Service API 文档

对于“准备”作业,将启动映像中包含的操作系统(在 CE 上)以执行专业化和其他任务。如果映像包含呼叫控制服务器的管理或安全代理,则这些进程可能会干扰准备过程。

如果指定了域取消加入选项,则网络连接可能会影响结果。如果合成引擎虚拟机可以通过网络到达 Active Directory 域控制器,则取消加入会将计算机帐户从域中移除。这打破了提取映像的源 VM 的域成员资格。

因此,我们建议将为操作提供的网络与其他网络资源隔离。这可以通过子网隔离或防火墙规则来完成。有关详细信息,请参阅网络隔离

在某些本地虚拟机管理程序环境中,虚拟机管理程序可能会使用 TLS 服务器证书进行配置,该证书要么不受 CA 的可信根证书颁发机构的信任,要么与服务器的主机名不匹配。对于此类情况, IPS 提供了任务请求 属性,可用于解决问题。有关详细信息,请参阅 TLS 证书

网络代理

如果 CA 和 Internet 之间的网络流量通过执行 TLS 自检的代理,则可能需要将代理的根证书颁发机构(即代理用于签署其生成的 TLS 证书的证书)添加到 CA 的根证书颁发机构集中。有关详细信息,请参阅 在 Citrix Cloud 上注册您的 Connector App liance。

网络隔离
  • Azure

    在 Azure 中,如果操作中使用的 Azure 服务主体具有必要的 Azure 权限 1,则默认情况下,CE 是在其 NIC 上附加网络安全组 (NSG) 的情况下创建的。

    • Microsoft.Network/networkSecurityGroups/join/action
    • Microsoft.Network/networkSecurityGroups/read
    • Microsoft.Network/networkSecurityGroups/write

      否则,如果未使用显式资源组,则在订阅作用域内使用以下权限:

      • Microsoft.Network/networkSecurityGroups/delete
      • Microsoft.Network/networkSecurityGroups/join/action
      • Microsoft.Network/networkSecurityGroups/read
      • Microsoft.Network/networkSecurityGroups/write

    此 NSG 配置为阻止所有进出 CE 的流量,但以下情况除外:

    • SMB(端口 445)出站
    • HTTPS(端口 443)入站
    • 内部 Azure 服务所必需的

    通过将任务请求中的 networkIsolation 属性设置为 true,可以强制使用 NSG。在这种情况下,如果操作中使用的服务主体没有必要的权限,则任务将失败。通过将 networkIsolation 属性设置为 false,可以禁用 NSG 的使用。

  • AWS

在 AWS 中,为了实现 CE 的网络隔离,您可以创建一个或多个网络安全组来阻止所有不需要的流量,然后在任务请求中,使用 securityGroupIds 请求参数将安全组分配给 CE 实例,该参数将安全组 ID 列表作为值。

  • Google Cloud

在 Google Cloud 中,为了实现 CE 的网络隔离,您可以创建防火墙规则来阻止所有不想要的流量,然后通过网络标签将这些规则应用于 CE。IPS 使用网络标记 compositing-engine 创建 CE,您可以使用 networkTags 作业请求参数为其分配其他网络标记,该参数将标记列表作为值。

TLS 证书

如果虚拟机管理程序的服务器证书由 CA 不信任的机构签署,则可以使用两种替代方法来解决问题。

  1. 在任务请求中指定额外的根证书颁发机构证书,用于证书验证。此证书必须是用于签署虚拟机管理程序服务器证书的根证书颁发机构。
  2. 在任务请求中指定虚拟机管理程序服务器证书的 SHA-1 指纹。在这种情况下,证书验证是通过验证虚拟机管理程序返回的证书的 SHA-1 指纹是否与任务请求中提供的指纹相匹配来完成的。如果 CE 和虚拟机管理程序之间有 TLS 拦截代理,则此方法可能不起作用。

下面分别给出了每个平台的上述任务请求参数为:

  • vSphere
    1. vCenterSslCaCertificate
    2. vCenterSslFingerprint
  • Nutanix
    1. prismSslCaCertificate
    2. prismSslFingerprint
  • XenServer
    1. xenSslCaCertificate
    2. xenSslFingerprint

有关更多详细信息,请参阅 Image Portability Service API 文档。

当虚拟机管理程序服务器的主机名与其证书中的主机名不匹配时,也会出现证书验证错误。在这种情况下,可以通过在任务请求中将以下参数设置为 true 来禁用主机名匹配:

  • vSphere
    • vCenterSslNoCheckHostname
  • Nutanix
    • prismSslNoCheckHostname
  • XenServer
    • xenSslNoCheckHostname

相关文档

  1. If 正在使用显式资源组进行操作,然后在该资源组的作用域内使用以下权限: 

使用 Image Portability Service 在资源位置之间迁移工作负载