注意
本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。
在 Azure Compute Gallery 中创建映像不需要通用化或取消预配 VM,除非你想要专门创建没有计算机特定信息的映像,例如用户帐户。 在库外创建托管映像时仍需进行通用化。
进行通用化可删除计算机特定的信息,以便可以使用该映像创建多个 VM。 VM 通用化或取消预配后,需要让平台知道这一点,以便能够正确设置启动顺序。
重要
在 Azure 中将 VM 标记为 generalized
后,无法重启 VM。
此处提供了为 Azure 准备 Linux 映像的发行版特定说明:
以下说明仅介绍如何将 VM 设置为通用化。 建议按照生产工作负载的发行版特定说明进行操作。
首先,使用 Azure VM 代理取消预配 VM 以删除计算机特定文件和数据。 在源 Linux VM 上,使用带 -deprovision+user
参数的 waagent
命令。 有关详细信息,请参阅 Azure Linux 代理用户指南。 此过程不可逆。
使用 SSH 客户端连接到 Linux VM。
在 SSH 窗口中,输入以下命令:
sudo waagent -deprovision+user
备注
仅在将捕获为映像的 VM 上运行此命令。 此命令无法保证映像中的所有敏感信息均已清除,或该映像适合再分发。
+user
参数还会删除上次预配的用户帐户。 要保留 VM 中的用户帐户凭据,请仅使用-deprovision
。按 y 继续。 添加
-force
参数即可免除此确认步骤。该命令完成后,请输入“退出”以关闭 SSH 客户端。 VM 在此时仍会运行。
使用
az vm deallocate
来解除分配你已经预配的 VM,以使其通用化。az vm deallocate \ --resource-group myResourceGroup \ --name myVM
然后,需要在平台上将 VM 标记为已通用化。
az vm generalize \ --resource-group myResourceGroup \ --name myVM
Sysprep 将删除所有个人帐户和安全信息,并准备好要用作映像的计算机。 有关 Sysprep 的信息,请参阅 Sysprep 概述。
确保 Sysprep 支持计算机上运行的服务器角色。 有关详细信息,请参阅 Sysprep 对服务器角色的支持和不支持的方案。
重要
在 VM 上运行 Sysprep 后,该 VM 将被视为已通用化而无法重启。 通用化 VM 的过程是不可逆的。 如果需要保持原始虚拟机正常运行,应创建操作系统磁盘的快照,从快照创建虚拟机,然后通用化该虚拟机的副本。
Sysprep 要求对驱动器进行完全解密。 如果在 VM 上启用了加密,请在运行 Sysprep 之前将其禁用。
如果计划在首次将虚拟硬盘 (VHD) 上传到 Azure 之前运行 Sysprep,请确保先准备好 VM。
我们不支持 sysprep 步骤中的自定义应答文件,因此你不应将 “/unattend:answerfile”开关与 sysprep 命令一起使用。
使用通用化映像创建 Windows VM 时,Azure 平台会将 ISO 文件装载到 DVD-ROM。 出于这个原因,必须在通用化映像的 OS 中启用 DVD-ROM。 如果禁用了它,Windows VM 会停滞在“全新安装体验”(OOBE)。
若要将 Windows VM 通用化,请执行以下步骤:
登录到 Windows VM。
以管理员身份打开“命令提示符”窗口。
删除 panther 目录 (C:\Windows\Panther)。
验证是否已启用 CD/DVD-ROM。 如果禁用了它,Windows VM 会停滞在“全新安装体验”(OOBE)。
REM Enable CD/DVD-ROM reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cdrom /v start /t REG_DWORD /d 1 /f
备注
验证是否应用了任何策略来限制可移动存储访问(示例:计算机配置\管理模板\系统\可移动存储访问\所有可移动存储类:拒绝所有访问)
然后将目录切换到 %windir%\system32\sysprep,然后运行:
sysprep.exe /generalize /shutdown
Sysprep 完成通用化 VM 后,VM 将关闭。 不要重新启动 VM。
Sysprep 完成运行后,将虚拟机的状态设置为“通用化”。
Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized