I’ve spent some time over the weekend thinking about how firmware updates should work when you’re an enterprise, i.e. when you’re responsible for more than about 100 broadly similar computers. Some companies using fwupd right now are managing over a 100,000 devices (!) using a variety of non-awesome workarounds. So far we’ve not had a very good story on how to make firmware updates for corporate or IoT “just work” as we’ve been concentrating on the desktop use-cases.
We’ve started working on some functionality in fwupd to install an optional “agent” that reports the versions of firmware installed to a central internal web service daily, so that the site admin can see what computers are not up-to-date with the latest firmware updates. I’d expect there the admin could also approve updates after in-house QA testing, and also rate-limit the flow of updates to hardware of the same type. The reference web app would visually look like some kind of dashboard, although I’d be happy to also plug this information into existing system management systems like Lenovo XClarity or even Red Hat Satellite. The deliverable here would be to provide the information and the mechanism that can be used to implement whatever policy the management console defines.
This stuff isn’t particularly relevant to the average Linux user, and enabling this special “enterprise mode” would involve spinning up a web app on the internal network, manually enabling a systemd timer on all clients in the enterprise and also perhaps setting up a LVFS mirror. The console certainly isn’t the kind of thing you’d run on the Internet or be provided by the LVFS.
If this sounds interesting, I’d love to hear some comments, feedback and wish list items. We’re at the pre-alpha stage right now and are just prototyping some toy code. Thanks!
I’d really like this idea. What about a cockpit (https://cockpit-project.org/) integration? (I don’t know redhat sattelite, maybe it is something similar.)
Isn’t cockpit more for single-machine configuration? Red Hat Satellite seems to be the fleet management thing right now.
Did you consider Facter for puppet , and similar for mechanism for Chef, CFEngine and other deployment tools ?
Isn’t there an impedance mismatch with deployment tools v.s. keeping a machine updated? I’ll certainly do some research on those projects tho, thanks.
Eg It’s more the inventory part of these software suites I was referring to (facter (https://docs.puppet.com/facter/) for puppet, unknown for others). These usually integrate to things like foreman and you can query your fleet and see what’s installed or not based on facts.
It’s worth noting that Foreman can use Puppet (or Ansible, with the right plugin) to perform tasks on the hosts that it manages. A Puppet plugin or Ansible module could be a step towards integration with Foreman.
Red Hat Satellite, mentioned above, is Foreman plus plugins.
I’d be really interested if you have more details about what Foreman expects. I’ve been talking to James about mgmt and it seems like if we can give the management layer all the methods and metadata about the system it’s pretty easy to wire wire everything together.
I think the problem with this plan is that different enterprises use wildly different monitoring setups, so whatever you’ll do won’t integrate with the majority of them. And the last thing people need is to setup yet another bespoke single-use infrastructure.
Thus I think if you want to do anything in this space it should be providing building blocks so that people can easily integrate it into their own setups, e.g. that the fwupd daemon would have some simple http(s) server spitting out JSON, or maybe a d-bus(?) API that some local monitoring agent (e.g. a prometheus plugin?) could query, or something like that.
That being said, what I’m personally waiting and hoping for would be to get the server vendors onboard, so I could update server firmware (including peripherals, disks, etc.!) via LVFS.
I’d suggest to look at OCZ StoragePeek solution (I’ve not used it personally, but have heard good things about it).
StoragePeek -> StoragePeak (sorry :/).
Integration with Fleet Commander (https://fleet-commander.org/) would be perfect for enhancement.
Isn’t fleet-commander more for desktop configuration?
Rather than yet another daemon, perhaps providing command line utilities that one could call from their monitoring system would be more useful. That way one could monitor out of date systems through existing monitoring systems, and then use already-existing automation tooling around fwupd to update it.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
It’s not a daemon, it’s a systemd timer that runs an executable. Valid points about making it more useful as a component, thanks.
I also think this could be done with ansible, puppet, chef.. and others provisioning, configuration management, and application deployment tools.
I would focus in give fwupdmgr the right options and outputs so it’s easy to work with (I don’t know the limitations right now), so each company can use what they already have in-house.
OCS-Inventory would be another product to check/collaborate for support.