Hyper-V 2012 上的自动化 Linux VM

Mic*_*ick 5 automation linux hyper-v kickstart

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

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

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

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

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

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

这是我脑子里蹦蹦跳跳的东西:

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

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

我到达这里,这个解决方案可能还有数英里……我更习惯于使用脚本创建 Windows VM,等等我更熟悉……任何帮助将不胜感激。

谢谢

米克

lon*_*eck 1

Windows 无法原生挂载 ext3/4 文件系统,而且大多数用于挂载的软件包(在我看来)都是不值得信赖的。所以就这样了。

一些帮助您入门的想法:

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