我已阅读全文自动安装文档和整个cloud-init 文档但是我仍然不明白在自动安装中安装软件包的能力与通过用户数据部分安装软件包的能力之间明显的重叠/冗余。
我想要的是安装软件包并将它们嵌入到我的镜像中。我不想在克隆镜像时等待软件包安装完成。
这个帖子并非专门用于安装软件包,但它让我意识到存在“安装环境”和“已安装环境”(或者“目标”是更好的术语?)。我认为如果我理解了它们的工作原理,那将会有所帮助。
另外相关的是,我认为,“首次启动”是否发生在自动安装过程中,或者“首次启动”是否发生在我克隆映像时?
自动安装和用户数据之间存在其他冗余...但我认为如果我能更好地理解上述内容会有所帮助。
为了记录,我正在使用打包程序在 Proxmox 中创建模板。
答案1
如果你使用这样的自动安装配置
#cloud-config
autoinstall:
packages:
- cowsay
user-data:
packages:
- rolldice
cowsay
安装过程中将安装该软件包。安装rolldice
时将通过云初始化在首次启动时。
如果封装目标是将封装“烘焙”到图像中,那么cowsay
应该使用该方法。
部分中的所有内容user-data
都会被云初始化。您可以看到它被放入/etc/cloud/cloud.cfg.d/99-installer.cfg
已安装的系统中。
笔记
- 我也避免使用该
user-data
方法,因为云初始化将在每次启动时尝试安装或升级软件包。 - 示例中的包并没有什么特别之处。它们只是很小、很简单,并且易于测试。
- 我使用 Ubuntu 22.04 (
subiquity 22.04.2
) 进行了测试。