[SOLVED] Automated install never makes HTTP request for answer file

champskarl

New Member
Jan 22, 2025
1
1
1
Hello!
I am attempting to automate the install of Proxmox VE following the instructions at https://pve.proxmox.com/wiki/Automated_Installation .
I have run into a bit of a problem where the PVE installer does not make the HTTP POST request to get the answerfile.

PVE Version: 8.3

Install Logs
Code:
Welcome to the Proxmox VE 8.3 installer   [ initrd  1.54GiB  100%  22.48MiB/s ]                                   |
initial setup startup                                                                                             |
mounting proc filesystem                                                                                          |
mounting sys filesystem                                                                                           |
EFI boot mode detected, mounting efivars filesystem                                                               |
boot comandline: BOOT_IMAGE=(tftp)os/proxmox/linux26 ramdisk_size=16777216 rw quiet splash=silent console=ttyS1,57|
600n8 proxmox-start-auto-installer                                                             |
console is ttyS1                                                                                                  |
loading drivers:  nvidiafb ahci mac_hid acpi_pad wmi ipmi_si ipmi_ssif i2c_i801 ehci_pci intel_pch_thermal acpi_cp|
ufreq efi_pstore pcspkr intel_cstate rapl aesni_intel sha1_ssse3 sha256_ssse3 ghash_clmulni_intel polyval_clmulni |
crc32_pclmul crct10dif_pclmul kvm_intel intel_powerclamp x86_pkg_temp_thermal intel_rapl_common                   |
found proxmox ISO image inside initrd image                                                                       |
preparing installer mount points and working environment                                                          |
switching root from initrd to actual installation system                                                          |
Starting Proxmox installation                                                                                     |
EFI boot mode detected, mounting efivars filesystem                                                               |
Installing additional hardware drivers                                                                            |
Starting hotplug events dispatcher: systemd-udevd.                                                                |
Synthesizing the initial hotplug events (subsystems)...done.                                                      |
Synthesizing the initial hotplug events (devices)...done.                                                         |
Waiting for /dev to be fully populated...done.                                                                    |
mount: devpts mounted on /dev/pts.                                                                                |
/bin/dbus-daemon                                                                                                  |
starting D-Bus daemon                                                                                             |
Setting terminal size to 80x24 for serial install
Preparing DHCP as potential source to get location of automatic-installation answer file
Attempting to get DHCP leases... Internet Systems Consortium DHCP Client 4.4.3-P1
Copyright 2004-2022 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/ens1f1np1/0c:42:a1:19:a3:83
Sending on   LPF/ens1f1np1/0c:42:a1:19:a3:83
Listening on LPF/ens1f0np0/0c:42:a1:19:a3:82
Sending on   LPF/ens1f0np0/0c:42:a1:19:a3:82
Sending on   Socket/fallback
DHCPDISCOVER on ens1f1np1 to 255.255.255.255 port 67 interval 3
DHCPDISCOVER on ens1f0np0 to 255.255.255.255 port 67 interval 6
DHCPOFFER of 192.168.48.13 from 192.168.48.1
DHCPREQUEST for 192.168.48.13 on ens1f0np0 to 255.255.255.255 port 67
DHCPACK of 192.168.48.13 from 192.168.48.1
bound to 192.168.48.13 -- renewal in 129 seconds.
done
Starting chrony for opportunistic time-sync...
Starting a root shell on tty3.
trying to detect country...
detected country: US
Caching device info from udev

Automatic installation selected but no config for fetching the answer file found!
Starting debug shell, to fetch the answer file manually use:
  proxmox-fetch-answer MODE >/run/automatic-installer-answers
and enter 'exit' or press 'CTRL' + 'D' when finished.
root@proxmox:/#

