lf-edge / eve

EVE is Edge Virtualization Engine
https://www.lfedge.org/projects/eve/
Apache License 2.0
475 stars 162 forks source link

for iPXE bringup of EVE-OS I would like a "latest" url .cfg file that points to the latest released image #2196

Open kgiori opened 3 years ago

kgiori commented 3 years ago

Use case

When I boot an Equinix Metal on-demand server using the Custom iPXE option as an OS, I can include a URL pointing to a config file, such as: https://github.com/lf-edge/eve/releases/download/6.10.0/amd64.ipxe.efi.ip.cfg But if I don't know the latest release tag (in this case 6.10.0) it would be easier to just use: https://github.com/lf-edge/eve/releases/download/latest/amd64.ipxe.efi.ip.cfg And it would automagically fetch the 6.10.0 version.

Describe the solution you'd like

Enable a symbolic link between: https://github.com/lf-edge/eve/releases/download/latest/amd64.ipxe.efi.ip.cfg and the latest tagged config file such as 6.10.0: https://github.com/lf-edge/eve/releases/download/6.10.0/amd64.ipxe.efi.ip.cfg

Additional context

See the Custom iPXE Settings URL field in the screenshot -- this is where the link to the cfg file is pasted. ipxe-cfg

saqebakhter commented 3 years ago

@kgiori i was trying to use ipxe to boot eve in equinix metal - but I did not get any output in the out of band console - do you have it working ?

kgiori commented 3 years ago

I've never tried the Equinix oob console, but I presume that EVE-OS locks out access once it is installed, so I suspect some sort of app would need to be deployed (by the eve controller) that would enable that access. I can ask around for ideas...

saqebakhter commented 3 years ago

I've never tried the Equinix oob console, but I presume that EVE-OS locks out access once it is installed, so I suspect some sort of app would need to be deployed (by the eve controller) that would enable that access. I can ask around for ideas...

Yeah - that is what i figured ,and sorry for the off-topic question - in that case how are you getting the soft_serial to register the packet server into the eve controller?

kgiori commented 3 years ago

Yeah - that is what i figured ,and sorry for the off-topic question - in that case how are you getting the soft_serial to register the packet server into the eve controller?

Ah, check out the name of the config file amd64.ipxe.efi.ip.cfg -- the ip embedded in that name is a hint that the serial number will be the device's IP address. Check out the iPXE section of the DEPLOYMENT.md doc. There's a demo of iPXE boot using Equinix Metal and onboarding to ZEDCloud controller at the end of this Transform presentation on YouTube.

rvs commented 3 years ago

Hey @kgiori -- the problem is that links under https://github.com/lf-edge/eve/releases/download/XXX are not controlled by us, but are generated (on the fly) by GitHub. So this is not as simple as just having a redirection (unless I'm missing something obvious). That said, however, we can have a separate GitHub Action that would update a URL like that by figuring out that the current build is supposed to be the latest. This will be a good project for @dautovri to tackle in the next sprints.

dautovri commented 2 years ago

Agree with @kgiori it will be easier and comfortable to write documentation and tutorials.
GitHub has tag, draft, pre-release, and release.

Issue 1) We use automation, and every time we publish pre-release versions (you can see in the release tab https://github.com/lf-edge/eve/releases), where "Latest" links cannot be applied. There does not seem to be any guidance here, and it makes pre-release automation and the latest links difficult.

Issue 2) The Latest / Latest release tag is applied to the release with the newest timestamp. If anyone is using automation against the latest release endpoints or using badges that include the latest version of a release, then they will run into problems whenever patches/updates are done to previous major versions. We support several brunches and we keep contributing new patches to the major version, so we will face this issue as well.

Proposal: @rvs and @kgiori We can start using combinations of pre-release and release. Automation will keep using pre-release and not mess the latest. Maintainers will make the manual release, and the latest link will automatically appoint on that version.

kgiori commented 2 years ago

@dautovri - sounds excellent to me! If I understand correctly, a (constant) release url with "latest" instead of version number would be linked to the latest released version. The pre-releases will include older version updates as well as the most recent release.

rvs commented 2 years ago

This sounds roughly reasonable @dautovri -- but the devil is in the details (and I don't think I get all the details here). Are you working on a PR for this? It may be easier to discuss this on PR not on an issue.