Creating Customization Scripts
Scripts can customize the archive. Use these scripts for the following purposes:
A precreation script validates the archive at creation time and prepares the archive for later customization, especially differential archives. This script also can create a user-defined section in the archive.
A predeployment script validates the archive during installation and prepares the archive for later customization.
A postdeployment script reconfigures a new system image on a clone system.
A reboot script processes a final reconfiguration after the system is rebooted.
For guidelines about creating scripts, see Guidelines for Creating a Custom Script.
To Create a Precreation Script
This script runs during archive creation. The script has various uses.
Validates the contents and the integrity of the software. The script fails the archive creation if the integrity is broken.
Prepares products for later customization on clone system.
Registers other installation scripts dynamically during archive creation.
Adds a message to the flash-creation summary file. The message must be short and record only that scripts were started and finished and the results. You can view the results in the summary section.
- Create the precreation script. Follow the guidelines that are described in Guidelines for Creating a Custom Script.
- Store the script in the /etc/flash/precreation directory.
Example 3-1 Excerpts From a Precreation Script
The following examples are excerpts from a precreation script.
To log the start time in the summary section, use the following example:
echo "MyApp precreation script started">> $FLASHDIR/summary
To check the software integrity, use the flcheck command. This command cannot be used at the command line. The syntax for this command is as follows:
flcheck software component files and directories ...| -
For example, to validate the files and directories, use the following example:
flcheck software component files and directories
If Not in selection - refuse creation
echo "Myapp Integrity Damage">>$FLASHDIR/summary
Or, to keep new files and directories that are unexpected and not fail the archive creation, use the following example:
flcheck software component files and directories
If Not in selection include by force
flinclude software component
To register deployment scripts and data, use the following example:
Copy the script to the following directory:
cp predeployment script /etc/flash/predeployment
Or, to register the script dynamically during archive creation, copy the script to the following directory.
cp predeployment script $FLASHDIR/predeployment
To see application-specific data in a user-defined section, use the following example:
cp custom section $FLASHDIR/custom_sections/MyApp
To log the success of the installation in the summary section, use the following example:
echo "product one flash preparation started." >>$FLASH_DIR/summary
...
echo "product one flash preparation finished successfully">>$FLASH_DIR/summary
Example 3-2 Precreation Script
#!/bin/sh
echo "Test precreation script started" >> $FLASH_DIR/summary
cat /opt/TestApp/critical_file_list | flcheck -
if [ $? != 0 ]; then
echo "Test precreation script failure" >> $FLASH_DIR/summary
exit 1
fi
echo "Test precreation script started" >> $FLASH_DIR/summary
/opt/TestApplication/license_cloning
$FLASH_DIR/predeployment/.TestApplicationLicenceTransfer \
$FLASH_DIR/custom_sections/TestApplicationLicenceCounter
echo "Test precreation script finished" >> $FLASH_DIR/summary
exit 0
Using a Precreation Script to Create a User-Defined Archive Section
A precreation script can create a user-defined section in the archive to provide
specific application information. This section is intended for archive maintenance. The script must
be put in the $FLASH_DIR/sections directory. The Solaris Flash archive does not process
a user-defined section. For example, a section could contain a description of the
archive or perhaps a script to check the integrity of an application.
A user-defined section requires the following format.
Must be line oriented
Must terminate with newline (ASCII 0x0a) characters
Can have unlimited length of individual lines
Must encode binary data by using base64 or a similar algorithm
To Create a Predeployment Script
This script is run before the installation of the archive. If the
script is meant to validate the archive, it is kept in the archive.
If the script is meant to preserve local configurations on the clone system,
it is kept on the clone system. This script also can analyze and
collect local data necessary for later customization. For example, client-specific information can be
saved before being overwitten by files about to be extracted. This information can then
be used in the final stage after extraction.
- Create the predeployment script. Follow the guidelines that are described in Guidelines for Creating a Custom Script.
- Store the script in one of the following directories.
For archive validation, store in the /etc/flash/predeployment directory.
If you are referencing with a precreation script, store in the $FLASH_DIR/preinstall directory.
If you are preserving configurations on a clone system, provide the path to the script that is stored on the clone system with the local_customization keyword in the JumpStart profile.
Example 3-3 Predeployment Script
#!/bin/sh
$FLASH_DIR/TestApplication/check_hardware
if [ $? != 0 ]; then
echo Unsupported hardware
exit 1
fi
$FLASH_DIR/TestApplication/check_licence_key
if [ $? != 0 ]; then
echo No license for this host
exit 1
fi
$FLASH_DIR/TestApplication/deploy_license_key \
$FLASH_DIR/TestApplication/.TestApplicationLicenceTransfer
$FLASH_DIR/TestApplication/save_data_files $FLASH_DIR/flash
exit 0
To Create a Postdeployment Script
This script is kept in the archive or stored in a local
directory on the clone system and runs after installation. The script reconfigures a
new system image on a clone system. If the script is stored in
the archive, the changes affect all the clone systems. If the script is
stored in a local directory on the clone system, the changes affect only
the clone system. For example, client-specific information that is saved by a predeployment
script can be applied to the clone environment, completing the installation.
Postdeployment scripts can also be used to clean up files after the archive
is installed. For example, log files such as those files in /var/adm
can be cleaned out.
Note - Not all log files need a script for cleanup. Log files in
/var/tmp can be excluded when the archive is created.
- Create the postdeployment script. Follow the guidelines that are described in Guidelines for Creating a Custom Script.
- Store the script in one of the following directories.
To affect all clone systems, store the script in the /etc/flash/postdeployment directory.
To affect only a local clone system, provide the path to the script that is stored on the clone system with the local_customization keyword in the JumpStart profile.
Example 3-4 Postdeployment Script
#!/bin/sh
$FLASH_DIR/TestApplication/clone_reconfiguration
$FLASH_DIR/TestApplication/restore_data $FLASH_DIR/flash
To Create a Reboot Script
This script is kept in the archive and runs after the system
is rebooted. The script does any final configuration after system reconfiguration.
After you install the Solaris Flash archive on a clone system, some host-specific
files are deleted and are re-created for the clone machine. The installation program
uses the sys-unconfig(1M) command and the sysidtool(1M) programs to delete and re-create host-specific network
configuration files. The files that are re-created include, for example, /etc/hosts, /etc/defaultrouter, and /etc/defaultdomain.
You can use the reboot script for any final reconfiguration.
- Create the reboot script.
- Store the script in the /etc/flash/reboot directory.
Example 3-5 Creating a
reboot Script
#!/bin/sh
$FLASH_DIR/TestApplication/finalize_license