Ich habe also ein seltsames Problem: Ich verwende Packer, um Ubuntu Server 20.04 automatisch in VirtualBox zu installieren. Ich folge diesem Beispiel: https://nickcharlton.net/posts/automating-ubuntu-2004-installs-with-packer.html
Gestern, als ich es zum ersten Mal ausprobiert habe, hat es wunderbar funktioniert. Packer konnte sogar per SSH eine Verbindung zu der VM herstellen, die nach der Installation erstellt wurde. Dann habe ich es erneut versucht (mit geringfügigen Änderungen) und es hat einfach aufgehört zu funktionieren. Seitdem bekomme ich es nicht mehr zum Laufen. Die Benutzerdaten werden nicht mehr geladen und das Installationsprogramm läuft mit GUI und stellt Fragen, als ob keine automatische Installation ausgeführt worden wäre. Ich habe dies bestätigt (durch Abbrechen der Installation und dann Alt+F2 -> curl -ls).http://10.0.2.2:PACKERPORT) dass das http-Verzeichnis des Packers von der VM aus erreichbar ist und sich dort Benutzerdaten- und Metadatendateien befinden.
Wie kann es sein, dass es einmal funktioniert hat und dann nicht mehr? Was zur Hölle? Ich verwende den gleichen Boot-Befehl wie im Beispiel. Ich habe bestätigt, dass der Boot-Befehl beim VM-Booten korrekt gesetzt ist. Meine Benutzerdaten enthalten Folgendes:
#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
Antwort1
Ich konnte das Problem schließlich beheben, indem ich dem Boot-Befehl diese zusätzliche Anweisung hinzufügte:
cloud-config-url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/user-data
Mein gesamter Boot-Befehl lautet jetzt:
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>"
]