I haven't really got prior *nix systems experience to draw on, although I tried to set up a GUI based Linux some years back; this time I'm jumping directly to BSD because I like its philosophy and tight attention to quality and its resulting slightly conservative approach to release development cycles, and because I've got more experience with it than other *nix.
One area I'm really not confident about is tracking the config changes I set up. Everything config is a case of "edit /path/rc.things" or "add these lines to pkg-x.conf", or "set these variables in the environment or pkg". I'm comfortable with such directions; what bothers me is maintenance and reuse - how I track exactly what I changed as I was setting it up and as I use it, and keeping it easy for myself if I want to make those changes again in future on another system without 3 months of DIFFing every file in sight and reviewing line by line. I expect at first I'll have a lot of this, because I'll be learning from experience.
My aim is that if I want to set up a 2nd server with much of the system/pkg config similar or the same settings (as is common on a single LAN), or to backup, wipe and reinstall as part of my learning curve, or just to update the system, I don't really want a txt-file list I've kept, that lists 400 files with fragmented config on them, all to be laboriously manually re-created or to have multiple lines edited in console. I also won't want to just restore all files unthinkingly, or to find there are files which did contain config or other history/activity information that I didn't know about, or missing environment data, and spend forever trying to work out where stuff might be hidden that needs to be copied or edited in on the new system.
I'm not sure there is ever a truly easy solution to this (on any major OS) - even Windows with a GUI, I'd have to consider files and entries stored in all kinds of directories, registry branches, and so on. But at least I have many years trial-and-error with Windows so I have a good idea what to grab depending how the machine has been used and I can do it fairly quickly package by package. I know which packages I use, I can just reinstate its config directory or registry settings, and which I need to do via its GUI or some other way, and where there are useful system tweaks to add.
I also know in which cases it's safe to just copy a folder to reinstate my previous config or state, and in which cases it's best not to do that as other stuff needs to be set as well, and let the system/pkg do it the long way.
I don't have that know-fu on BSD yet.
On a positive note, I feel I have enough knowledge and experience to work out roughly what I need to do, as I do it, and to get a sense of enough of the security and good practices to not make a complete disaster of it - or I hope I do anyway. So using BSD hands-on is the only real way for me to learn, at this point.
How can I approach this area of BSD use/management, and what solutions do people who know BSD tend to ultimately end up using?
Put another way, how can I track, simplify, and reinstate settings in a less laborious or time-consuming manner (with a view to selective reinstatementwithout days of console file editing and diff-ing!), as I begin to move into using BSD properly, or what knowledge or pkgs will help if it's a matter of workflow and process?