如何使用 PXE 和实时服务器映像进行全自动 Ubuntu 20.04 服务器安装?
原因
随着 20.04 版本的发布,Ubuntu 似乎正在进一步推动实时服务器安装程序 ( subiquity ) 选项。debian-installer (di) 映像已重命名为 legacy。我通常喜欢的 netboot 安装程序也是如此。20.04 版本还为实时服务器安装程序引入了一个新的自动安装选项。
如何使用 PXE 和实时服务器映像进行全自动 Ubuntu 20.04 服务器安装?
随着 20.04 版本的发布,Ubuntu 似乎正在进一步推动实时服务器安装程序 ( subiquity ) 选项。debian-installer (di) 映像已重命名为 legacy。我通常喜欢的 netboot 安装程序也是如此。20.04 版本还为实时服务器安装程序引入了一个新的自动安装选项。
使用 PXE 全自动安装 Ubuntu 20.04 服务器
这些是使用 PXE 和实时服务器映像进行全自动 Ubuntu 20.04 服务器安装的步骤。我发现这个过程被简单记录并充满了问题。在这些步骤中,我在基于UEFI的服务器上安装 20.04。
编辑:这些步骤适用于通过 pxelinux 在裸机或虚拟机 VM 上部署 Ubuntu 20.04的基于BIOS的服务器,cloud-init 不会获取用户数据文件
编辑:这些步骤是专门为
20.04
Ubuntu (subiquity 20.04.3
) 的发布而创建的。版本subiquity
随每个版本而变化。例如20.04.3
Ubuntu 的发行版有subiquity 21.08.2
. 由于正在积极开发subiquity
这篇文章中的某些信息,因此对于较新的版本并不完全准确。这些步骤可能有许多变化。它们可以根据个人需求进行定制和定制。目标是提供一个示例来说明如何实现这一目标并帮助其他用户克服遇到的问题。
关于安装程序的链接
配置参考
源代码
搭建一个tftp服务器
以下所有步骤均以 root 身份运行。这些在 Ubuntu 18.04 服务器上进行了测试。
安装 tftp 服务器和 web 服务器
配置 apache 以提供来自 tftp 目录的文件
下载实时服务器iso
从实时服务器 iso 中提取内核和 initramfs
下载 grub 映像以通过 PXE 加载
配置 grub。此配置将提供全自动引导选项以及手动引导选项
使用自动安装配置配置cloud-init。我首先手动运行安装以获取生成的
/var/log/installer/autoinstall-user-data
文件作为基础。然后我根据我的需要和遇到的错误进行了修改。配置 DHCP
根据 DHCP 服务器的文档设置 DHCP 选项 66,67。
启动你的服务器
此时,您应该能够启动基于 UEFI 的服务器并执行完全自动安装。
遇到的错误
cloud-config-url=/dev/null
内核参数将防止cloud-init
不必要地下载iso,从而减少所需的内存,减少网络流量并加快启动时间。/var/log/installer/autoinstall-user-data
文件被以下几种方式破坏version
属性,导致验证失败。我添加了属性network
部分需要另一层嵌套。配置参考中提到了此错误preserve
需要将每个项目的属性storage
config
设置为false。否则curtin不会安装在空白磁盘上keyboard
属性toggle
设置为 null,导致验证失败。我只是删除了该属性reorder_uefi
。幸运的是,subiquity恰好将此配置传递给curtinapt
选项geoip
似乎不起作用。总是有 geoip 请求的日志size: 512M
)会导致大小存储为浮点数,从而在将 LVM 卷大小调整为百分比时导致错误。避免人类可读的值似乎可以解决这个问题其他缺失的功能
我没有深入研究这些。它们基于我的预置文件会做什么。他们中的大多数可能可以通过巧妙地使用
early-commands
、late-commands
和cloud-init来修复。我可能也错过了一些东西apt-cacher-ng
apt,但它不能作为通用代理。安装程序假定您配置的任何代理都适用于所有内容interactive-sections
,但这会导致 3 次暂停late-commands
,但我没有尝试/run/kernel-meta-package
. 这是linux-generic
在 initramfs 中硬编码的。我更喜欢将linux-virtual
包用于虚拟机。我能够使用cloud-init配置来覆盖文件编辑 1
/target/var/lib/cloud/seed/nocloud-net/user-data
cloud-init 在首次启动期间使用的结果文件。回复表明该lock-passwd
物业有错字,可能会影响部分用户我在用户数据文件的“用户数据”部分设置了时区,并在那里设置了 root 密码;像这样: