Migrating from Fedora Atomic Host (FAH) to Fedora CoreOS (FCOS)

Overview

Fedora Atomic Host was a system to deploy applications in containers. Existing FAH users are encouraged to migrate to FCOS, as the project has reached its end-of-life.

FAH used cloud-init for provisioning, which required users to provide a cloud-config file as userdata for configuration of the instance. Since FCOS Ignition and cloud-init are different and have overlapping feature sets, it is not trivial to convert cloud-init files to Ignition. Currently, there is no tool for this conversion, so you must manually convert cloud-init configs to Butane configs. Refer to Butane Specification for an explanation of the available configuration options.

Converting cloud-init and cloud-config userdata

The following examples show the difference between FAH userdata and user configuration with Butane.

Example of FAH userdata file:
#cloud-config
password: atomic
ssh_pwauth: True
chpasswd: { expire: False }

ssh_authorized_keys:
  - ssh-rsa ...

This can be manually translated into a passwd node within the Butane config:

Example of users:
variant: fcos
version: 1.5.0
passwd:
  users:
    - name: core
      password_hash: "$6$5s2u6/jR$un0AvWnqilcgaNB3Mkxd5yYv6mTlWfOoCYHZmfi3LDKVltj.E8XNKEcwWm..."
      ssh_authorized_keys:
        - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGdByTgSVHq......."
      groups: [ sudo, docker ]
Fedora CoreOS disables password login over SSH by default. It is strongly recommended to only use key authentication. Setting passwords can be useful however for logging into the console directly.

Converting storage definitions

With FAH, you could configure additional storage for the system with either cloud-init or docker-storage-setup via the /etc/sysconfig/docker-storage-setup file. With FCOS, you should configure additional storage at provisioning time via Ignition in the storage node of the Butane config.