So here is something I am always wondering about when setting up a new Linux machine, be it desktop or server: How can I keep a reproducible log of what administration tasks I did on the machine, so when it fails I can get back to an identical running system quickly?
I know there is a lot of configuration management tools like Ansible, bcfg2, Puppet and what not, but it feels like the overhead of describing the target state in one of their configuration languages is way too high for a single server, in particular if it is only my private machine with no critical or revenue-generating service on it. Also, I haven't found a good way of describing an action like "uncomment this line, but keep the previous line for reference" in either Ansible or bcfg2 without copying the whole file to my configuration management.
My current solution is to keep a file "adminlog.txt" on every machine and write in there what I did in natural language. As of now, I have never had to go back to that file and reproduce all the things in there, but I am sure that once I have to do this, all the links in lines such as "set up Dovecot as per <link>" will be dead or describe outdated versions.
In a comment to another question I found a link to blueprint which promises something like "capture the current state of your server and store it as bash/Puppet/chef/CFEngine file". Actually that sounds exactly what I am looking for, but then the development seems to have halted and it seems only to work on Debian or RPM distributions.
I would be happy to learn how other people keep track of their administration tasks, in particular when there are multiple people doing stuff on the same server; it seems like not such an exotic requirement, after all.