During development , testing, and deployment, I have a need to fully automate a windows 2003 server setup.
I'm trying to find the best way to automatically delpoy a server, which installs the OS, software dependencies that I have (for example SQL server, .net framework + my own application code).
From what I've found , there are two approaches to this issue:
- Disk Cloning (also known as disk imaging). Using tools like Ghost, Acronis.
- Unattended installation of OS + SW. Using RIS (now called WDS), or Unattended, basically running an unattended installation of the OS and then an unattended installation of all software needed at first boot (using the various command line flags of windows installation managers like MSI,InstallSheld.
Unattended installation pros:
- The advantage of having the entire installation & configuration self documented in the scripts/configuration that create the unattended installation
- These scripts/configuration can sit in a revision control system.
- Using DriverPacks can give the flexibility to install on just about any hardware.
Unattended installation cons:
- Take much longer to fully deploy.
- More work to accomplish than disk cloning where you just have to install , configue a server manually, and then clone it.
Disk Cloning pros:
- Less work to create clones.
- Fast deployment.
Disk Cloning cons:
- Very hard to keep track of configuration/installation changes that took place before cloning as none of it is scripted.
- The resulting deployment is not as "clean" as a scratch installation, requiring he use of SysPrep or the likes.
- Hardware / Driver issues might come up when restoring a disk clone to a new hardware.
I know this is not strictly a programming question (although writing an unattended windows + S/W installation does require some coding), but it is something we all have to do from time to time and we might as well come up with the best possible way to do this.
Edit : More info on the situation: Virtualization is a nice option for development, but for testing and especially stress testing, real hardware ,with fast disks will have to be used.
The need is to develop a Windows Server 2003 & SQL Server 2005 server appliance & an in house application. So this will be deployed in house for development & testing and eventually be sold to customers.
So basically what I'm asking is: What is the recommended way to install development,testing and production servers? Disk Cloning ? Automatic installation? A combination of both?