Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

initrd-setup-root: Add selective OS reset handling #55

Merged
merged 1 commit into from
Feb 28, 2023

Conversation

pothos
Copy link
Member

@pothos pothos commented Feb 24, 2023

A reconfiguration of a system will lead to config drift is the local state isn't discarded. However, while this is possible with Ignition reformatting the rootfs, this big hammer is too disruptive. Introduce a way to perform a selective OS reset where a special file contains a regex for paths to preserve. This regex should be prepared by a helper tool like
flatcar-reset --keep-paths "/etc/ssh/" "/var/docker.*"
that would assemble the regex to be
(/etc/ssh|/etc/ssh/.*|/var/docker.*)
where the omitted slash at the end of the /etc/ssh/ is needed due to how "find" prints the paths, and the additional entry ssh/.* for the contents of /etc/ssh/ which would otherwise be deleted - but we should allow the user to use a final slash anyway instead of forcing the user to add /.* everywhere, thus the helper tool should take care of it. If the user wants to remove all contents but keep the empty dir, ^/etc/ssh or /etc/ssh$ or (/etc/ssh) or /etc/(ssh) would work to directly specify the wanted regex without the helper tool expanding it (see linked PR).

How to use

Based on #54 - Rebase before merging

The helper tool is introduced in flatcar/init#91

Testing done

With the new flatcar-reset tool I checked that sudo flatcar-reset --keep-machine-id --ignition-file my.ign --keep-paths '/etc/ssh/ssh_host_.*' /var/log and a reboot will discard all state except the ssh host keys and the system logs, and will set up the grub.cfg cmdline for the machine ID and use the given Ignition file.

CI

@pothos pothos requested a review from a team February 24, 2023 10:36
pothos added a commit to flatcar-archive/coreos-overlay that referenced this pull request Feb 24, 2023
This pulls in
flatcar/bootengine#55 and
flatcar/init#91 for a `flatcar-reset` tool and
boot logic for selective OS resets, cleaning the rootfs of old state
while keeping wanted paths, e.g., when reconfiguring the system with
Ignition.
@pothos pothos force-pushed the kai/etc-overlay-cleanup branch 3 times, most recently from 8da7f57 to 85ec998 Compare February 27, 2023 08:52
dracut/99setup-root/initrd-setup-root Outdated Show resolved Hide resolved
dracut/99setup-root/initrd-setup-root Outdated Show resolved Hide resolved
dracut/99setup-root/initrd-setup-root Outdated Show resolved Hide resolved
@pothos pothos force-pushed the kai/etc-overlay-cleanup branch 3 times, most recently from b451800 to 2bd7fc0 Compare February 27, 2023 12:15
pothos added a commit to flatcar-archive/coreos-overlay that referenced this pull request Feb 27, 2023
This pulls in
flatcar/bootengine#55 and
flatcar/init#91 for a `flatcar-reset` tool and
boot logic for selective OS resets, cleaning the rootfs of old state
while keeping wanted paths, e.g., when reconfiguring the system with
Ignition.
@pothos pothos force-pushed the kai/etc-overlay-cleanup branch 2 times, most recently from 7c1c3af to 01855b1 Compare February 28, 2023 06:29
pothos added a commit to flatcar-archive/coreos-overlay that referenced this pull request Feb 28, 2023
This pulls in
flatcar/bootengine#55 and
flatcar/init#91 for a `flatcar-reset` tool and
boot logic for selective OS resets, cleaning the rootfs of old state
while keeping wanted paths, e.g., when reconfiguring the system with
Ignition.
pothos added a commit to flatcar-archive/coreos-overlay that referenced this pull request Feb 28, 2023
This pulls in
flatcar/bootengine#55 and
flatcar/init#91 for a `flatcar-reset` tool and
boot logic for selective OS resets, cleaning the rootfs of old state
while keeping wanted paths, e.g., when reconfiguring the system with
Ignition.
@pothos pothos requested a review from a team February 28, 2023 13:09
Copy link
Member

@krnowak krnowak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One nitpick, otherwise looks alright.

dracut/99setup-root/initrd-setup-root Outdated Show resolved Hide resolved
Base automatically changed from kai/etc-overlay-cleanup to flatcar-master February 28, 2023 14:36
A reconfiguration of a system will lead to config drift is the local
state isn't discarded. However, while this is possible with Ignition
reformatting the rootfs, this big hammer is too disruptive.
Introduce a way to perform a selective OS reset where a special file
contains a regex for paths to preserve. This regex should be prepared
by a helper tool like
  flatcar-reset --keep-paths "/etc/ssh/" "/var/docker.*"
that would assemble the regex to be
  (/etc/ssh|/etc/ssh/.*|/var/docker.*)
where the omitted slash at the end of the /etc/ssh/ is needed due to
how "find" prints the paths, and the additional entry ssh/.* for the
contents of /etc/ssh/ which would otherwise be deleted - but we should
allow the user to use a final slash anyway instead of forcing the user
to add /.* everywhere, thus the helper tool should take care of it. If
the user wants to remove all contents but keep the empty dir,
^/etc/ssh or /etc/ssh$ or (/etc/ssh) or /etc/(ssh) would work to
directly specify the wanted regex without the helper tool expanding it.
@pothos pothos merged commit 7426121 into flatcar-master Feb 28, 2023
@pothos pothos deleted the kai/os-reset branch February 28, 2023 14:39
pothos added a commit to flatcar-archive/coreos-overlay that referenced this pull request Feb 28, 2023
This pulls in
flatcar/bootengine#55 and
flatcar/init#91 for a `flatcar-reset` tool and
boot logic for selective OS resets, cleaning the rootfs of old state
while keeping wanted paths, e.g., when reconfiguring the system with
Ignition.
@pothos pothos linked an issue Feb 28, 2023 that may be closed by this pull request
t-lo pushed a commit to flatcar/scripts that referenced this pull request Apr 17, 2023
This pulls in
flatcar/bootengine#55 and
flatcar/init#91 for a `flatcar-reset` tool and
boot logic for selective OS resets, cleaning the rootfs of old state
while keeping wanted paths, e.g., when reconfiguring the system with
Ignition.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[RFE] OS reset helper
2 participants