tcetc

Summary

The proliferation of small servers, especially remote / embedded systems, requires the ability to constantly fetch and apply updates and automatically rollback if necessary. One of the issues we see is installers failing to cope with user changed configuration data e.g. in /etc.

A transaction capable /etc will track user changes in a way that should be reproducible and allow for rollback. The system should be able to update with the standard rpm/zypper mechanism on an untouched mirror system and user changes will be replayed on top to preserve changes. The underlying /etc will only be exposed during boot before being replaced by a VFS.

This project is an attempt to address some of those issues and see whether the concept is viable.

Plan

  • Create a FUSE backend /etc to track manual changes to etc and support transactions, rollback.
  • Investigate different namespaces and/or filesystem views for different types of process
  • categorize /etc files into standard configuration file types e.g. /etc/passwd is a CSV file, with 5 fields, colon separator, and primary key field 1
  • log configuration changes in a DB e.g. "User root changed field 7 for key wwwrun to value /bin/bash" (parsed)
  • attempt to categorize transactions (grouping a set of changes into 1 unit)
  • mark obsoleted user changes as such to keep the DB small
  • apply changes to the underlying FS to allow a machine to reboot
  • investigate a snapper plugin

and lots more...

Looking for hackers with the skills:

Nothing? Add some keywords!

This project is part of:

Hack Week 19 Hack Week 20

Activity

  • almost 4 years ago: dancermak liked this project.
  • almost 4 years ago: ories liked this project.
  • almost 4 years ago: wpreston2 started this project.
  • almost 5 years ago: wpreston2 originated this project.

  • Comments

    • mkoutny
      almost 4 years ago by mkoutny | Reply

      I presume /etc in git is known. IIUC the (partial) goal, it may be achievable alternatively with a specialized git merge tool or merge driver on such a platform. (I only have old experience with etckeeper and .deb packages, so I can't assess how is the integration with RPM/zypper.)

    Similar Projects

    This project is one of its kind!