flatcar / Flatcar

Flatcar project repository for issue tracking, project documentation, etc.
https://www.flatcar.org/
Apache License 2.0
733 stars 32 forks source link

Roadmap: systemd-sysext and systemd-confext #978

Open pothos opened 1 year ago

pothos commented 1 year ago

We have started to point users at systemd-sysext for bringing their software and configuration to Flatcar as overlay on /usr. To get there, a few workaround were needed. While there were discussions with upstream how to solve this, the work is yet to be done. The first step would be to drop our customizations through some upstream and Flatcar improvements. This should already allow us to transition to sysext as torcx replacement and for the OEM tools. Then we can look into unlocking more use cases for systemd-sysext and systemd-syscfg after doing the needed upstream development. Finally we can look at some syscfg use cases in Flatcar.

  1. Drop our customizations to reach a state where there is one consistent future-proof sysext behavior supported by upstream:

With the above we can complete the transition of OEM tools and torcx to sysext.

  1. Make sysext/syscfg work for more cases like kernel module settings or systemd configuration itself:

This makes sysext/syscfg feature complete for advanced use and should also help to promote it outside of Flatcar.

  1. Future ideas to use systemd-syscfg in Flatcar:
    • Maybe leverage systemd-syscfg for OEM files that need to be under /etc - see https://github.com/flatcar/coreos-overlay/pull/2506#discussion_r1137984241 for a case where we would copy a file to /etc from a service and the file won't be updated → or better fix the lack of support for /usr for vendor-supplied configs if we encounter it!
    • [ ] Use ignition-apply to bake a syscfg image, then one could replace an old syscfg with a newer one for live config updates without a reboot, given that, e.g., a small helper allows to embed the ignition-apply-baked syscfg in a final Ignition config to be used on first boot
pothos commented 1 year ago

Question from @tormath1: Exact behavior and drawbacks of Upholds= for the multi-user.target

Edit: Answer: The target still gets reached if the service it should uphold is always failing or doesn't exist.