adamant-kite-43734
08/19/2025, 11:06 AMacoustic-addition-45641
08/19/2025, 12:42 PMfancy-fountain-55453
08/19/2025, 1:11 PMfancy-fountain-55453
08/19/2025, 2:42 PMfancy-fountain-55453
08/19/2025, 2:44 PMthousands-advantage-10804
08/19/2025, 2:47 PMthousands-advantage-10804
08/19/2025, 2:52 PMfancy-fountain-55453
08/19/2025, 3:07 PMfancy-fountain-55453
08/19/2025, 3:08 PMthousands-advantage-10804
08/19/2025, 3:14 PMfancy-fountain-55453
08/19/2025, 3:15 PMacoustic-addition-45641
08/19/2025, 6:55 PMthousands-advantage-10804
08/19/2025, 6:59 PMprehistoric-morning-49258
08/19/2025, 7:09 PMkargs like harvester.install.automatic=true harvester.install.config_url etc and it will install from ISO? we've basically done this before in a pinchfancy-fountain-55453
08/19/2025, 7:29 PMUser and network data are passed to the instance via a so called _config drive_, which is a small additional disk partition created on the root device during provisioning. so it also boils down auto mounting some config as a separate partition.fancy-fountain-55453
08/19/2025, 7:30 PMprehistoric-morning-49258
08/20/2025, 5:57 AMthousands-advantage-10804
08/20/2025, 2:37 PMthousands-advantage-10804
08/20/2025, 2:39 PMkernel ${live_endpoint}/harvester/harvester-v1.5.1-vmlinuz-amd64 ip=dhcp net.ifnames=1 console=tty1 rd.cos.disable root=live:${live_endpoint}/harvester/harvester-v1.5.1-rootfs-amd64.squashfs rd.noverifyssl harvester.install.iso_url=${live_endpoint}/harvester/harvester-v1.5.1-amd64.iso harvester.install.automatic=true harvester.install.config_url=${live_endpoint}/harvester/harvester_slim.yaml
the kernel needs to know the location of the config file.
Crap *Note*: image.checksum, rootDeviceHints, networkData and userData will not be used since the image is not written to disk.fancy-fountain-55453
08/20/2025, 2:48 PMsince this is living rent free in my head.. - I know the feeling ๐ today I mobilized people to fix the bare metal network in our small DC so I can experiment ๐
@thousands-advantage-10804 regarding extra kernel params I found this https://github.com/metal3-io/baremetal-operator/blob/4409f7185cef78b4162da8a4c5acb[โฆ]546/config/base/crds/bases/metal3.io_preprovisioningimages.yaml
I need to dig into this, but even if some option is lacking it's just pull request to metal3 away from beeing added ๐thousands-advantage-10804
08/20/2025, 3:01 PMfancy-fountain-55453
08/26/2025, 10:55 AMapiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: hdd-n1
spec:
online: true
bootMACAddress: '3c:ec:ef:aa:b4:78'
bmc:
address: <ipmi://172.20.1.21:623>
credentialsName: hdd-n1-registration-secret
image:
checksumType: sha256
checksum: <http://172.20.110.2:6180/images/SHA256SUMS>
format: qcow2
url: <http://172.20.110.2:6180/images/jammy-server-cloudimg-amd64.img>
userData:
name: user-data-secret
networkData:
name: hdd-n1-networkdata-secret
At the end of this, you get a bmh with all ssh keys injected, created users, manually assigned ip etc.
As for harvester, after some trial and error, I arrived at:
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: hdd-n1
spec:
online: true
bootMACAddress: '3c:ec:ef:aa:b4:78'
bmc:
address: <ipmi://172.20.1.21:623>
credentialsName: hdd-n1-registration-secret
image:
# Harvester
checksumType: sha512
checksum: <http://172.20.110.2:6180/images/harvester-v1.6.0-rc6-amd64.sha512>
format: live-iso
url: <http://172.20.110.2:6180/images/harvester-v1.6.0-rc6-amd64.iso>
It does load the harvester iso, the grub screen (attached) and then it fails on some /dracut-state.sh failing to find /dev/disk/by-label/COS_LIVE disk. I guess it's just a matter of some debug to fix it. But There still remains a question that @acoustic-addition-45641 raised, how to supply the config to live iso install so that everything happens automatically.
The possible (tho hacky way) is just to build on the PXE work of @thousands-advantage-10804, use the netboot as an image in bmh spec that will boot eveyrthing else like he shown in his video.
The small benefit of integrating it with metal3 is that all PXE infra is already there as before the system iso is used metal3 uses PXE to load ironic agent to inspect the hardware, configure radis etc. So it's just the matter of to asking the agent to download a netboot is with ironic agent and the netboot PXE config can be stored in k8s config maps and mounted in the tftf folder as well, making it more automatic process and more gitops friendly.
Anyway the metal3+netboot solution seems quite hacky. Possible solution lies here <https://owlet.today/posts/integrating-coreos-installer-with-ironic/> where customDeploy is used to customize the process, but I need to git into it more ๐prehistoric-morning-49258
08/26/2025, 11:08 AMIRONIC_KERNEL_PARAMS - Kernel parameters to pass to IPA (default console=ttyS0) sounds like it ought to workprehistoric-morning-49258
08/26/2025, 11:17 AMfancy-fountain-55453
08/26/2025, 11:18 AMIRONIC_KERNEL_PARAMS but those parameters go to the IPA (ironic python agent) ramdisk that is first booted to inspect/configure baremetal, before actually OS happens. So far I failed to find a way to inject anything apart from mounted disk with USER_DATA and NETWORK_DATA which are later used by cloud-init and such.prehistoric-morning-49258
08/26/2025, 11:34 AMfancy-fountain-55453
09/01/2025, 4:34 PM<http://netboot.xyz|netboot.xyz> requirers DHCP server that points to netboot ipxe/tftf infra. That creates a conflict with ironic dhcp/ftft infra that is in place already. And I have no idea how double IPXE would be possible here (first ironic and ironic agent then netboot with harvester).
Ironic/Metal3 in theory could at least load the harvester ISO (no automated install but at least let us have something running!) but according to metal3 doc (https://book.metal3.io/bmo/live-iso) booted OS will not be able to access any data on the ISO except for the kernel and initramfs it booted from. and I see errors of harvester not finding /root and /dev/disk/by-label/COS_LIVE paths.
Atm. I'm out of ideas how to proceed. I wonder why there is no qcow2 for harvester?prehistoric-morning-49258
09/01/2025, 4:50 PMRUN <<EOF cat > run.ipxe
#!ipxe
shell
EOF
or you can update to like:
#!ipxe
chain https://[my_server]/harvester-config.ipxe
should then be able to just boot ISO and have Harvester auto-installthousands-advantage-10804
09/01/2025, 4:50 PMfancy-fountain-55453
09/01/2025, 4:55 PMfancy-fountain-55453
09/01/2025, 4:55 PMprehistoric-morning-49258
09/01/2025, 4:59 PMprehistoric-morning-49258
09/01/2025, 5:06 PMbooted OS will not be able to access any data on the ISO except for the kernel and initramfs it booted from - in theory this is fine, you can boot & autoinstall from kernel/initrd + http squashfs/ISO + kernel argsfancy-fountain-55453
09/01/2025, 5:07 PMfancy-fountain-55453
09/01/2025, 5:10 PMfancy-fountain-55453
09/01/2025, 5:12 PMprehistoric-morning-49258
09/01/2025, 5:17 PM