Add templating support for cloud-init in lima.yaml
- 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
Assessment
This issue has not been assessed yet.