通用化会删除计算机特定的信息,以便映像可用于创建多个 VM。 将 VM 通用化或取消预配后,需要让平台知道,以便正确设置启动序列。
在 Azure 计算库 中创建映像,不需要对 VM 进行通用化或解除配置,除非您想创建不包含机器特定信息的映像,例如用户帐户。 Azure Compute Gallery 支持保留机器特定信息的 特定用途映像。 有关详细信息,请参阅 通用化和专用映像。
在库外创建传统的映像时,仍需要进行通用化。
重要
将 VM generalized 标记为 Azure 中后,无法重启 VM。
在创建映像之前,先解除对 Linux 虚拟机的预配
使用 Azure Linux 代理(waagent)从 Linux VM 中删除特定于计算机的信息,以便为映像做好准备。 Waagent 删除 Azure VM 代理的预配数据、机器特定文件以及最近预配的用户帐户,从而使这些 VM 能够被捕获为可重复使用的映像模板。
Linux VM 的先决条件
在解除配置虚拟机以创建映像之前,建议您遵循针对生产工作负载的发行版特定说明。 下面提供了有关为 Azure 准备 Linux 映像的分发特定说明:
取消预配 Linux VM
首先,取消配置虚拟机,然后使用 Azure Linux 代理(waagent)删除虚拟机特定的文件和数据。 在源 Linux VM 上将 waagent 命令与 -deprovision+user 参数一起使用。 有关详细信息,请参阅 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
在创建映像之前通用化 Windows VM
Sysprep 会删除所有个人帐户和安全信息,然后将计算机配置为用作映像。 有关 Sysprep 的信息,请参阅 Sysprep 概述。
重要
在 VM 上运行 Sysprep 后,该 VM 被视为 通用 化且无法重启。 通用化 VM 的过程不可逆。 如果需要使原始 VM 正常运行,应创建 OS 磁盘的快照,从快照创建 VM,然后通用化该 VM 副本。
sysprep 步骤不支持自定义应答文件,因此不能将“/unattend:answerfile”开关用于 sysprep 命令。
Windows VM 的先决条件
验证 CD/DVD-ROM 是否已启用。 如果被禁用,Windows 虚拟机将停滞在开箱体验(OOBE)。 在以管理员身份运行的命令提示符下,运行以下命令:
REM Enable CD/DVD-ROM reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cdrom /v start /t REG_DWORD /d 1 /f从通用映像创建 Windows VM 时,Azure 平台会将 ISO 文件装载到 DVD-ROM。 因此,在通用映像的 OS 中必须启用 DVD-ROM。 如果被禁用,Windows 虚拟机将停滞在开箱体验(OOBE)。
验证是否没有应用限制可移动存储访问的策略。 例如:计算机配置\管理模板\系统\可移动存储访问\所有可移动存储类:拒绝所有访问
确保 Sysprep 支持计算机上运行的服务器角色。 有关详细信息,请参阅 Sysprep 对服务器角色 和 不支持的方案的支持。
禁用加密。 Sysprep 要求完全解密驱动器。 如果在 VM 上启用加密,请在运行 Sysprep 之前禁用加密。
如果计划在首次将虚拟硬盘(VHD)上传到 Azure 之前在本地计算机上运行 Sysprep,请确保在开始之前 准备好 VM 。
将 Windows VM 通用化
若要通用化 Windows VM,请执行以下步骤:
登录到 Windows VM。
以管理员身份打开“命令提示符”窗口。
删除黑豹目录(C:\Windows\Panther)(如果存在)。 此目录包含以前的 Sysprep作中的日志,这些日志可能导致 Sysprep 失败。
rd /s /q C:\Windows\Panther更改为 %windir%\system32\sysprep 目录,然后运行:
sysprep.exe /generalize /shutdownSysprep 完成通用化 VM 后,VM 将关闭。 不要重启 VM。
Sysprep 完成后,将虚拟机的状态设置为 通用化。
Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized