Some system configurations are difficult to check with an automated
program and ideally should be generated by a program so that they are at
least syntactically correct. Establish a practice of testing these components
in some other way that gives you a high level of confidence that they are
working correctly. For example, under UNIX, the system boot scripts are often
modified by hand to change the set of services that are started at boot time or
perhaps to configure the behavior of the network interfaces. It is important
that these scripts be tested carefully, because an error may prevent the system
from completing the reboot cycle. In most commercial UNIX systems, the
start scripts are split into many small pieces, one for each service, that can be
individually tested so that you can be reasonably confident that changes and
additions are correct.
If the start scripts are not tested in advance, problems with them will not
be found until the next reboot. Therefore, it is critical to make boot scripts
completely reliable. Machines seem to reboot at the most inconvenient times.
Systems crash late at night, when you are on vacation, and so on. If you
find out only at the next reboot that a script you wrote has a typo, you are
making this discovery at a very bad time. To make matters even worse, good
systems stay up for months on end. It is extremely difficult to remember what
changes have been made since the last reboot, particularly when it happened
months ago. Even if the site has a policy of logging changes in a log book or a
trouble-ticket system, it can be difficult to find the relevant change if months
have gone by.