My company has to image a large amount of machines by the end of the year. Each of the machines will have hardware RAID 1 and running CentOS 6.

What options do I have for automating the OS installation on these systems?
I have a little mini desktop I can set up as an install server, and we can get a switch to create an installation network, but I'm not sure how to go about actually performing the automated installs.


Cobbler was designed for this.

| improve this answer | |
  • Have you ever used Foreman? Any idea on the difference between the two? – Igor Oct 2 '12 at 18:23
  • Cobbler is for mass deployment of operating systems and foreman is an orchestration tool which works best with Puppet as far as I know. – Itai Ganot May 10 '17 at 20:40

HowToForge has a great article to get such a process started here

Basically, the following is a high-level list of activities that would be required:

  1. Establish a DHCP server that can support the number of clients (VLANs and such)
  2. Create an HTTP server that can host the installation
  3. Create a kickstart script for the installation. The kickstart can be based off the ks-anaconda.cfg file created when the OS is installed for the first time in the root home directory (normally located at /root/)
  4. Integrate the kickstart script and HTTP server with a TFTP server, to support PXE booting.
  5. Reboot target machines and PROFIT!
| improve this answer | |

The Foreman is a great interface for managing DNS, DHCP, PXE, Kickstart and Puppet.

Edit: You are better off placing whatever software you choose for installation, on a dedicated server. (Maybe your office can spare one from on of the 500+ they have) Even if you do this once or twice a year, this provisioning infrastructure belongs with the rest of your "important" infrastructure, not on a desktop.

| improve this answer | |
  • Would you have any idea if there is a difference between Cobbler and Foreman? – Igor Oct 2 '12 at 18:17
  • 1
    @Igor Both can do DNS, DHCP, PXE and Kickstart. Foreman also has deeper integration with Puppet. It can show puppet reports, let you assign 'Roles' and act as a 'External Node Classifier' for puppet. In a diverse Network, both tools take some effort to install and properly configure. But after that, some may find Foreman easier to use. If you use puppet, there are many benefits, and you may not need to keep re-imaging all servers. If you don't use puppet, there is not much advantage either way, as both are great tools. – Not Now Oct 2 '12 at 18:48

Disclaimer: I'm a Stacki developer; a Stacki user just pointed this question out to us. At the time the question was written, Stacki wasn't yet an open source project, but it is now, under active development with a growing community.

So even though the question is old now for completeness I'd like to add Stacki as a possibility, for future Googlers.

Stacki has some overlap with Foreman/Cobbler/et al. (PXE boot with templated kickstart files, etc) but some interesting features as well. For example we have a bit torrent-like peer-to-peer installer so you aren't hammering the provisioning node. It does complex partitioning, networking, and storage controller configuration via spreadsheets you define which are version controlled and stored in a RDBMS. There's also a software config management aspect that's fully capable of setting up things as complex as OpenStack or Hadoop, but is also agnostic enough to just install something like Ansible and start your already-written playbooks.

If you want to try it, the Stacki website has a bootable ISO right on the front page, and there's also instructions on GitHub to get our pre-configured Vagrant box (which - for no particular reason - isn't hosted on Atlas but probably ought to be).

| improve this answer | |

While I fully support what @NickV is saying, do not underestimate the power of simplistic complete image approach with, say, a USB stick/disk storage. Especially if you are not accustomed with the workings of DHCP, HTTP servers, kickstart, TFTP and the rest. What I found out is that by the time you get all these up and going you could possibly get a system installed get a complete bootable disk image (with one of the many software that can do this) copy this image to as many USB devices you want and boot from it on as many systems you wish and be half done.

Now if you are setting this as a permanent distribution then the extra work described by @NickV will certainly benefit you in the long run.

| improve this answer | |
  • 2
    You do NOT want to do this with 500 machines. – Michael Hampton Oct 2 '12 at 1:32
  • Why not? If it is a one time or even a one in several years necessity. We do it for 200+ machines and works like a charm. It is pathetic to repeat yourself several hundred times but it works very nicely without having to maintain the extra infrastructure. – ank Oct 2 '12 at 7:14
  • Because of all the time you're wasting. – Michael Hampton Oct 2 '12 at 11:53
  • @ Ank. Although for my team we will probably provision 500-2k worth of servers, we will probably make one for IT to save them time on their builds too for new hires. I agree that simplicity is a key but going forward this would be a best solution overall. Thank you :) – Igor Oct 2 '12 at 18:20
  • Kickstart has other advantages -- like if someone hoses their desktop you can drop their port into the Kickstart vLAN (using your managed switch), have them reboot, and when they come back from Lunch they'll have a desktop reinstalled and ready to work. Configuring this kind of magic takes a little more time and effort, but for large organizations it's totally worth it. – voretaq7 Nov 21 '12 at 4:09

You might not want to do the USB stick image approach with 500 machines, BUT, you may very well go with the image approach using CloneZilla, multicasting over network from a server. See


for details.

| improve this answer | |

MAAS is a really good solution for this. Designed for deploying large clouds using automation. It's a lot more than a cobbler pxe boot... It manages power state, users, install images, etc.

| improve this answer | |
  • Could you please expand on this? For example add links to anything you reference. – Tim May 10 '17 at 20:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.