我们之前的ISO生成方法:
- 下载 ISO
- 安装 ISO
- 将文件从 iso 复制到新目录
- 修改bootmenu.cfg、grub.cfg等文件
- 添加预置
- 使用以下方式构建 ISO
xorriso
我们通过 ansible 和其他一些自动化方法在虚拟机管理程序上很好地利用了虚拟机的 cloud-init。因此,我们在使用 cloud-init 时没有遇到任何问题。但是,由于删除了 Debian 安装程序,因此需要将我们的流程调整为新的“cloud-init”唯一方法,如下所示:Ubuntu 自动安装 Wiki 页面
他们的所有示例似乎都是针对 KVM VM 的。我找不到任何文档来说明如何在没有 PXE 启动的情况下为物理服务器完成相同的任务。
根据他们的自动安装快速启动,每次“自动化”安装都需要安装多个映像/文件。当尝试在拥挤的数据中心/通过 IDRAC 启动多个自动化安装时,这是不可接受的。
我们研究过 MAAS,并且过去也使用过它。简而言之,对于某些情况,PXE 启动并不是我们喜欢的选项。
我如何恢复使用首选的 cloud-init 方法生成单个、可安装且可启动的 ISO 文件的能力?
TLDR;我们过去常常通过安装 ubuntu 提供的 iso、修改映像文件,然后使用重新创建可刻录的单个 ISO 来创建预置 iso 映像xorriso
。如何通过 cloud-init 完成相同的任务。
研究的选项:
无云- 被拒绝,因为再次,只有示例使用 VM,如果我可以以某种方式将其插入到 iso 中,我会很乐意使用 cloud-init 文件。
CENTOS 论坛:我能找到的有关云初始化方法的最佳指南。
Ubuntu 快速入门指南 - 也仅在示例中列出了虚拟机
Openstack 镜像指南- 一些信息,但没有关于从中构建实际 ISO 或图像的信息。
当我们创建 ISO 时,我们使用 grub 菜单中的 linux 命令来启动自动安装:
menuentry "Install Ubuntu Server for IT" {
set gfxpayload=keep
linux /install/vmlinuz file=/cdrom/preseed/customubuntu.preseed debian-installer/locale=en_US console-setup/ask_detect=false console-setup/layoutcode=us keyboard-configuration/xkb-keymap=us auto=true priority=critical quiet ---
initrd /install/initrd.gz
}
如何创建一个好的 grub 菜单项命令来在同一文件系统/ISO 上使用 cloud-init 文件?
就像是:
linux /install/vmlinuz file=/cdrom/cloudinit/userdata file=/cdrom/cloudinit/metadata console-setup/ask_detect=false console-setup/layoutcode=us keyboard-configuration/xkb-keymap=us auto=true priority=critical quiet ---
更新: s3rj1k 的 GIST提供了一个非常有趣的配置,类似于我们以前的预置方法。我现在正在测试它。
答案1
既然没有答案,我就回答我自己的问题。
此论坛主题Ubuntu 话语讨论 随着:s3rj1k 的 GIST
为新的自动安装程序提供可用的 ISO 创建模型。当前的问题围绕用户数据和身份,这使得自动安装的 ISO 没有真正可用的用户,除非您使用s3rj1k 的方法,只需修改根并在创建后不久使其过期,这种方法有效,但在我看来存在一些安全问题。