Migrating from Curtin to Eikon¶
DRP writes an OS image to a machine's disk with one of two deploy engines —
Curtin (the original image-deploy content pack) and Eikon (the newer
eikon plugin). Migrating is deliberately small: switch one "application"
profile and redeploy. Your existing images, parameters, profiles, and pipeline
carry over — Eikon reads the same image-deploy/* parameters Curtin already uses.
This page is the shared, OS-agnostic guide; OS-specific notes are on the per-OS pages linked at the end.
Overview¶
- Curtin — the original
image-deploycontent pack. - Eikon — a self-contained Go imaging engine. It writes the image and injects
first-boot config by mounting the image offline, and additionally supports
whole-disk (
dd-*) and rootfs (tar-*) images, LVM/SW-RAID, and curtin-style storage plans.
They are mutually exclusive engines for a given deploy, but they plug into the same universal deploy pipeline — which is why the switch is just one profile.
How the selection works¶
Both engines run under the same workflow (universal-image-deploy) in the
universal pipeline. Which engine runs is chosen by one parameter,
universal/application, set by an "application" profile:
| Engine | Application profile | Sets universal/application |
|---|---|---|
| Curtin (current) | universal-application-image-deploy |
image-deploy |
| Eikon (target) | universal-application-eikon-image-deploy |
eikon-image-deploy |
You keep your usual pipeline entry (e.g. universal-discover) and its
discovery/inventory tasks — migrating only swaps the application profile.
Prerequisites¶
- Current content packs —
universalanddrp-community-contentat recent versions (Eikon's floor is>= 4.15.7). Update them if you haven't lately. - The Eikon plugin installed and Available. Install it from the RackN catalog
(UI: Plugins → Catalog → eikon, or via
drpcli), then confirm:
Migrate¶
1. Switch the application profile¶
On the machine (or the profile/cluster you deploy through):
drpcli machines removeprofile <machine-uuid> universal-application-image-deploy
drpcli machines addprofile <machine-uuid> universal-application-eikon-image-deploy
That's the whole change. Reuse your existing base image as-is — your image
parameters carry over because Eikon's eikon/image-url, eikon/image-type, and
eikon/install-dev default from your existing image-deploy/image-url,
image-deploy/image-type, and image-deploy/install-disk. No new image, format,
or storage config is needed to migrate.
2. Deploy¶
Run the deploy the same way you do today:
drpcli machines workflow <machine-uuid> universal-image-deploy
drpcli machines update <machine-uuid> '{"Runnable":true}'
Eikon erases the disk, writes the image, mounts it offline to inject the DRP agent and first-boot config, then reboots into the deployed OS, which reconnects to DRP. The machine's running agent performs the reboots itself — no manual intervention.
Rollback¶
Reverting is the same switch in reverse — no image rebuild:
drpcli machines removeprofile <machine-uuid> universal-application-eikon-image-deploy
drpcli machines addprofile <machine-uuid> universal-application-image-deploy
Your image-deploy/* parameters were never removed, so Curtin picks up exactly
where it left off. Re-deploy with the same universal-image-deploy workflow.
Beyond migration (optional)¶
Once migrated, Eikon offers capabilities Curtin doesn't. These are not part of the switch — adopt them later; see the Eikon docs:
- Eikon-native image formats —
dd-zst(recommended; smaller transfer, faster write),qcow,tar-zst. Set these viaeikon/image-type(theimage-deploy/image-typeenum doesn't include them). - Custom storage — explicit partitioning, LVM, SW-RAID, or multi-image layouts
via the
eikon/planparameter.
Troubleshooting¶
OS-specific symptoms are on the per-OS pages; these apply to any OS:
- Deploy fails writing the image / out of space — the target disk must be at
least the raw (uncompressed) image size (
zstd -l image.raw.zstshows it). - Wrong target disk — Eikon installs to
/dev/sdaunlessimage-deploy/install-diskis set to a full device path (e.g./dev/vda,/dev/nvme0n1). - Eikon not running — confirm the plugin is
Available(re-check after any DRP service restart).
Per-OS guides¶
- Windows — Server 2019 / 2022 / 2025 notes.
- Linux — (planned)
- macOS / Darwin — (planned)