分享

Microsoft Azure:VM 映像 PowerShell 教学

yuwenge 发表于 2014-6-17 02:04:41 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 1 12771
本帖最后由 yuwenge 于 2014-6-17 02:07 编辑
问题导读:
1.如何列出列出VM映像?
2.如何删除VM映像与删除OS映像?
3.VM映像可以“通用化”或“专用化”,OS 是否也一样?




编辑人员注释:本文章是与Microsoft Azure工程的项目经理Kay Singh共同撰写的

正如我在第一篇博客文章中所承诺的,我又回来了,为大家分步介绍如何在PowerShell中使用VM映像。我邀请了我的同事,负责计算 PowerShellcmdlet的PMKay和我一起为您解释相关细节。希望您已经使用过 VM映像,并且最近一直在期待这篇博客文章。好了好了……我现在有点兴奋过头了。

正如我之前所说,VM映像是 OS映像的继承性产品,这两种映像有很多相似之处。随着 VM映像功能的发展,将来您可以将 VM映像视为包含了 OS映像的产品。虽然我们将 VM映像和 OS映像分开讨论,但是 PowerShell将它们统一成“über”映像实体。所以,许多使用 OS 映像时您熟悉的 PowerShell cmdlet也适用于 VM映像。

我们首先简单回顾一下 OS映像 PowerShell知识。您可能会回想起来,要创建、列出和删除 OS映像,可以使用以下PowerShell代码段:

1.jpg

您可以使用以下PowerShell代码段,通过新创建的OS映像部署VM:

2.jpg
或者,
3.jpg

希望以上内容能够帮助您回顾以前的内容,下面我们将开始深入认识 VM映像。

创建 VM以进行捕捉
在我们开始介绍有关 VM映像的具体内容前,我们首先需要一台后面要使用的虚拟机。现在我们根据上述内容,部署一台运行 SQL Server 2014、带有两个数据磁盘的虚拟机。创建一台带有SQL Server 2014 RTM DataWarehousing四月版本的虚拟机的脚本如下:

4.jpg

将 VM 捕捉为通用化 VM映像或专用化 VM映像
在捕捉虚拟机之前,您必须确定您想要进行通用化捕捉还是专用化捕捉。在之前的博客文章中我们提到,通用化VM 映像将作为“模型”快速创建类似的虚拟机。OS映像也有类似的功能。专用化 VM映像是新的映像,将作为“快照”在一个已知良好的时间点部署 VM,然后再执行相关任务,以防止该任务出错而导致虚拟机无法使用。

您还需要执行另外几个步骤才能使虚拟机准备好进行捕捉。要捕捉通用化 WindowsServer VM 映像,您可以按照Microsoft Azure文章如何捕捉运行 Windows Server 的虚拟机映像中的步骤操作。要捕捉 Linux VM 映像,您可以按照相似的文章如何捕捉运行 Linux 的虚拟机映像操作。

我们现在接着将这台虚拟机实际捕捉为 VM 映像。捕捉过程与 OS映像的捕捉过程类似。您需要使用现有的 Save-AzureVMImage cmdlet,但要加入新的参数,用于确定是捕捉OS映像还是捕捉VM映像。

我们先捕捉通用化VM映像,将其称为myFirstVMImage。
5.jpg

如果您想要捕捉专用化 VM 映像,您可以使用以下代码段:

6.jpg

请注意,使用OSState参数可以指定您捕捉VM映像的意图。如果不使用该参数,此 cmdlet将捕捉 OS映像。OS映像始终假设为已“通用化”,因此不需要 OSState 参数。

小提示:我们强烈建议您不要使用相同的名称创建两个映像(VM映像和 OS映像)。 我们确实允许您在Microsoft Azure 平台上这样操作,但是您可能会碰到问题,因为该平台无法确定您的意图。

您可能会问,重复名称是如何出现的。如果您在一个客户端(例如PowerShell)中创建 VM 映像,然后在另一个客户端(例如门户)中创建 OS映像,就可能出现重复名称。如果您仅通过 PowerShell 创建 OS映像和 VM映像,当您使用相同名称创建 VM映像和 OS映像时,Save-AzureVMImagecmdlet将验证名称并提示错误。

列出VM映像
正如前面所回顾的,使用Get-AzureVMImage cmdlet将同时列出用户和发布的 OS映像。但是请等一下!如果我们现在就运行该 cmdlet,我们将看到我们刚才捕捉的 VM 映像。如果您不相信我们,试试以下 PowerShell代码段!

7.jpg

现有的Get-AzureVMImage cmdlet 不仅返回了OS映像,还返回了用户和发布的VM映像。要仅列出VM映像,您可以使用DataDiskConfiguration等仅适用于VM映像的属性进行过滤。

8.jpg

删除 VM 映像
删除 VM 映像与删除 OS映像相同。

9.jpg

您是否记得我们曾提到过,如果有两个映像的名称相同,平台将无法确定意图?在这种情况下,以上 cmdlet将发生错误,以防误删映像。 如果您想要删除 OS 映像,您需要在 PowerShell中使用 Portal或 Invoke-Rest URI方法,直接调用REST API。要删除VM映像,您也可以在PowerShell中使用Invoke-Rest URI方法。其中一个映像删除后,您可以再次使用Remove-AzureVMImage cmdlet。如果您遇到这种情况,您可以使用以下PowerShell代码段,通过Invoke-RestMethod cmdlet删除VM映像:

10.jpg

使用通用化 VM 映像或专用化 VM映像部署 VM
使用通用化 VM 映像进行部署与使用 OS映像进行部署类似,因为这两种映像都已通用化。主要区别在于,使用 VM映像进行部署时,您无法添加额外的数据磁盘。VM映像中应该已经包含您最初添加到虚拟机中的数据磁盘。虚拟机部署后,您可以像在任何 VM中一样附加或移除磁盘。

与 Remove-AzureVMImage 类似,如果有两个映像的名称相同,平台会尝试确定使用哪个映像。如果平台无法确定引用的映像是否具有唯一性:是 OS映像还是 VM映像,将发生错误。

以下PowerShell代码段将使用我们先前创建的名为myFirstVMImage的VM映像部署大型虚拟机实例

11.jpg

现在我们看一下如何使用专用化 VM映像进行部署,因为专用化 VM映像稍有不同。 这种情况下不需要配置信息,因为映像没有通用化。使用专用化 VM 映像与使用磁盘类似。用户名和密码与(捕捉的)原始虚拟机相同。以下为脚本代码段:

12.jpg

文章太长?没有读?我们来回顾一下要点:
  • VM映像可以“通用化”或“专用化”,而 OS 映像只能“通用化”
  • 使用可选的 –OSState参数可以在Save-AzureVMImage cmdlet中表达您的意图:保存VM映像而不是OS映像
  • Save-AzureVMImagecmdlet不允许捕捉名称相同的VM映像或OS映像,但是使用多个客户端时您要小心。
  • Get-AzureVMImage现在会同时返回OS映像和VM映像。
  • 如果 OS映像和 VM映像拥有相同的名称,Remove-AzureVMImagecmdlet会阻止删除操作,因为平台无法确定用户意图
希望您觉得我们的PowerShell分步介绍有所帮助。如有任何疑问或评论,请随时与我们联系!
回头再聊……
Christine和 Kay



http://blog.csdn.net/azurechina/article/details/30503611

已有(1)人评论

跳转到指定楼层
ainubis 发表于 2015-4-1 21:00:56
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条