Upgrade & Rollback

FIXME

Overview

FIXME

  • imgbased for management of versioned filesystem layers
  • Layout

    • liveimg is rsynced into Thin LV, then made RO and active=n (BASE)
    • Thin snapshot of LV is created, this is RW (LAYER)
    • Boot entry for RW thin snapshot (LAYER) is created
  • Upgrade

    • New BASE with new LAYER is created
    • Rsync /etc from old LAYER to new LAYER
    • Set primary boot entry to new LAYER
  • Rollback

    • Set primary boot entry to old LAYER

Assumptions

FIXME

  • /etc is on LAYER
  • /var is on separate volume

Open Items

  • How do driver disks survive an upgrade?
  • uid drift is solved enough?
  • daemon for imgbased
  • currently kernel+initrd are in subdir in /boot, idea: keep kernel+initrd in /boot. This will allow dracut and others to work correctly

Package persistence

FIXME

  • should rpms be persisted? if so, how?
    • separate volume with magic name, put rpm there, will be reinstalled on every new layer
    • only through puppet/chef/ansible?
    • yum plugin to record and cache installed pkgs on separate vol?

Delivery

FIXME

  • squashfs wrapped in rpm
  • "dnf download" rpm on the host
  • extract squashfs from the rpm
  • then use imgbase to upgrade