使用经过批准的基础映像创建虚拟机

本文介绍如何使用 Azure 来创建一个包含预配置的经过认可的操作系统的虚拟机 (VM)。 如果此内容与你的解决方案不兼容,则可以使用经过批准的操作系统来创建并配置本地 VM

注意

在开始此过程之前,请先查看 Azure VM 产品/服务的技术要求,包括虚拟硬盘 (VHD) 要求。

选择经过批准的基础映像

请选择下面的 Windows 或 Linux 映像之一作为基础映像。

Windows

Linux

Azure 提供一系列已批准的 Linux 发行版。 有关最新列表,请参阅 Azure 认可的 Linux 分发版

在 Azure 门户中创建 VM

  1. 登录到 Azure 门户
  2. 选择“虚拟机”。
  3. 从下拉菜单中选择“+ 创建”和“+ 虚拟机”以打开“创建虚拟机”屏幕。
  4. 从下拉列表中选择映像,或选择“查看所有映像”,以搜索或浏览所有可用的虚拟机映像。 还可以根据所选的映像来配置映像的 VM 代系。
  5. 选择要部署的 VM 的大小。
  6. 提供创建 VM 所需的其他详细信息。
  7. 选择“查看 + 创建”可查看选择。 在出现“已通过验证”消息时,选择“创建” 。

Azure 随即开始预配所指定的虚拟机。 请通过选择左侧菜单中的“虚拟机”选项卡来跟踪预配进度。 在创建之后,虚拟机的状态会更改为“正在运行”。

配置 VM

本部分介绍如何对 Azure VM 进行大小调整、更新和通用化。 必须执行这些步骤才能准备好要在 Azure 市场部署的 VM。

连接到 VM

请参阅以下文档,了解如何连接到 WindowsLinux VM。

安装最新的更新

操作系统 VM 的基础映像必须包含截至发布日期为止的最新更新。 在发布之前,请确保已使用所有最新的安全和维护修补程序更新 OS 和所有已安装的服务。

  • 对于 Windows Server,请运行“检查更新”命令。
  • 对于 Linux 分发版,通常可以通过命令行工具或图形实用工具来下载和安装更新。 例如,Ubuntu Linux 提供 apt-get 命令和更新管理器工具用于更新 OS。

执行附加的安全检查

为 Azure 市场中的解决方案映像保持高级别的安全性。 有关安全配置和过程的清单,请参阅有关Azure 市场映像的安全建议。

自定义 VM 映像

现在,请安装所需的软件并在 VM 上进行任何自定义配置更改(包括部署后需要运行的任何计划任务),使解决方案能够正常工作。 进行自定义更改时请注意以下事项:

  • 对于一次性运行的计划任务,在该任务成功完成后,它应删除自身。
  • 配置不应依赖于 C 或 D 以外的驱动器,因为只有这两个驱动器始终存在(驱动器 C 是操作系统磁盘,驱动器 D 是临时本地磁盘)。
  • 对解决方案进行任何必要的技术配置更改。 稍后,你将在合作伙伴中心的“技术配置”页的“属性”部分,标记你在 VM 上完成的配置。 这会根据目前所做的配置更改向客户显示支持的方案。 在发布期间从以下技术配置属性中进行选择:
    • 支持备份
    • 支持加速网络
    • 支持 cloud-init 配置
    • 支持扩展
    • 是网络虚拟设备
    • 远程桌面或 SSH 已禁用
    • 需要自定义 ARM 模板

有关 Linux 自定义项的详细信息,请参阅适用于 Linux 的虚拟机扩展和功能

通用化映像

Azure 市场中的所有映像必须可采用一般形式重复使用。 若要实现这种可重用性,必须将操作系统 VHD 通用化,此操作会从 VM 中删除所有特定于实例的标识符以及软件驱动程序。

对于 Windows

Windows OS 磁盘已使用 sysprep 通用化。 如果后来更新或重新配置了 OS,则必须再次运行 sysprep。

警告

运行 sysprep 后,关闭 VM,直到部署 VM,因为更新可能会自动运行。 此关闭操作可避免后续更新对操作系统或安装的服务做出特定于实例的更改。 有关运行 sysprep 的详细信息,请参阅通用化 Windows VM

备注

如果在创建要捕获的 VM 的订阅上启用了 Microsoft Defender for Cloud (Azure Defender),并且不希望从此映像创建的任何 VM 在 Defender for Endpoint 门户中注册,请确保在该订阅或 VM 本身上禁用 Microsoft Defender for Cloud。 如果未禁用,则从此映像创建的任何 VM 都将注册到 Defender for Endpoint 门户中,即使 VM 部署到其他租户,而无需Microsoft Defender for Cloud。

对于 Linux

  1. 删除 Azure Linux 代理。

    1. 使用 SSH 客户端连接到 Linux VM。
    2. 在 SSH 窗口中,输入此命令:sudo waagent –deprovision+user
    3. 键入 Y 以继续操作(可将“-force”参数添加到前一个命令,以避免确认步骤) 。
    4. 该命令完成后,请输入“退出”以关闭 SSH 客户端。
  2. 如果映像上安装 Microsoft Defender for Endpoint (MDE),请运行以下命令来卸载 MDE,具体取决于映像的 OS:

    • RHEL、CentOS 和 Oracle: sudo yum remove mdatp

    • SLES 和变体: sudo zypper remove mdatp

    • Ubuntu 和 Debian: sudo apt-get purge mdatp

    • 水手: sudo dnf remove mdatp

  3. 停止虚拟机。

    1. 在 Azure 门户,选择资源组 (RG) 并取消分配 VM。
    2. VM 现已通用化,你可以使用此 VM 磁盘创建新的 VM。

捕获映像

注意

