This project came about because I've built out this reporting interface on multiple occasions. I built it out to meet reporting needs that the Puppet Dashboard isn't currently fulfilling, or at least doesn't appear to be fulfilling.
That being said, this system is useless without Puppet. If you don't have this system up and running, this project will not be of much use to you.
Some questions you may like answers to:
Q: What is the point of this reporting system?
A: System compliance requires reporting and, in some cases, this tool may provide an easy way to back up critical system information (networking configuration, iptables settings, etc.) in the event that you have to rebuild a system.
Q: Why not just use the Puppet Dashboard?
A: Well, in its current state, it just doesn't provide enough flexibility. First, I have to pull out the important information that I care to see from a system and then I have to display it in accordance with my own needs. I suppose one could hack away at the Puppet source and Puppet Dashboard source to accomplish this same thing, but then you'd have to get your branch merged into the mainstream release OR you keep yourself stuck on one version of Puppet. I do hope to see this kind of reporting integrated into Puppet in the future, but this method was the fastest way to get the reporting I needed in place.
Q: How does the reporting work?
A: There are multiple teeth in this gear:
1. Puppet has to push out a script to each system (ruby-based script)
2. Puppet schedules that script to run
3. Puppet uploads the output to a file bucket
4. Puppet pushes out a script to the file bucket server (php-based script)
5. Puppet crons the run of this script
6. The script runs on the file bucket server and processes any reports found in the file bucket
7. Reports are stored in the database (MySQL)
8. The web interface allows you to see these reports
It really is a complex way of getting this reporting done but this is because it is being done independently of the Puppet code.
Q: Could this information be gathered from some other tool?
A: Yes. There are plenty of tools that could get you this information. This tool is nice because it sits on top of an infrastructure that I've already put in place (Puppet) and doesn't require anything additional or any complex configuration. It's also free.