所以我有一个奇怪的问题:我正在使用打包程序在 VirtualBox 中自动安装 Ubuntu Server 20.04。我遵循以下示例: https://nickcharlton.net/posts/automating-ubuntu-2004-installs-with-packer.html
昨天我第一次尝试它时,它运行得非常好,packer 甚至能够通过 SSH 连接到安装后创建的虚拟机。然后我再次尝试(略有变化),它就停止工作了。从那以后,我就无法让它再次工作了。用户数据不再加载,安装程序以 GUI 运行,询问问题,好像没有运行自动安装一样。我已经确认(通过中止安装,然后按 Alt+F2 -> curl -lshttp://10.0.2.2:PACKERPORT) 虚拟机可以访问打包程序的 http 目录,其中有用户数据和元数据文件。
怎么会这样呢,它工作了一次,然后就停止工作了?这是什么鬼?我使用的是与示例中相同的启动命令。我已确认在 vm-boot-up 期间正确设置了启动命令。我的用户数据包含以下内容:
#cloud-config
autoinstall:
version: 1
identity:
hostname: test_vm
password: $6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0
username: testmann
locale: de_DE.UTF-8
keyboard:
layout: de
early-commands:
# otherwise packer tries to connect and exceed max attempts:
- systemctl stop ssh
ssh:
install-server: true
答案1
我最终能够通过向启动命令提供以下附加语句来修复它:
cloud-config-url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/user-data
我现在的整个 Boot-Command 是:
boot_command = [
"<enter><wait><enter><f6><esc><wait> ",
"autoinstall<wait>",
" cloud-config-url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/user-data<wait>",
" ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/'",
"<wait5><enter>"
]