[pve-devel] [RFC PATCH installer 0/5] fix #5579: allow specifying optional first-boot script
Christoph Heiss
c.heiss at proxmox.com
Wed Nov 13 14:59:02 CET 2024
This implements #5579 [0] as proposed by Thomas [1].
Sending it as an RFC as probably some bike-shedding has still to be done
anyway, in regards of naming/filesystem locations etc. -- but should
give an good idea how it can/should work in the end.
Adds a new (optional) section to the auto-installer answer file called
`first-boot`, which can be used to the configure a script/executable
file to run on the first boot after the installation.
To used the baked-in (via the `proxmox-auto-install-assistant prepare-iso
--on-first-boot`) file from the ISO:
[first-boot]
source = "from-iso"
Or fetching it from a URL:
[first-boot]
source = "from-url"
url = "http://example.com/first-boot"
cert_fingerprint = ".." # if needed
The structure the section is mostly taken from the `network` section to
provide consistency.
[0] https://bugzilla.proxmox.com/show_bug.cgi?id=5579
[1] https://bugzilla.proxmox.com/show_bug.cgi?id=5579#c5
Inner workings
==============
This creates a new package `proxmox-first-boot`, which only has a
systemd .service file. The service is conditioned to start based on the
existence of a flag file in /var/lib/proxmox-first-boot, which will
be created by the installer if such a script is supplied by the user.
Q: The condition could maybe be set directly on the script instead of a
separate file, since the executable file is only present when
supplied anyway?
Testing
=======
Tested this with the latest (8.2-2) PVE ISO, both baking it into the ISO
and fetching it from an URL. Did not test with PBS explicitly (yet), but
I see no reason why it shouldn't work, as it is completely
product-agnostic.
Diffstat
========
Christoph Heiss (5):
common: add function for issuing HTTP GET requests
fix #5579: first-boot: add initial service packaging
fix #5579: auto-install-assistant: enable baking in first-boot script
fix #5579: auto-installer: add optional first-boot hook script
fix #5579: install: copy over `proxmox-first-boot` script if present
Makefile | 13 +++-
Proxmox/Install.pm | 20 ++++++
debian/control | 7 ++
debian/proxmox-first-boot.install | 1 +
debian/rules.proxmox-first-boot | 13 ++++
proxmox-auto-install-assistant/Cargo.toml | 1 +
proxmox-auto-install-assistant/src/main.rs | 17 +++++
proxmox-auto-installer/Cargo.toml | 2 +-
proxmox-auto-installer/src/answer.rs | 27 +++++++
.../src/bin/proxmox-auto-installer.rs | 42 +++++++++--
proxmox-auto-installer/src/utils.rs | 15 +++-
proxmox-first-boot/Makefile | 11 +++
.../etc/proxmox-first-boot.service | 16 +++++
proxmox-installer-common/src/http.rs | 71 +++++++++++++------
proxmox-installer-common/src/lib.rs | 3 +
15 files changed, 227 insertions(+), 32 deletions(-)
create mode 100644 debian/proxmox-first-boot.install
create mode 100644 debian/rules.proxmox-first-boot
create mode 100644 proxmox-first-boot/Makefile
create mode 100644 proxmox-first-boot/etc/proxmox-first-boot.service
--
2.47.0
More information about the pve-devel
mailing list