我们有一台 Ubuntu 10.04 服务器,运行 KVM 非常好,但是无法找到最干净(也是最快)的方式来进行 10.04 客户端的无人值守安装。
要求:
必须使用 LVM 卷作为客户机的存储(无需进行某些 qemu-img 转换或类似操作)
必须使用 virtio 进行网络和磁盘存储(最好不要对 XML 文件进行黑客攻击)
必须使用本地镜像 - 因此很快(例如<5分钟)
真的真的想要它是完全自动化和非交互式的。(即启动它并在几分钟后运行一个功能系统)
会喜欢能够在启动时指定 ip 地址,因此无需查看 dhcp 服务器就可以轻松访问。
会喜欢能够指定不同的风格/发行版/版本等。
选项1: 我们不喜欢从 virt-manager UI 执行此操作——因为您必须在物理服务器上(而不是远程使用 virt-manager)才能安装到 LVM 分区。这确实有效,但您必须在服务器上运行 VNC 和 Gnome,这并不好。此外,它是交互式的,您必须单击很多选项,无论如何,我们仍然希望编写执行此操作的包装器脚本。
选项 2: python-vm-builder 包中的 vmbuilder 似乎正是我们想要的——因为您可以指定本地镜像(为此使用 apt-proxy)但无法让它使用 LVM 卷,也无法将 virtio 用于磁盘。
vmbuilder kvm ubuntu --suite=lucid --flavour=virtual --arch=amd64 --mirror=http://192.168.1.1:9999/ubuntu-o --libvirt=qemu:///system --ip=192.168.1.94 --part=vmbuilder.partition --raw=/dev/VG0/LVtest --templates=mytemplates --firstboot=/root/vm/boot.sh --user=linuxadmin --name=linuxadmin --pass=secretpass --mem=256 --hostname=test --bridge=br0
这只会忽略 --raw= 部分并创建一个 qcow 映像文件 -- 并且不使用 virtio。我怀疑我可以将映像文件转换为 LVM 卷并在 XML 中手动添加 virtio 内容,但这似乎很烦人而且很混乱。
选项 3: 这是我们正在使用的,但它不是最佳的 - 因为它很笨重,不允许我们指定 IP 地址,并且我们实际上无法动态控制(从安装命令/脚本)kickstart 文件中硬编码的一些参数。
手动创建逻辑卷 - 然后...
# virt-install --connect qemu:///system -n test -r 1024 --vcpus=1 --disk path=/dev/VG0/LVvm-test model=virtio --pxe --vnc --noautoconsole --os-type linux --os-variant virtio26 --accelerate --network=bridge:br0 --hvm
这将转到 PXE 启动服务器,该服务器指向带有 kickstart 文件的本地安装服务器,该文件可执行大量配置。它确实将 virtio 用于网络和磁盘,所以这很好。它确实使用本地镜像和 LVM,这意味着它满足我们的最低要求,但我们希望它是 100% 自动化的。现在,您必须连接到 VNC 控制台(通过 virt-manager)并在 Lucid 安装程序上选择“安装”——这样就会破坏全自动操作。当然,您必须查看系统日志以查看它获得的 IP 地址,以便您可以 ssh 到该框。
当然,我们不是唯一想要这个功能的人!!!
答案1
在 RHEV 中,您只需从现成的模板部署虚拟机,该模板基本上是原始模板映像的副本或快照(以节省空间)
我很确定,如果您拥有包含所有内容的黄金映像,您可以将其设置为模板,然后您的脚本将使用 qemu-img 甚至 dd 对其进行克隆。
模板应该具有特定于 VM 的详细信息,例如剥离的 ssh 密钥(RHEL/Fedora 中的 sys-unconfig,不知道如何在 Ubuntu 中执行此操作),因此当启动从中部署的 VM 时,您将重新获得该数据。
答案2
我会选择选项 2,但你必须破解 vmbuilder,因为它不使用 UUID 挂载(因此,即使您将 libvirt XML 模板更改为使用 virtio,vmbuilder 也会将 /dev/sd* 硬编码到 /etc/fstab 中);--raw
应该可以工作,尽管——请针对此情况提交错误报告。
就我个人而言,我正在考虑使用 virt-install(创建 VM 并初始化其磁盘)和使用预置文件在自动模式下进行 PXE 启动的 debian-installer 的组合。
答案3
给 Cobbler ( 怎么样?https://fedorahosted.org/cobbler/) 尝试一下?
答案4
选择第三个选项非常容易,让清晰的安装程序自动启动,而不必等待您按回车键。
在我们的例子中,我重新制作 ISO 并从中启动。只需将 isolinux.cfg 更改为具有默认标签即可。对 PXE 执行此操作基本上是相同的。
然后您可以使用预置文件指定任何内容(包括 IP!)。
https://help.ubuntu.com/10.04/installation-guide/i386/preseed-using.html