First of all, if you have ideas for other use cases for the feature I'll describe in the following, don't hesitate to let us know about it!
One feature occasionally requested by our customers was to have lists of software installed on machines in the IDB. This feature is now in the development branch.
To be able to have these lists, the data has to somehow find its way into the IDB. Currently it can be imported from PuppetDB by using custom facts which are part of our idb-puppetintegration, or by using IDBs API. Manual input is not supported, as keeping this information up to date isn't really feasible, creates more work and violates the automate all boring things paradigm.
After there is some software data available, software can be searched for by name and version using the new software module. Here's a search for machines which have installed nmap and openvpn:
With this query you'll see a table with the search results. Here you can filter for additional things like operating system like in the usual list of machines. This looks like this on my local testing setup:
Clicking on a result leads you to the machine details, where a new entry "Software" can be found, showing every installed software for this machine together with its version.
Searching isn't only possibe by name, but also by name and version. test2.example.org has nmap version 2 installed, so let's search for machines with openvpn and nmap in this version:
As expected this only shows one machine, test2.example.org. Searching partial versions is also supported.
To find all machines with python 2 one could use
python=2 for example. The results would include every machine with a package named python
and versions starting with 2 installed.
If you want to know more about the internals, take a look at the corresponding documentation!