lima-vm / lima-vm/lima

Add templating support for cloud-init in lima.yaml

Open
#2,128 2 comments 2 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
21.9k
Forks
957
Avg merge
2d 6h
Merged PRs (30d)
53

Description

> To avoid inflating the numbers of the limayaml fields, can we consider to support templating cloud-init yaml in limayaml?

_Originally posted by @AkihiroSuda in https://github.com/lima-vm/lima/pull/2119#discussion_r1446783563_

I think we should consider it, but it may take a bit of an effort. Here is what I think is needed (just brainstorming; please correct if I'm missing something):

* Import the cloud-init json schema
* Do whatever is necessary to make sure it is OpenAPI compliant (if it isn't already)
* Turn it into a Go package using swagger
* Add `cloudInit` field to `lima.yaml`
* Create additional validations for potential conflicts with settings managed by Lima
* Modify `cidata` to merge our settings into the cloud-init data structure; we can no longer use Go templating, but need to encode the structs to YAML.
* Update `lima-init` in `alpine-lima` to deal with potential formatting changes

If this works, then we should decide how we import the JSON schema into the lima repo, how we update it etc. I think it would be best to have a separate repo for this, that maybe uses git submodules to include upstream cloud-init, and then checks in the swagger output as a Go module. That way we don't need to require swagger for building Lima.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.