This is an container image for using ironic-python-agent (IPA) on top of CoreOS. This is different from standard IPA images that are built with diskimage-builder from a conventional Linux distribution, such as RHEL or Debian.
This repository also contains a CoreOS-specific IPA hardware manager called ironic_coreos_install. It is responsible for the customized installation process.
Unlike a conventional IPA image, the IPA source is not shipped with a CoreOS image. Instead, another component called image-customization-controller is used to inject its configuration into the ramdisk's Ignition. IPA is started as a systemd service that downloads its container image on start-up.
Inspection and automated cleaning works as usual in
Ironic, but the deployment process is very different. Instead of downloading a
QCOW2 image and writing it to the disk, the custom hardware manager
runs the coreos-installer
command shipped with the CoreOS image to install
the contents of the ramdisk onto the disk. This way, no separate CoreOS image
is required.
To achieve this, the BareMetal Operator custom deploy feature is used. It allows replacing some of the normal Ironic deploy steps with the install_coreos step shipped here.
The custom hardware manager also ships another deploy step
start_assisted_install
that allows integration with the assisted
service in a so called converged flow (in a contrast with
the older non-converged flow that did not use IPA at all).
The assisted service invokes the converged flow by creating a CoreOS ramdisk with an Ignition that starts IPA and also ships the assisted agent without starting it.
The converged flow also starts with inspection unless disabled by
a user. To make a host available for the assisted installation, the assisted
service invokes the start_assisted_install
step. This causes the host to move
to the provisioning
state, while IPA uses the systemd D-BUS API to start the
assisted agent. IPA then waits for the assisted agent to exit and reports the
exit status back to Ironic and eventually to BareMetal Operator.
The converged flow also allows cleaning and preparation steps such as RAID configuration or firmware settings to be run before provisioning.