我正在尝试找到最佳实践的现代方法来完成我过去所做的事情python-vm-builder(又名 ubuntu-vm-builder)。
我想要一个脚本化、可重复的方式从类似ubuntu 核心(又名艺术家原名为操作系统)、添加一些包、定义首次运行脚本等。
我追求的是类似于旋转自定义 ISO 的东西(尽管它不是 ISO,但它将是一个“已安装”的系统)。结果需要是适合使用 NFS 进行无盘 PXE 启动的内核、initrd 映像和 rootfs。
用什么工具来创建 Ubuntu 网络启动映像(或任何 Ubuntu 映像)?它们是否足够灵活,可以满足我的需求?
用于创建 Ubuntu 集成测试的全新安装环境的工具怎么样?它们合适吗?
请注意,在运行时,rootfs 将以只读方式挂载,因此我不希望随着时间的推移管理实例。我希望在每次发布新的 Ubuntu 版本时以及在 6 个月内定期重新进行自动安装。
答案1
您可以直接使用官方云映像,然后使用cloud-localds
(从cloud-utils
包中)创建一个小型 ISO 映像作为 cloud-init 的“nocloud”数据源。
然后您可以使用 cloud-init userdata(例子)作为一种单一机制来添加软件包并在提供官方 Ubuntu Cloud 映像的云提供商以及本地虚拟机上运行您自己的首次运行脚本。
如果您cloud-localds
不带参数运行,它将显示示例用法,以直接使用 kvm 配置和运行 VM。
要以其他方式运行虚拟机,只需提供一个云映像(例如从https://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img您将安装 12.04 版 ISO 文件作为第一张磁盘,并将输出的 ISO 映像cloud-localds
作为 CD-ROM 呈现。
更多信息Scott Moser 的博客文章。
答案2
我从来没有打包过 ISO,所以我无法根据自己的经验发表评论,但看起来你的问题的答案是 Cobbler (http://cobbler.github.com)。
摘自 Ubuntu 社区文档:
“Ubuntu 使用 cobbler 作为 Ubuntu 机器的首选配置服务器。” - https://help.ubuntu.com/community/Cobbler
答案3
对于那些正在寻找这个问题答案的人来说,Oz (https://github.com/clalancette/oz)看起来确实不错。