I have various Solaris and Linux servers that our team would like to create a common layout for installations and locations of our customized installations. Essentially, we aren't given root
access to blindly install wherever, but we do have enough access to install many apps locally or in our /opt/
directory folder, but would need to do so across most of our servers.
What I want to be able to do is set up some common solution for synchronizing a common set of tools to install across our servers, with possible customizations that select servers won't install x-1.3.0
on server y-prod
, for instance.
Additionally, it would be useful to include setting up and/or synchronizing .ssh keys across servers so that they can communicate to each other without passwords. The same would go for various .profile, .bashrc, and any additional .dot files needed for a common-setup.
Our team isn't given blind root
access to these servers, but we can install to our local /home/
or /opt/
folders, so we should theoretically be able to script out a large majority of server setup. I don't think it'd be hard to do this manually, or even to script something out in Ruby or Python, but if there is a tool out there that already does this, it would be excellent to stand on the shoulders of giants for this particular task.
I'm going to do the puppet dance at you, with the caveat that without root access, you're not going to be able to do much with installing system packages (but then, you may not have been talking about that).
Despite what a lot of people think, you can run Puppet out of a user account without too much pain -- certainly a lot less pain than you'll have trying to hand-grow anything. You'll probably be best off writing a custom package provider to handle whatever format you distribute your
/opt
-installing packages in, that'll be cleaner than trying toexec
stuff hither and yon.I think either of these ruby apps will serve you:
Choose the one that better suits you.
Well off the top of my head, there are two options:
1) Use a "reference" machine to do the initial install, then rsync the whole /opt tree around; or
2) convince your IT group to set up a nfs share someplace to install software to, then nfs mount it to the target machines.
I prefer the second option, if you assume that you can get space on a proper NFS server somewhere.