Dag Wieers wrote:
But my real question is: How can I get a list of files in the whole filesystem that were added or modified compared to all the files that come from rpms? Is there a script for doing such a thing?
You may be interested in a tool I wrote some time ago that makes a hardware and software snapshot of a system, including the latent configuration in memory (like routing information or firewall rules).
It creates the snapshots in single compressed text files periodically (hourly, daily, weekly, monthly from cron) that can be diffed. And it allows to send out diffs to one or more email-addresses if configured to do so.
It was written with multiple use cases in mind:
compare identical systems (eg. nodes in a cluster, or when migrating servers)
mail changes to a group of co-maintaining sysadmins (so configuration changes are communicated and if needed acted upon)
backing up a complete system's HW/SW configuration and making diffs with past configurations for troubleshooting problems
taking system configurations with you (as a consultant or support organisation it is nice to follow-up on system changes made by the customer)
The tool is called dconf. You can find it in RPMforge.
The tool is as good as its configuration. The default configuration already contains a lot for RHEL/CentOS, but it could use more people defining more tools/configuration file. And I am open for improving the tool beyond what it does now.
Feedback appreciated,
What I've always wanted is a tool that would manage a group of machine configurations as branches in subversion so the tool itself wouldn't need any diffing capability and could be wrapped by viewvc for web browsing, mesh nicely with router and other text base config management, etc. By 'configurations', on RPM based machines, I'd want the package list exported in a form that yum or kickstart could use to re-create the set (and I suppose to get this right you also have to build a local repository containing all of them because rpm/yum are too dumb to know where they came from, given multiple repositories), and copies of all the files in /etc/ and other optional places that are not exactly as installed from an RPM.
Is such a thing feasible, and if you can get that far, can it become a 'configuration factory' where you'd copy the starting config close to what you want to a new branch, edit a few files for the needed changes to produce a new machine, commit them, and then have a tool build that machine or a disk image of it? What I'm after is something that will let me make on-the-fly changes to any running machine, but pull those changes back to a central management tool in a way that makes it easy to see differences across time or between similar machines, and to use the current setup of any machine as the starting point for a new one.
Most of the tools I've seen so far involve their own abstractions to describe configurations and require them to be made at the central management tool. That's not what I want. I want to do configurations using the native setup on one or more machines whether or not the management tool has an abstraction for it and have a way to use that going forward and to track differences without any intermediate abstractions. I suppose in a way the version control's branch/rev/tag mechanism becomes an abstraction for the whole machine state at a point in time.