Many texts on Linux/Unix system administration advise you to have a diary and write down everything you do. I have finally realized the wisdom of this advice.
I use a simple shell script /usr/local/sbin/new-changelog-entry.
This script adds the current date and time to a file
/root/Changelog and opens it in a text editor. I usually have two
terminals (or two tabs in GNOME Terminal): one has a root shell where I do
things, the other has vi with /root/Changelog. I write down everything I
change, and usually copy the exact commands I executed. This lets me
redo the same thing very easily after OS upgrades, or on a different
server.
Here are a couple of sample entries from my laptop:
2005-09-23 11:44 +0300: mg
#
# Overcoming the 2 GB limit with Samba: http://brianpuccio.net/node/664
#
vi /etc/auto.misc
added 'lfs' to the options of all smbfs filesystems
/etc/init.d/autofs reload
2006-02-17 10:48 +0200: mg
#
# Installing Firefox 1.5 (from Dapper) on Ubuntu Breezy
#
# (I do not want to upgrade half of my system, so I'll compile the Dapper
# debs from source)
sudo -u mg -s
cd /home/mg/src/apt-sources/
apt-get source firefox
cd firefox-1.5.dfsg+1.5.0.1/
dpkg-buildpackage -uc -us -b -rfakeroot
# ...45 minutes later...
cd /home/mg/src/apt-sources/
dpkg -i firefox_1.5.dfsg+1.5.0.1-1ubuntu3_i386.deb \
firefox-dev_1.5.dfsg+1.5.0.1-1ubuntu3_i386.deb \
firefox-dom-inspector_1.5.dfsg+1.5.0.1-1ubuntu3_i386.deb \
firefox-gnome-support_1.5.dfsg+1.5.0.1-1ubuntu3_i386.deb \
libnspr4_1.firefox1.5.dfsg+1.5.0.1-1ubuntu3_i386.deb \
libnspr-dev_1.firefox1.5.dfsg+1.5.0.1-1ubuntu3_i386.deb \
libnss3_1.firefox1.5.dfsg+1.5.0.1-1ubuntu3_i386.deb \
libnss-dev_1.firefox1.5.dfsg+1.5.0.1-1ubuntu3_i386.deb
Update: here's a similar idea that goes further (not just changelogs, but also description pages for each machine): My electronic sysadmin notebook for an entire fleet by Rachel Kroll.
Update 2: I packaged new-changelog-entry with a few other tools into a Debian package pov-admin-tools.