Setting up a cluster of Mac computers with same configuration/applications?
What is the best way to configure a group of Mac workstation clients (iMac, macbook, mac pro) for all my employees?
I want to install IDE (Netbeans, Eclipse), setup rails environment, organize folders/files, configure keyboard, mouse etc in all computers automatically.
What tools are there to do this for enterprise?
Do you mean you want a group of computers that are configured the same?
If so you have two choices:
You can either do this the fancy expensive way or the simple cheap way. Which way is best probably depends on how much money you have to spend on setting this up, whether or not the computers will be on a LAN together and how many computers you have (the 'simple' method becomes very labour intensive past a certain point).
The simple way is as follows:
Set up one mac as your 'baseline' system, and install all the software, OS updates, etc on this one and configure it exactly as you want. Then use a product such as Carbon Copy Cloner to 'back up' an image of this computer to a external hard disk. You can then 'restore' this image to however many computers you want. You will need to consider things like network names/ip addresses etc if you do this, but its perfectly doable.
If you want to set up several accounts on machines built like this to have identical home drive, dock, etc then you can do that too - prior to the backup configure a template account exactly how you want it, the copy the contents of that user's area from users/username into /system/library/User Template/appropriate folder for your local language (e.g. I think its English.lproj for English). You'll need to reset permissions on this folder before testing or things will break horribly - back up any folders you change in the User Template folder for much the same reason.
The "more enterprise-y" approach.
If you're doing things the 'fancy' way then the basics aren't that different. You'll want a mac that's usable as a server (I suggest an actual mac server of some kind for reasons that will soon become apparent) and install a tool called Deploy Studio onto it.
Create your baseline computer setup as described above, and use the tools in deploy studio to firstly upload this image to your 'server', and then to push it out to the other macs on your network as you wish. You can combine script with this to take care of machine names, add the computer to active director (or Apple Open Directory), etc.
If you use Mac OS X Server then you can take advantage of Open Directory to manage settings on the computers without the 'hacky' approach I describe to editing the local machine User Template folder above. This provides a functionality similar to Microsoft Active Directory and the like for managing computers and users.
Whether you use a Mac Server or not, if the machines are networked you can also use a product called Apple Remote Desktop to support the computers - it can do 'shared screen' for support, it can allow you to copy files (and deploy software packages) to groups of machines all at once, and all kinds of bits and pieces that sound trivial but very quickly become quite important if you do a lot of work managing your mac network.
I'd say you have 3 options
- the 'pure' carbon copy cloner simple approach.
- Use CCC (or deploy studio) to deploy the 'baseline' machines and Apple Remote Desktop to deploy packages afterwards
- Mac Server with Open Directory, Apple Remote Desktop and Deploy Studio to manage everything fully.
The choice is yours.
Edit I should add that Carbon Copy Cloner and Deploy Studio are both "donate-ware" so you can download and try them both for free. If the "simple method" works for you then you can be up and running very cheaply, and if the "enterprise method" is what you need then you can still get a major component of this going for very little investment.
If you're trying to make a set of different computers all have the same configuration, then you're looking for what is referred to as configuration management. You'll want to read up a little bit before you start, because it's a huge area.
The most common (open source) tools at the moment seem to be bcfg2, chef, cfengine3, puppet (in alphabetical order since choosing between them appears to be almost religious).
If that's too much and your needs are not complex perhaps you can limit to (merely) installing certain software packages from macports/fink by running a single script on each host. The downside of this approach is maintenance (what happens when you want to update things?) and limited flexibility with config files, etc.