5

Currently I have 2 VPSes, setup and configured almost exactly like this, with some other minor Nginx configurations. I did it all manually

I want to get few other VPSes and deploy the exact same setup and configuration but I'm not sure which tool to use. All VPSes come with root access and SSH.

I've read on ServerFault about projects such as Puppet, Cobbler and CloneZilla and from what I understand, Puppet and Cobbler serve different purpose but where does CloneZilla fit in this? Can I just clone from one server fresh install/setup using CloneZilla, deploy to another server and use Puppet+Cobbler to manage future updates etc?

Also what advice would you give to first time user of these tools?

  • Every VPS is on a different location and serves different websites (not connected at all)
  • Exact setup = LEMP+Varnish+WordPress [Munin+Nagios+Awstats]
HopelessN00b
  • 53,385
  • 32
  • 133
  • 208
Matt Norad
  • 65
  • 4

3 Answers3

7

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 Chef.)

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.

  1. RTM.
    • 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.

  2. Practice.
    • 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.

  3. 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.

Clonezilla

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.

Cobbler

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.

Puppet

Is a configuration management suite. It's used to create and maintain the same configurations on machines after they're imaged and setup.

Chef

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.

HopelessN00b
  • 53,385
  • 32
  • 133
  • 208
1

You can also consider (R)?ex, it is easy to learn, and helps in configuration management and software deployment. It needs SSH or HTTP on his nodes.

Doka
  • 156
  • 3
0

your link points to your blog not the servers specs ... etc if you have already servers and you want to ported to puppet/chef I suggest blueprint - this is a python tool

pip install blueprint
blueprint create -P myserver # this does puppet manifests
blueprint create -C myserver # this does chef
silviud
  • 2,677
  • 2
  • 16
  • 19