Installing and maintaining software on multiple Linux servers [duplicate]

I don't think their is "one best approach", but an oft-touted solution is to use Puppet or similar software (Chef, CFEngine).

In my experience its quite a lot of work to set up, but useful in an environment where you have a lot of similar systems. That said, I found the solution cumbersome and quite a bit of work.

Maybe "a better" way to go - and I use a hybrid solution for an organisation I work for - and in addition to using Puppet to "minimally manage" key parts of the system, I have also rolled out a PXE booting system which means its very easy to reimage systems so they all have the same "base config" without any manual labour.

Another technique in my arsenal is to have a "master machine" which can SSH into all the others and execute the same job on all of them with a single command. (We have a script which takes the entire command we want to execute as a parameter and executes it over SSH on all machines).