Description
This issue is an open investigation into what features Hegel (and perhaps other components of tinkerbell) would need in order to support cloud-init.
Cloud-init is a provisioning service that runs within many distributions, including Debian and Ubuntu. Cloud-init has awareness of various cloud providers (or provisioning environments, like OpenStack).
Cloud-init:
- detects the environment it is running in (taking hints from the kernel args, network, disks, embedded data)
- accesses the metadata configuration (a network service, attached disk, a deposited file, or hardware embedded data)
- parses the metadata
- configures the node
For raw disk support, with images composed of partitions (GPT, dos, etc), or LVM, or unknown or encrypted filesystems, the current approach of stamping a docker image based filesystem with a file is not sufficient. These raw disks must be pristine and trusted and can not be manipulated externally (by Tinkerbell) without disturbing trust.
Tinkerbell provisioned nodes should be able to rely on pre-installed software, such as Cloud-init or Ignition (Afterburn), and kernel arguments to access the metadata service provided by Hegel.
What changes to Hegel are required to provide this? What non-Tinkerbell / external changes are needed?
After some initial input and consideration, this issue should either be closed as a non-goal or result in one or several tinkerbell proposals to address any limitations, external cloud-init issues should also be raised.