Managing HP Serviceguard for Linux, Eighth Edition, March 2008

Planning and Documenting an HA Cluster
Package Configuration Planning
Chapter 4130
On package startup and shutdown, as essentially the first and last
functions the package performs. These scripts are invoked by means
of the parameter external_pre_script (see page 226); or
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 means of the
parameter external_script (see page 226).
The scripts are also run when the package is validated by cmcheckconf
and cmapplyconf.
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 225).
For more information, see the template in
$SGCONF/examples/external_script.template.