tinkerbell/osie

Write a detailed document about connections and requirement to write your own in mem os

gianarb opened this issue · 3 comments

It will be nice to get a detailed document about how to build your in-memory operating system (initrd), what it has to run (for example docker, and start tink-worker).

I am asking for mainly two reasons:

  1. Osie should be only one possible implementation, companies can have their OS, and it is nice to provide what they need to write their one
  2. a lot of the pull requests I see landing those days in Osie: #102 , #101 , #98 , #93 looks related to "Packet needs."

My secret hope is to get a minimum "Osie" implementation as part of the Tinkerbell organization, leaving more specialized ones to the end-user; ideally, Osie, as we know it today, can belong to PacketHost.

Something cool @thebsdbox did https://github.com/plunder-app/BOOTy about this topic

Probably this is related to tinkerbell/tink#136
And in some way to #2

We're seeing Packet-specific changes for OSIE because OSIE hasn't been cutover to use workflows in production yet. Thus, the only way to get necessary changes in is to modify the static OSIE scripts directly in this repo. For context, this was one of the major drivers behind the existence of tink, was to move away from these static 'workflows'.

Once Packet switches to use workflows, we won't see any Packet-specific PRs raised because they will all be addressed via individual workflows, and the existing scripts that you're seeing PRs against will be able to be removed from OSIE entirely. At such time, OSIE will be a very minimal OS and more in line with what you're expecting to see around a bootstrapping OS.

OSIE is actually already pluggable if someone is so motivated as the build scripts to recreate are all in this repo. It's just that OSIE also currently includes all the other bits as well, which will be removed in the future.

Ok, do you think documentation about the requirement Osie has to provide to fulfill Tinkerbell needs can be useful? I would like to know them like:

  1. It has to run docker
  2. It has to start tink-worker
  3. It has to make a call to tinkerbell.host/phonecall (if needed I am just guessing)

Closing as I don't think anything is happening here, particularly in lieu of Hook.