Per the guide above (Under the headers "Prepare an Installation ISO" > "Answer Fetched via HTTP" ) I have configured the URL to be provided via DHCP options.
I have verified the PVE installer gets the options based on the contents of /var/lib/dhcp/dhclient.leases
Code:
lease {
  interface "ens1f0np0";
  fixed-address 192.168.48.13;
  option subnet-mask 255.255.252.0;
  option routers 192.168.48.1;
  option dhcp-lease-time 300;
  option dhcp-message-type 5;
  option domain-name-servers 8.8.8.8;
  option dhcp-server-identifier 192.168.48.1;
  option broadcast-address 192.168.51.255;
  option proxmox-auto-installer-manifest-url "http://192.168.48.1:4080/v1/api/proxmox";
  renew 3 2025/01/22 15:53:07;
  rebind 3 2025/01/22 15:55:12;
  expire 3 2025/01/22 15:55:50;
}

However it never reaches out to the url http://192.168.48.1:4080/v1/api/proxmox.
I have verified this by running tcpdump on the webserver, there is no traffic coming from the system running the PVE install.

At the end of the install logs it indicates I can continue the install by running the following:
Code:
proxmox-fetch-answer http http://192.168.48.1:4080/v1/api/proxmox >/run/automatic-installer-answers

This executes just fine, http request gets made and the answerfile is returned with no problems, I can then continue the install.

Question based on the error phrasing:
Do I still need to run the ISO through proxmox-auto-install-assistant when providing the answerfile via DHCP?
The guide makes it seem like its either/or, not a requirement when using HTTP + DHCP options.

Would anyone be able to help me figure this out?
Thanks in advance!
 
  • Like
Reactions: elvtechnology
Hi,

Do I still need to run the ISO through proxmox-auto-install-assistant when providing the answerfile via DHCP?
first of, this is always necessary as the auto-installer-mode is not activated by default in our ISOs, as is also indicated in the documentation:
To use the automated installation, it is first necessary to choose a source from which the answer file is fetched from and then prepare an installation ISO with that choice.

For providing an answerfile via DHCP, using
Code:
proxmox-auto-install-assistant prepare-iso --fetch-from http path/to/original.iso --output path/to/output.iso
should be enough.
 
  • Like
Reactions: elvtechnology
first of, this is always necessary as the auto-installer-mode is not activated by default in our ISOs, as is also indicated in the documentation:

I think there is room for improvement in the docs as I too was tripped up by this.

The way I interpreted the docs was that I only needed to rebuild the ISO if I wanted to hardcode any settings, which I didn't as it was all being supplied by DHCP.

This was also supported as I had to pass the "proxmox-start-auto-installer" kernel parameter, so I kind of assumed that further ISO modifications were unneccessary at that point.
 
  • Like
Reactions: UntouchedWagons
Yeah I have to agree the whole setup is very unintuitive. I'm wrangling with the automated installer trying to POST a request to the answer file I specified and nginx is returning an HTTP 405 error then the installer falls over and dies. Like yeah of course POST-ing a text file failed, it's a text file.
Code:
proxmox-auto-install-assistant prepare-iso --fetch-from http path/to/original.iso --output path/to/output.iso
should be enough.
This should be on the wiki page :)
 
Yeah I have to agree the whole setup is very unintuitive. I'm wrangling with the automated installer trying to POST a request to the answer file I specified and nginx is returning an HTTP 405 error then the installer falls over and dies. Like yeah of course POST-ing a text file failed, it's a text file.

This should be on the wiki page :)
If it helps, the easiest way for me to work around the issue was to use a simple PHP file that simply serves the static TOML file. As the PHP script can respond to POST requests, it works well and is only a few lines. It does mean you need PHP but that's at least fairly common and more flexible than running a dedicated web server with Python as some of the Proxmox example shave you do.

As a suggestion to the Proxmox devs, since we have to modify the ISO and specify the ansfer file retrieval method, how about allowing us to specify HTTP GET or HTTP POST instead of just HTTP.

This way, those that need the added granularity and flexibility of HTTP POST can continue to do so, while the bunch of us who are just serving static files can also do so without needing a bunch of creative anbd overkill workarounds.