1.9 KiB
1.9 KiB
Solutions
- Create a directory, eg
/etc/config
and store all of your config files there, then use a makefile to automatically generate symlinks and install them in the appropriate locations. A command is also created for removing said symlinks. (https://forums.freebsd.org/threads/version-control-for-configuration-files.70312/)- I like this so far, it seems like one of the better options. If I'm allowed to be quirky, I'd rather use
just
thanmake
, Makefile syntax makes my tummy hurt.
- I like this so far, it seems like one of the better options. If I'm allowed to be quirky, I'd rather use
- Using a filesystem that supports snapshots like zfs/btrfs and then creating snapshots (https://forums.FreeBSD.org/threads/version-control-for-configuration-files.70312/post-423330).
- I don't like this very much, it depends too much on OS specific configuration and doesn't seem like it'd be as easily portable between machines.
- Using a configuration management system like Ansible, Chef, or Puppet (https://www.dolthub.com/blog/2023-12-12-configuration-version-control/#isnt-this-just-configuration-management)
- I feel like this would require a fair bit of initial setup but it seems robust
- Using a database like Dolt or Terminus DB https://www.dolthub.com/blog/2023-12-12-configuration-version-control/#isnt-this-just-configuration-management
- I think this would require a lot of work and we wouldn't reap the benefits at our scale.
- Using an orchestration system like kubernetes or hashicorp nomad to centralize config file/deployment management, from there version controlling configs would be easy (https://medium.com/netcracker/version-control-of-configuration-files-using-kubernetes-21673766203).
- I think this would be a good idea, but it's a lot of work, and I think maintaining it would continue to be a lot of work.
Notes
I think one major issue with storing configs in a solution like git, is that you need to remember to push changes after every single config change. Maybe a cronjob could be configured to commit daily/weekly?