包含 Azure Compute Gallery 的 Azure 订阅必须与发布者帐户位于同一租户才能发布。 此外,发布者帐户必须至少拥有对包含 Azure Compute Gallery 的订阅的参与者访问权限。

VM 准备就绪后,可以在 Azure Compute Gallery(以前称为“共享映像库”)中捕获它。 请按照以下步骤进行捕获:

  1. Azure 门户中转到你的虚拟机页。
  2. 选择“捕获”。
  3. 在“将映像共享到 Azure Compute Gallery”下,选择“是,将其作为映像版本共享到库”。
  4. 在“操作系统状态”下选择“通用化”。
  5. 选择目标映像库,或“新建”。
  6. 选择目标映像定义,或“新建”。
  7. 提供映像的版本号。
  8. 选择“查看 + 创建”可查看选择。
  9. 传递验证后,选择“创建”。

将虚拟机映像发布到 Azure 计算库中Azure 市场需要设置权限,以便合作伙伴中心可以获取库中托管的映像。

重要

Microsoft正在将用于从计算库获取映像的过程转换为更安全的过程。 若要继续更新虚拟机产品/服务,请按照以下步骤确保向以下Microsoft应用授予访问权限。 必须为每个用于发布到Azure 市场的计算库执行一次这些步骤。

先决条件

若要授予合作伙伴中心权限,需要确保满足以下先决条件:

  1. Azure 计算库必须位于链接到合作伙伴中心帐户的同一Microsoft Entra 租户中
  2. 必须是 计算库所在的订阅的所有者

提示

建议将专用计算库用于发布到合作伙伴中心,并且仅授予此专用库的权限。 无需在订阅级别授予权限。

步骤 1:预配服务主体

首先需要在 Azure 订阅中预配服务主体,这是通过注册Microsoft合作伙伴中心资源提供程序 (RP) 来完成的。 服务主体是一个标识,随后将用于向合作伙伴中心提供对计算库的访问权限,以获取映像。 此步骤未授予访问权限。

PowerShell
# Connect to your Azure account
Connect-AzAccount

# Set the subscription to use in the current session. Use the subscription that contains your Azure Compute Gallery.
Set-AzContext -Subscription <SubscriptionId>

# Register the Microsoft Partner Center Resource Provider (RP). This creates the Service Principals in your tenant. 
Register-AzResourceProvider -ProviderNamespace Microsoft.PartnerCenterIngestion

# Ensure the Resource Principal is registered successfully.
Get-AzResourceProvider -ProviderNamespace Microsoft.PartnerCenterIngestion
Azure CLI
# Connect to your Azure account
Az login

# Set the subscription to use in the current session. Use the subscription that contains your Azure Compute Gallery.
az account set --subscription <subscriptionId>

# Register the Microsoft Partner Center Resource Provider (RP). This creates the Service Principals in your tenant. 
az provider register --namespace

# Ensure the Resource Principal is registered successfully.
az provider show --namespace Microsoft.PartnerCenterIngestion

预配服务主体后,必须授予从特定计算库读取映像的显式权限。 合作伙伴中心正在过渡到更安全的获取映像的过程。 在此过渡期间,我们要求你暂时授予对两个Microsoft应用程序的访问权限,以便你可以继续更新虚拟机产品/服务。

PowerShell
# Get the Resource Id of your Azure Compute Gallery. The result is the <gallery-id>.
Get-AzGallery -ResourceGroupName <resource-group> -GalleryName <gallery-name>

# Get the service principal object Id for the first Microsoft application. The result is the <sp-id1>.
Get-AzADServicePrincipal -SearchString "Microsoft Partner Center Resource Provider"

# Create a role assignment to the first Microsoft application.
New-AzRoleAssignment -ObjectId <sp-id1> -RoleDefinitionId cf7c76d2-98a3-4358-a134-615aa78bf44d -Scope <gallery-id>

# Get the service principal for the second Microsoft application. The result is the <sp-id2>.
Get-AzADServicePrincipal -SearchString "Compute Image Registry"

# Create a role assignment to the second Microsoft application.
New-AzRoleAssignment -ObjectId <sp-id2> -RoleDefinitionId cf7c76d2-98a3-4358-a134-615aa78bf44d -Scope <gallery-id>
Azure CLI
# Get the Resource Id of your Azure Compute Gallery. The result is the <gallery-id>.
az sig show --resource-group <resource-group> --gallery-name <gallery-name>

# Get the service principal object Id for the first Microsoft application. The result is the <sp-id1>.
az ad sp list --display-name "Microsoft Partner Center Resource Provider" --query '[].id'

# Create a role assignment to the first Microsoft application.
az role assignment create --assignee-object-id <sp-id1> --assignee-principal-type ServicePrincipal --role cf7c76d2-98a3-4358-a134-615aa78bf44d –scope <gallery-id>

# Get the service principal for the second Microsoft application. The result is the <sp-id2>.
az ad sp list --display-name "Compute Image Registry" --query '[].id'

# Create a role assignment to the second Microsoft application.
az role assignment create --assignee-object-id <sp-id2> --assignee-principal-type ServicePrincipal --role cf7c76d2-98a3-4358-a134-615aa78bf44d –scope <gallery-id>
Azure 门户
  1. 洛金到Azure 门户

  2. 导航到包含虚拟机映像的 Azure 计算库。

  3. 导航到 Azure 计算库中的 “访问控制 ”选项卡。

  4. 选择“添加”>“添加角色分配”。

  5. 选择“计算库映像读取者”角色,然后单击“下一步”。

  6. 选择以分配对 用户、组或服务主体的访问权限。

  7. 单击“+ 选择成员”并搜索并选择服务主体“Microsoft合作伙伴中心资源提供程序”“计算映像注册表”。 单击 “下一步”

  8. 单击“ 审阅 + 分配”。