Yes, what you're suggesting is possible, and precisely what you'd use these tools in combination for. You'd use Clonezilla or Cobbler to push out the initial installs, and Puppet to keep the configurations in sync once they're installed. (And FYI, the other popular configuration manager for Linux you didn't mention is called
Clonezilla doesn't have to fit into this anywhere, though it's a somewhat interesting idea, it would probably add too much complexity for too little value to the picture. You'd probably want to use one tool to deploy the OSes initially (Clonezilla or Cobbler) and then one tool as your configuration manager (Puppet or Chef).
- I'd probably go with Cobbler, since Clonezilla is mainly used for deploying large numbers of client machines simultaneously, and presumably, you wouldn't want to try pushing out block-level hard disk OS images over the internet to new VPSes.
As far as general advice... well, we don't really do that here, as it's too braod and subjective to be a good fit, so I'll just go with the three things that it's hard to go wrong with.
- Yup, read the documentation for these tools. Both to decide which ones to settle on, and how to best use the ones you do go with.
- There is no substitute for experience, not even reading the manual. So once you've read the documentation, go get yourself some experience.
- God invented test environments so your screw ups and "learning experiences" could be private, and not bring down the production environments. Use test environments to dry run this and get your process and configurations down before pushing it out anything that's live or customer-facing.
- Plan it out.
- With this kind of project, it's critical that you do a good job of getting your initial image or network deployment configuration right.
- Make a "gold image" and stick to that standard. You're setting yourself up for a nightmare if you just clone one of your production systems when the time comes to deploy a new VPS.
And see below for a brief description of the programs in question, and links to their "about" pages, if you're not crystal clear on what they are and what they're used for.
Is an image management and deployment program. It allows you to take a disk image of one machine, and deploy the exact same image to multiple other machines. It also has some options to make basic configuration changes, and automate making those changes after pushing out an image. (Basic things like probably not wanting all 500 user machines to have the same hostname, for example.)
Typically, it's used (in an enterprise environment, at least) to deploy the same image and configurations to multiple user machines, so that everyone has the same desktop/laptop image and make helpdesk a little more tolerable.
Is a network installation manager and automation tool. It would be used, much like Clonezilla, to help automate and standardize the installation process. The most important difference between the two being that being that Cobbler standardizes the commands for doing network installs, rather than pushing out whole disk images.
Is a configuration management suite. It's used to create and maintain the same configurations on machines after they're imaged and setup.
As with Puppet, this is a configuration management suite. It's used to create and maintain the same configurations on machines after they're imaged and setup.