Background
We setup very large systems which consist of many different types of servers, switches, and routers. These systems are then shipped out to different locations and are turned on ready to go upon arrival.
We script many different areas of the install to increase our efficiency but recently have decided to try an automate at least 90% of the process.
Currently, after the system arrives at its destination, users would follow a set of procedures that we have written to customize the applications or do any "restores" that would be required. These can be a long process - sometimes 500 steps. Often times the system is wiped and the process begins again which requires the on-staff IT to move through the procedures to set everything up again.
Question
The process is a grueling one especially when the procedures must be checked and re-checked.
The options we have considered:
Scripting The scripts will not be specific to any one system which will allow us to make the proper changes depending on the location of the system.
Depending on the development of the scripts it may be difficult to make changes, time to develop scripts is substantial, if we move on (job wise) others may have a difficult time picking up the scripts, and execution time for the script.
Templates Create a template from a working base copy with all the installed components ready to go. For instance, if we a Jabber server all the proper settings would already be setup on the template and a script would be kicked off to create the proper tables and database settings on the DB server. Once the template is up it will be connected to the SQL server and ready to go.
Some of the foreseeable disadvantages here are the potential size of the templates, space required on storage, and transporting the image. Scripts would remain to do anything specific to that location if necessary.
In the vast experience of those on ServerFault, does anyone have any kind of experience with this? What is the most practical and efficient way?
My experience says that scripting would be the way to go here. My main perspective on this is that if you wanted to update the version of a given component, replacing an installer executable and answer file is tremendously easier than regenerating a "pristine master" for use as a template. My opinion might change if I knew more about the downsides to scripting you mentioned, but for now, that's where it is.