我正在尝试学习 Packer,使我能够为我的虚拟机创建模板/黄金映像。从长远来看,我希望能够让 CI/CD 管道中的 Packer 不断更新我的虚拟机的映像。
现在我尝试使用
virtualbox-iso
作为我的构建器类型为 Ubuntu 桌面 ISO 创建映像。这意味着为了实现此过程的自动化,我遇到了新的挑战,例如 "boot_command"
、preseed.cfg
和 vmlinuz
等等。
我想了解的第一件事是
boot_command
使用网上找到的示例。定义:
boot_command 指定首次启动虚拟机时要键入的键,以启动操作系统安装程序。
示例:
"boot_command": [
"<esc><wait>",
"<esc><wait>",
"<enter><wait>",
"/install/vmlinuz<wait>",
" auto<wait>",
...
我见过很多使用以下命令的示例:
bs
和esc
。这对我来说没有意义,因为我从未在计算机或虚拟机启动期间使用过它们。
我的问题是:
1. 为什么使用这些命令?
2. 在这种特殊情况下他们会做什么?
谢谢。
boot_command
只不过是按键的列表,打包器将发送到虚拟机。它是一个字符串列表,只是为了便于阅读。如果需要,您也可以将所有命令放入一行。
如果您将文本写入
boot_command
,打包器将准确地将此文本发送到VM。为了模拟不可打印字符的击键,packer 提供了 <...>
语法来“按下”按键,例如:
<esc>
<bs>
要获得适合您系统的
boot_command
,只需手动执行一次安装并记下您按的键。然后告诉打包机帮你压。