There are some things that are awfully out of fashion, that I still do. One of those things is maintaining server with its own configuration — personality, if you please. As opposed to maintaining the army of 125000 identical machines (yes, right, the same goes for humans).
That definitely doesn’t take any enterprise grade configuration management
system unless done in corporate environment, due to the lack of managers to keep
confused. For tracking configuration files one can get away with widely
available tools while nobody sees. In particular, I like putting files in
git repository.
So I thought I’d put some snippets here for future reference and copy pasting.
First thing is add a nice alias for the root user (that guy who is in charge of breaking configuration):
alias cfgit='git --git-dir=/var/cfgit --work-tree=/'
Or even
eval $(echo "alias cfgit='git --git-dir=/var/cfgit --work-tree=/'" | tee -a /root/.bash_aliases)
(depending on the distribution). Then initialize and configure the /var/cfgit
repository:
git init --bare --shared=0600 /var/cfgit
cfgit config core.logallrefupdates true
cfgit config user.name root@$(hostname)
cfgit config user.email root@klever.net
echo /\* >/var/cfgit/info/exclude
Done. Now one can add files to track before breaking the system.
cfgit add -f /etc/tobebroken/
cfgit commit -m 'stock tobebroken package configs'
cfgit add -f /usr/local/bin/mygreatscript
cfgit commit -m 'my great script before I broke it'
and so forth…