介绍

当您要部署多个Azure虚拟机时,每个系统的定制过程可能会非常耗时。传统上,IT管理员一直使用黄金映像在其组织内部署机器。为了创建黄金映像(也称为模板或主映像),必须创建一个虚拟机,从头开始在此虚拟机内安装操作系统,然后在此虚拟机上安装所有组织必备组件。

例如,先决条件可能是安装特定软件,例如:

  • Adobe阅读器
  • Word, Outlook, Excel,…
  • VMware View代理
  • 系统中心配置管理器代理
  • 等等……

或者可以创建一个文件夹,一个自定义的事件日志…所以最后必须“sysprep”虚拟机,以创建一个映像。

作为系统管理员,您希望自动执行此任务以节省时间。多亏了Azure(在Virtual Machine刀片服务器中)提供的“捕获”特性,您将能够创建一个Gold Image,然后从这个模板部署一个Virtual Machine。你可以使用Azure Portal来执行这个任务,当然你也可以使用Windows PowerShell。在本指南中,我将解释这两种方法。

蔚蓝不是魔法;在捕获虚拟机之前,你必须考虑一些重要的因素:

下载的横幅
  • 当您部署一个基于Gold Image的新虚拟机时,这个虚拟机将在运行Gold Image的同一个Azure Region中创建。所以如果你的Gold Image在西欧运行,你就不能在美国西部部署VM
  • 因此,如果需要将VM部署到多个Azure区域,唯一的解决方法是为多个Azure区域创建多个黄金映像
  • 您不能使用Windows更新更新黄金映像。因此,新创建的虚拟机需要在创建后立即更新

要求

在深入本指南之前,让我们看看先决条件:

  • 你必须有一个Azure订阅
  • 您必须至少有一个资源组,或者在本文中创建一个新的资源组
  • 在Azure订阅中必须有一个存储帐户
  • 具有现有子网的虚拟网络必须存在
  • 当然,你必须有一个现有的虚拟机,这样我们才能推广它

开始

在这个例子中,我通过点击“创建资源”创建了一个Windows Server 1709虚拟机:

generalized-vm-in-azure

然后创建一个名为“GET-CMD”的文件夹。在此步骤中,您可以安装软件;复制/粘贴一些自定义脚本,或任何您想要的…

generalized-vm-in-azure

在创建映像之前,务必使用“Sysprep”在虚拟机上准备Windows客户操作系统。如果您从尚未通用的虚拟机创建映像,那么从该映像创建的任何虚拟机都不会启动。

“Sysprep”是什么?

“Sysprep”(系统准备)为映像准备Windows安装(Windows客户端和Windows服务器),允许您捕获自定义安装。“Sysprep”从Windows安装中删除特定于PC的信息,“概括”安装,以便可以在不同的PC上安装。

注意:捕获虚拟机映像将使虚拟机不可用。这一行动无法挽回。

完成自定义后,导航到“C:\windows\system32\sysprep”并运行“sysprep.exe”。使用以下设置运行系统准备:

Sysprep正在泛化虚拟机,所以请稍等……

generalized-vm-in-azure

注意:有时候,在sysprep过程中可能会出现错误,这是很常见的。要解决此问题,您必须导航到以下目录:

C: \ windows \ system32系统\ \ sysprep \黑豹

打开日志文件并查看日志文件的底部,您将看到一些提到某个应用程序或其他东西的错误消息。您必须纠正这个错误,并再次尝试sysprep计算机。

generalized-vm-in-azure

一旦泛化完成,虚拟机将停止。打开Azure门户,并确认状态:

generalized-vm-in-azure

点击您的虚拟机,然后注意“捕获”按钮。Azure允许你将标准虚拟机转换为模板(例如Gold Image)。

generalized-vm-in-azure

将出现一个新的向导,并提示您键入名称并选择资源组。正如我前面提到的,捕获虚拟机映像将使虚拟机不可用,因此您可以勾选复选框,在创建映像之后删除虚拟机。

generalized-vm-in-azure

单击“确定”,并等待虚拟机转换完成。创建模板后,导航到“所有服务”和“图像”:

generalized-vm-in-azure

你会注意到金色的图像。

generalized-vm-in-azure

在该镜像中,单击“+创建虚拟机”,可根据该模板创建新的虚拟机。

generalized-vm-in-azure

在出现的新刀片中,您必须为新虚拟机输入一个名称:

generalized-vm-in-azure

等待部署完成。在我的例子中,部署只花了4分10秒。现在,让我们连接到此虚拟机并确认该文件夹是否存在。

generalized-vm-in-azure

文件夹存在,并且最后一次写入时间与“SysprepVM”相同,所以一切正常,“VM01”已经启动并运行。

Windows PowerShell

自动化IT管理任务对每个系统管理员来说都是必不可少的,所以您应该使用Windows PowerShell来概括虚拟机。多亏了Windows PowerShell和Azure RM PowerShell模块,你将能够在Azure中自动化整个过程。

首先,正如我们在Azure门户中所做的那样,我们需要停止虚拟机:

停止AzureRmVM-ResourceGroupName$rgName-Name$vmName-Force

generalized-vm-in-azure

这里,我们需要使用Set-AzureRmVm cmdlet来概括VM:

Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized

generalized-vm-in-azure

最后一步检索虚拟机信息,然后我们在西欧地区创建一个新的Azure映像配置,最后,我们可以使用new-AzureRmImage cmdlet创建Azure映像:

$vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $rgName
$image=New AzureRmImageConfig-Location$Location-SourceVirtualMachineId$vm.ID
新建- azurermimage -Image $image -ImageName $imageName -ResourceGroupName $rgName

generalized-vm-in-azure

创建模板后,导航到“所有服务”和“图像”以确认新的Azure图像:

generalized-vm-in-azure

结论

在本文中,我们讨论了Azure映像,这些映像对于Azure管理员非常重要,以便基于模板在Azure中部署多个虚拟机。我们还讨论了Windows PowerShell如何自动化此任务并节省时间。如果您对命令行不太熟悉,可以使用Azure门户而不是PowerShell。

多亏了Azure映像,你可以基于自己的模板创建Azure虚拟机,这对满足你的需求至关重要。

跟着我们推特脸谱网为新发布,更新,见解深刻的帖子和更多的Feeds。