How does one go about managing a lab of Linux workstations? I'd like for users to be able to log in, run their GUI apps (LibreOffice, Firefox, Eclipse, etc), and for the computers to be able to be used as compute nodes (OpenMPI). This part I'm fine with.

But how can I centrally deploy a new software package or upgrade an installed package? How can I reload the entire OS on a given node, as if these workstations were part of a super computing cluster? Is there a nice program to help with setting up PXE booting and image management, and remotely managing packages? Ideally such a system would work with Ubuntu. If there isn't a nice package, how could this be set up manually?

2 Answers 2


Any of the great configuration management tools out there (Puppet, which is my favourite, Chef, CFEngine, Ansible) will help you in managing a machine's state (i.e. any kind of configuration, installed packages, etc). Are you at all familiar with automatic configuration management? If not, you have much to learn but it will be very worthwhile.

For provisioning machines and managing their lifecycle there are also quite a few tools available, not all of them equally mature. We use Foreman with great success, but there are others, like Razor and Spacewalk. As with configuration management, if you are not familiar with the concepts of hands-off provisioning/kickstarting and how the various tools implement those concepts, you have much to learn. And as with configuration management, it will be well worth your time.

This is a very broad answer but you asked a very broad question. Feel free to ask detailed questions separately.


With ubuntu you should give a try to MAAS It provides a very easy to use web interface to manage PXE boot and image management. Booted up machines could register to your Puppet server or simply get their services deployed by JUJU

Not the answer you're looking for? Browse other questions tagged .