Kubic:MicroOS/Ignition

Jump to: navigation, search

Configuration of openSUSE MicroOS and openSUSE Kubic with Ignition

Ignition is supposed to create a lightweight alternative to cloud-init. For a short comparison of those two provisioning tools see Ignition vs cloud-init.

This Wiki page will contain SUSE specific information; for general Ignition documentation please refer to the current development snapshot on https://github.com/coreos/ignition/tree/master/doc.

Warning: Ignition support is currently in development and highly experimental, both regarding the implementation in openSUSE and the adaption for Fedora's new CoreOS.

Installation

Ignition is not part of Factory yet, but developed in https://build.opensuse.org/project/show/devel:kubic:ignition.

Use the following commands to install the current stack:

zypper addrepo --refresh https://download.opensuse.org/repositories/devel:kubic:ignition/openSUSE_Tumbleweed/devel:kubic:ignition.repo
transactional-update pkg in --allow-vendor-change grub2 ignition-dracut

A modified grub2 version is required for GRUB environment variable support

Usage

Ignition configuration files

See the current Ignition documentation for creating Ignition files.

Ignition is currently packaged in a way that all mounts containing the mount option x-initrd.mount will be mounted during the files stage of Ignition. On a openSUSE MicroOS based systems this means that /var and /etc will be available by default, but /home or /root won't be. Make sure to add the flag to all mount points in /etc/fstab where you need access to.

Triggering Ignition

Ignition is currently not integrated into the installation workflow, but has to be set up manually. It will be triggered if the ignition.firstboot kernel parameter is set. This can be achieved by using one of the following methods:

  1. Manually add the parameter ignition.firstboot to the kernel command line.
  2. Setting the GRUB2 environment variable ignition_firstboot
    • Use the following command to set the environment variable (usually during installation):
      grub2-editenv - set ignition_firstboot="ignition.firstboot"
    • Depending on your Ignition setup you may also want to add additional parameters, e.g. for retrieving the configuration from a HTTP server use something like the following: "ignition.firstboot ignition.config.url=http://example.org/ignition.json ignition.platform.id=pxe ip=dhcp rd.neednet=1"
    • Add $ignition_firstboot as a parameter to the kernel parameters (TODO: This should be done by the package automatically).
  3. Create the flag file /ignition.firstboot. This way should not be used, as the flag file can't be deleted on read-only root file systems on success and is deprecated by upstream.

USB flash drive

Similarily to cloud-init's LocalDisk source it is possible to use a local media for loading the Ignition configuration.

TBD