Managing Serviceguard 14th Edition, June 2007

Planning and Documenting an HA Cluster
Package Configuration Planning
Chapter 4 179
During package execution, after volume-groups and file systems are
activated, and IP addresses are assigned, and before the service and
resource functions are executed; and again, in the reverse order, on
package shutdown. These scripts are invoked by external_script
(see page 297).
The scripts are also run when the package is validated by cmcheckconf
and cmapplyconf, and must have an entry point for validation; see
below.
A package can make use of both kinds of script, and can launch more
than one of each kind; in that case the scripts will be executed in the
order they are listed in the package configuration file (and in the reverse
order when the package shuts down).
Each external script must have three entry points: start, stop, and
validate, and should exit with one of the following values:
0 - indicating success.
1 - indicating the package will be halted, and should not be restarted,
as a result of failure in this script.
2 - indicating the package will be restarted on another node, or
halted if no other node is available.
NOTE In the case of the validate entry point, exit values 1 and 2 are treated
the same; you can use either to indicate that validation failed.
The script can make use of a standard set of environment variables
(including the package name, SG_PACKAGE, and the name of the local
node, SG_NODE) exported by the package manager or the master control
script that runs the package; and can also call a function to source in a
logging function and other utility functions. One of these functions,
sg_source_pkg_env(), provides access to all the parameters configured
for this package, including package-specific environment variables
configured via the pev_ parameter (see page 296).
For more information, see the template in
$SGCONF/examples/external_script.template.
A sample script follows. It assumes there is another script called
monitor.sh, which will be configured as a Serviceguard service to
monitor some application. The monitor.sh script (not included here)