是否可以通过引导提示向 Debian 安装程序添加变量,以便可以在预置文件中使用该变量?
特别是,我正在尝试解决以下问题:
我们有一个相当广泛的安装后脚本,通常从服务器下载。但现在我想创建 Packer 映像并将安装后脚本与其他 Packer 文件一起保存在版本控制中。要访问 preseed,我可以在启动命令中执行“preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg”。但现在我希望安装程序从同一位置下载安装后脚本。
目前,安装后挂钩如下所示:
d-i preseed/late_command string wget -q -O /tmp/postinstall.sh http://our.public.server/postinstall.jessie.sh ; sh /tmp/postinstall.sh
理想情况下,我想做类似的事情:
d-i preseed/late_command string wget -q -O /tmp/postinstall.sh http://{{ .HTTPIP }}:{{ .HTTPPort }}/postinstall.jessie.sh ; sh /tmp/postinstall.sh
但当然 Debian 安装程序不会用所需的值替换那些。所以我在想有可能将类似环境变量的变量传递给我们可以在预种子文件中使用的安装程序。
任何提示或提示表示赞赏!
编辑:尝试将 late_command 添加到引导命令中,但没有被采纳。
编辑:尝试预置/运行,但它在不允许 in-target 命令的不同环境中运行。
编辑:这可能是一种解决方法:如何在 debian preseed 文件中将命令连接在一起?但我更愿意将脚本放在单独的文件中。但是,如果不可能,那也不可能。
这取决于您使用的操作系统,但 Linux 内核将允许您将环境变量指定为内核参数。Linux 内核文档有一些很好的信息(重要段落加粗):
这是我的构建器
boot_command
中的部分virtualbox-iso
(适用于 Ubuntu 18.04):、
http_proxy
、和参数是完全可选的packer_host
,会被内核转换成环境变量。packer_port
hello
在我的
ubuntu.seed
文件中,我有以下行将hello
环境变量打印到文件中:当我导入并启动 OVA 时,该文件将
world
作为其内容位于我的主目录中。好的,我自己解决了(在@lieter_ 的帮助下)。不太自豪,但它有效:
这正是我所需要的,因为我们在安装时总是在命令行中添加一个 url=。
在寻求解决几乎相同的问题时,我了解到了
debian-installer
. 如果您在 URL 中要设置为其他命令执行其相对提取的点处preseed_fetch
添加 a,则可以使用从 URL 中提取。/./
rootpath
给定一个带有 preseed 文件夹的服务器和一个带有您要使用的其他文件的脚本文件夹,如果您通过了
url=http://{{.HTTPIP}}:{{.HTTPPort}}/http/./preseed/ubuntu.seed
,则可以引用相对于根路径的其他文件,例如preseed_fetch /scripts/somescript.sh /tmp/somescript.sh
.更多信息可在https://hands.com/di/lenny/start.cfg和https://hands.com/di/标题“url=magic”下找到。