Hyper-V 2012上的自动Linux虚拟机

我有要求在未来几个月内为我们的客户创build大量的linux虚拟机(我们运行托pipe基础架构),并且在自动化方面存在一个问题。

这是我需要它的工作方式:

  1. 用户访问他们的网页并创build一个虚拟机。
  2. VM是使用唯一的IP和名称创build的
  3. 用户通过SSHlogin

我非常了解Hyper-V,可以使用PowerShell,并且是一名C#程序员,所以事情的发展方面是照顾的。 我也足够了解Linux至less能胜任:我已经使用它多年,但没有做任何事情企业级的。

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

我的第一个想法是有一个随机生成的名称和IP已经创build的数据库,但我不知道如何让一个Linux虚拟机启动,从数据库中抓取一个…我想一个Kickstart脚本将照顾但我不知道该怎么做。

这就是我脑海中弹起的东西:

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

我的问题是,我不知道如何打开一个VHDX文件,并插入一个kickstart脚本…不能弄明白。

我到达这里,这个解决scheme可能会远离我…我更习惯于创buildWindows虚拟机与脚本等,我更熟悉…任何帮助,将不胜感激。

谢谢

米克

Windows本身不能安装ext3 / 4文件系统,而且大部分的软件包都是在我看来是不可信的。 所以这是出来的。

几个想法让你开始:

  • 设置一个可以随时运行的Linux虚拟机,用于configuration新的虚拟机。 在创build客户VM时,将VHDX附加到此configurationVM。 编写一个Web服务,执行您所需的定制。 您可以确定您正在通过使用SCSI ID挂载分区来自定义正确的VHDX,因为PowerShell会告诉您在连接VHDX时指定了哪个ID。
  • 最初通过PXE启动VM。 启动映像可以执行所需的定制,然后closures虚拟机,这将成为PowerShell脚本的信号,将引导顺序首先更改为硬盘驱动器,然后启动虚拟机。 如果你走这条路,我build议为了安全原因为PXE定制创build一个专用的VLAN。
  • 在您的映像中创build一个FAT分区,您可以在Windows中装入并将configuration文件复制到该分区。 您的Linux映像应该被configuration为在该位置查找脚本启动文件,或者包含脚本以在启动过程中将其复制到正确的位置。

我实际上编写了一个脚本,通过使用Samba和Winbind将它们重命名并将它们连接到AD域来configuration机器。

你需要做的是首先生成一个虚拟软盘驱动器,并写一个Microsoft unattend.xml文件给它。 我的供应脚本使用此文件并parsing计算机名称,NetBIOS和FQDN域名,以及用户/传递join到AD域。 你可以写一个文本文件到计算机的名称列表,然后PING为一个不响应的主机,然后使用该信息。

我依赖于DHCP的IP地址,但是如果你在模板机器上的文本文件中有一个名字/ IP配对,那也是可以的。 从DHCP开始,然后转换为静态IP。

你也可以看一下在FTP服务器上托pipeconfiguration文件,并更改你的dhclientconfiguration来获取新创build的DHCP选项,它将指向该文件,然后将其用于VMconfiguration。

有很多方法可以弄清楚如何做到这一点,但是肯定会占用相当多的脚本,并且每次都要正确设置模板。

它也将取决于你正在使用的Linux发行版。 目前,我的configuration使用Red Hat / CentOS 5.8,5.8,6.x与戴尔vWorkspace和Hyper-V或VMware ESX协同工作,目前正在完成Debian 7和Ubuntu 12.04 / 12.10。

-Stephen Yorke http://www.dezignnet.com