Skip to content

Add runner install template management - #525

Merged
gabriel-samfira merged 13 commits into
cloudbase:mainfrom
gabriel-samfira:add-install-script-metadata
Sep 23, 2025
Merged

Add runner install template management#525
gabriel-samfira merged 13 commits into
cloudbase:mainfrom
gabriel-samfira:add-install-script-metadata

Conversation

@gabriel-samfira

@gabriel-samfira gabriel-samfira commented Sep 21, 2025

Copy link
Copy Markdown
Member

This change adds the ability to easily manage runner install templates. This feature only takes care of the script that ends up downloading, installing and configuring the runner on providers that use userdata to do so. This does not apply to the kubernetes provider where the image can hold an entrypoint that just parses the bootstrap params and does the right thing.

The rest of the providers require userdata to be injected by the provider, a VM or container needs to spin up, fetch its userdata and run it.

In this scenario, the providers are still responsible for crafting and setting the userdata, but GARM will now supply the runner install template that gets included in the userdata. To do that, we added a new metadata URL that generates and serves the install script.

The userdata installed by the provider is just a small wrapper that does a curl/wget on the API endpoint, gets the actual script and runs it.

This allows us a lot of flexibility in terms of creating new templates or customizing existing ones and setting them on the pool/scale set.

Here is a demo:

templates-demo.mp4

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Pools and scale sets will automatically migrate to the new template
system for runner install scripts. If a pool or a scale set cannot be
migrate, it is left alone. It is expected that users set a runner install
template manually for scenarios we don't yet have a template for (windows
on gitea for example).

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Comment thread apiserver/controllers/templates.go Fixed
Comment thread apiserver/controllers/templates.go Fixed
Comment thread apiserver/controllers/templates.go Fixed
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
@gabriel-samfira
gabriel-samfira merged commit 23f92bc into cloudbase:main Sep 23, 2025
4 checks passed
@gabriel-samfira
gabriel-samfira deleted the add-install-script-metadata branch September 23, 2025 10:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants