Hyper-V 2012 上的自动化 Linux VM

Hyper-V 2012 上的自动化 Linux VM

我需要在接下来的几个月内在 Hyper-V 2012 上为我们的客户(我们运行托管基础设施)创建大量的 Linux VM,但我遇到了自动化问题。

以下是我需要它如何工作:

  1. 用户访问他们的网页并创建一个虚拟机。
  2. VM 具有唯一的 IP 和名称
  3. 用户通过 SSH 登录

我对 Hyper-V 非常了解,可以使用 powershell,而且我是一名 C# 程序员,因此开发方面的事情已经搞定了。我对 Linux 也有足够的了解,至少可以胜任:我断断续续用过 Linux 很多年,但还没有用它做过任何企业级的事情。

所有这些都可以通过手动过程轻松完成,但我需要能够编写脚本或编程来实现自动化,因为可能有数百个正在创建但我不知道如何做。

我的第一个想法是有一个已经创建的具有随机生成的名称和 IP 的数据库,但我不知道如何让 Linux VM 启动并从数据库中获取一个...我想 Kickstart 脚本会处理它但我不知道从那里该怎么做。

我的脑子里浮现的是这样的:

  1. 创建一个 std linux 版本。- 很容易做到
  2. 有人点击“创建虚拟机”,然后我从数据库中提取名称和 IP,并将其写入 kickstart 脚本。- 很容易做到
  3. 然后我可以打开模板 VHDX 文件并复制脚本,然后保存它。- 不确定是否可能
  4. 用户启动新的 VM,kickstart 脚本为其提供我分配的名称和 IP。

我的问题是我不知道如何打开 VHDX 文件并在其中插入 kickstart 脚本...无法弄清楚。

我到达这里,这个解决方案可能还很遥远...我更习惯使用脚本创建 Windows VM,等等,我对此更熟悉...任何帮助都将不胜感激。

谢谢

米克

答案1

Windows 无法在本机安装 ext3/4 文件系统,而且大多数可以安装此文件系统的软件包(在我看来)都不可靠。所以这是不可能的。

以下是一些可以帮助您入门的想法:

  • 设置一个始终运行的 Linux VM,用于配置新 VM。创建客户 VM 时,将 VHDX 附加到此配置 VM。编写一个执行所需自定义的 Web 服务。您可以通过使用 SCSI ID 安装分区来确保自定义正确的 VHDX,您会知道这一点,因为 PowerShell 会告诉您在附加 VHDX 时分配了什么 ID。
  • 首先通过 PXE 启动虚拟机。启动映像可以执行您需要的自定义,然后关闭虚拟机,这将向您的 PowerShell 脚本发出信号,将启动顺序更改为首先启动硬盘驱动器并启动虚拟机。如果您采用这种方式,出于安全原因,我建议为 PXE 自定义创建专用 VLAN。
  • 在映像中创建一个 FAT 分区,您可以在 Windows 中安装该分区并将配置文件复制到其中。您的 Linux 映像应配置为在该位置查找启动文件,或包含一个脚本以在启动期间将其复制到正确的位置。

答案2

我实际上编写了一个脚本,该脚本将通过重命名机器并将其加入到使用 Samba 和 Winbind 的 AD 域来配置机器。

不过,您需要做的是首先生成一个虚拟软盘驱动器,并向其中写入 Microsoft unattend.xml 文件。我的配置脚本使用此文件并解析计算机名称、NetBIOS 和 FQDN 域名以及加入 AD 域的用户/密码。不过,您可以只向机器写入一个包含计算机名称列表的文本文件,然后对无响应的主机执行 PING,然后使用该信息。

我依靠 DHCP 来获取 IP 地址,但如果您在模板机器上的文本文件中有一个名称/IP 配对,那么也可以正常工作。从 DHCP 开始,然后转换为静态 IP。

您还可以考虑在 FTP 服务器上托管配置文件,并更改 dhclient 配置以获取指向所述文件的新创建的 DHCP 选项,然后将其用于 VM 配置。

有很多方法可以让你弄清楚如何做到这一点,但每次肯定需要大量的脚本编写和正确设置模板。

这还取决于您正在使用的 Linux 发行版。目前,我的配置与 Dell vWorkspace 和 Hyper-V 或 VMware ESX 配合使用,使用 Red Hat/CentOS 5.8、5.8、6.x,目前正在最终确定 Debian 7 和 Ubuntu 12.04/12.10。

-Stephen Yorke www.dezignnet.com

相关内容