Q: What's the best approach to remotely provisioning our Windows servers?
A: Provisioning servers has three automation goals, or layers: 1) Installing the OS; 2) Installing the system software which
makes up the server's "personality"; 3) Installing the application code and content. Let's look at the best ways to accomplish
these goals.
Two approaches for installing the OS exist: 1) disk cloning; and 2) unattended scripted install. For desktop provisioning,
disk cloning is the primary approach for installing not just the OS, but also the entire desktop image. For server provisioning
however it is used more sparingly for server installations for the following reasons:
1. It assumes identical server hardware and identical base network and hardware settings.
2. Device-driver differences across servers (e.g. storage drivers) lead to creating multiple images.
3. Servers are updated frequently with security and OS patches and configuration updates, often requiring re-building of OS
images.
4. Fixing SIDs, network settings, service specific users/passwords and other parameters after the cloning process is a bigger
issue on servers versus desktops, due to the higher degree of configuration complexity, as well as unique security and network
settings.
Although disk cloning is slightly faster than unattended scripted installation, it is recommended only for the OS layer of
server provisioning where server hardware is similar and only for the base network configuration.
Unattended scripted install has the benefit of parameterization of unique server differences, as well as the ability to invoke
the vendor recommended system utilities (from Dell, Compaq, etc.) that participate in the unattended install process.
Both disk cloning and unattended scripted installs can be performed remotely using a PXE/DHCP server. OS vendors and most
server provisioning vendors (Altiris, BladeLogic, etc.) provide a PXE based solution for provisioning the OS over the network.
This involves installing such things as monitoring and backup agents (BMC and Veritas) and middleware/infrastructure software (such as Exchange, Apache or IIS, etc.) - and should be accomplished using a collection of unattended scripted installs. A master script or XML instruction file calls the individual software packages or scripts in the appropriate sequence, passing server specific environment parameters (hostname, IP, DNS server, etc.) as each step occurs. This layered approach allows server personalities to be easily modified. Plus, the parameters are the only things that need to change when the same layer is installed on another server, which drastically improves efficiency and reduces storage costs.
Installing these should also be accomplished using a collection of unattended scripted installs. While few companies make
investments in standardizing the packaging and deployment of this layer, doing so allows for the automation of the entire
server stack provisioning process.
In summary, for remote server provisioning, there is a trade-off between provisioning the OS via disk cloning versus scripted
install. Though disk cloning is faster, it should be used in more homogenous environments. Scripted installs should be used
in more complex or diverse environments to allow for flexible, efficient modifications and to reduce storage costs.
For the system layers, a scripted install is recommended in most cases. For application updates, a scripted install is recommended
100% of the time, simply because the pace of change at this layer is so high, that disk cloning approach will result in an
exploding collection of images.
The benefit of provisioning each layer in an automated manner and combining them into a fully automated process will greatly
increase IT agility and consistency of server and application builds.