English Spanish (Latin America)
Provisioning Fedora CoreOS on Vultr
This guide shows how to provision new Fedora CoreOS (FCOS) nodes on Vultr. FCOS images are currently not published directly on Vultr, but they can be uploaded as https://www.vultr.com/docs/requirements-for-uploading-an-os-iso-to-vultr[custom images].
Prerequisites
Before provisioning an FCOS machine, you must have an Ignition configuration file containing your customizations. If you do not have one, see xref:producing-ign.adoc[Producing an Ignition File].
If you do not want to use Ignition to get started, you can make use of the https://coreos.github.io/afterburn/platforms/[Afterburn support] and provide an SSH key via the cloud provider and continue from there.
While the Vultr documentation mentions `cloud-init` and scripts, FCOS does not support `cloud-init` or the ability to run scripts from user-data. It accepts only Ignition configuration files.
You also need to have access to a Vultr account. The examples below use the https://github.com/vultr/vultr-cli[vultr-cli] and https://s3tools.org/s3cmd[s3cmd] command-line tools.
Using a custom snapshot
Vultr supports creating custom snapshots from public raw images.
These steps show how to download a FCOS image and upload it to an existing storage bucket, in order to create a snapshot from that.
See https://www.vultr.com/docs/vultr-object-storage[Vultr documentation] for further details on how to create a bucket and configure `s3cmd` to use it.
Creating a snapshot
Fedora CoreOS comes in three streams, with different update schedules per stream. These steps show the `stable` stream as an example, but can be used for other streams too.
Fetch the latest image suitable for your target stream (or https://getfedora.org/coreos/download/[download and verify] it from the web).
STREAM='stable'
coreos-installer download -s "${STREAM}" -p vultr -f raw.xz --decompress
https://www.vultr.com/docs/vultr-object-storage#s3cmd__Example_CLI_tool[Use s3cmd to upload] the raw image to your bucket, and note its public URL.
BUCKET='my-bucket'
FCOS_VERSION='...'
s3cmd put -P "fedora-coreos-${FCOS_VERSION}-vultr.x86_64.raw" "s3://{BUCKET}/"
Create the snapshot from your object URL, and note its ID.
IMAGE_URL='https://...'
VULTR_API_KEY='<token>'
vultr-cli snapshot create-url -u "${IMAGE_URL}"
You'll need to wait for the snapshot to finish processing before using it. Monitor with `*vultr-cli snapshot list*`.