CoreOS on Linode

In the Fedora CoreOS Documentation, under the “Provisioning Machines” section, there is an extensive list of providers, each with instructions on how to boot a CoreOS image. The usual suspects are present there, from the big 3 AWS/GCP/Azure, then DO, Vultr and so on.

Intriguingly, Linode is not on the list. (yes, in many cases, CoreOS ends up installed as a custom image; but Linode can also install custom images, so it is a bit puzzling that custom image steps are provided for DO or Vultr and a few others but not for Linode).

Searching at the other end, in Linode’s docs and guides, there is a bit of a confusion.
There is no CoreOS in Linode’s list of supported distributions. OK, anyway probably the custom image install is the way to go.

But it seems that Linode had at some point the capability to directly install CoreOS : there is a guide for that, “Install CoreOS on Your Linode”. Or more precisely, it kind of was: the guide is marked as “deprecated”. Under that message however there is a note saying that “CoreOS Container Linux is now available for deployment from the Linode Manager.” So, it is available after all ?

Another guide, “Use CoreOS Container Linux on Linode”, also seems to point that CoreOS is indeed available.

The lack of a clear support message (especially in CoreOS docs) left me wondering. Is there some unmentioned pitfall that makes Linode a poor match for a CoreOS install ?

That guide refers to CoreOS Container Linux, not Fedora CoreOS. CoreOS Container Linux is no longer maintained, and Fedora CoreOS has never been available on Linode.

Yes. Fedora CoreOS uses one of two flows for launching in a cloud provider:

  • Official Fedora CoreOS images are published to the cloud provider. Users launch an image and provide an Ignition config via the provider’s userdata mechanism. The Ignition config specifies the customizations that should be made to the VM instance, such as config files and SSH keys.
  • Images are not published to the cloud provider, but Fedora CoreOS provides official images and instructions for uploading them. Users download the image from Fedora and upload it to the provider, and afterward the flow is the same as in the previous case: users can launch the image multiple times, each time providing an Ignition config to customize the VM instance.

Both flows require the cloud provider to provide a mechanism for passing arbitrary configuration data (“userdata”) to the VM. Linode doesn’t have one. Their provisioning system (including their StackScripts mechanism) injects configuration such as SSH keys by directly modifying the VM disk. This is unlikely to work due to specifics of the Fedora CoreOS disk layout, and in any event, that user experience isn’t consistent with Fedora CoreOS on other platforms.

There’s another approach: using the install flow for bare-metal machines with Linode’s direct disk boot support. This involves booting the Fedora CoreOS live ISO and running coreos-installer, passing it a URL to an Ignition config. This is an awkward flow for provisioning cloud VMs (since you’d need to perform an installation for every new VM) but might work. If you decide to try this, please let us know how it went. However, I’d encourage you to use a cloud provider with first-class userdata support instead.