Chapter THIRTEEN. Installing Software with Software Distributor and Ignite-UX

Chapter Syllabus

  • 13.1 Using swinstall to Push Software across the Networkswinstall to Push Software across the Network

  • 13.2 Installing a Complete Operating System Using Ignite-UX

  • 13.3 Setting Up a Golden Image

  • 13.4 Making a Recovery Archive

In this chapter, we start the discussion on installing software from the premise that we all know the basics of installing, removing, and updating software using basic Software Distributor commands like swinstall, swremove, and the various associated logfiles like swagentd.log. We start by looking at Software Distributor as a tool for installing software across the network. This should not be new to us; most administrators should be perfectly aware of pulling software across the network using swinstall. The problem with this is that you need to log in to each server in turn and issue a swinstall command. We look at using Software Distributor to push software across the network. From a central software depot, we issue a single swinstall command to push software to a collection of machines on our network. From there, we discuss using Ignite-UX to push an entire operating system image onto a client. That operating system image can either be a fresh installation of it can be an image of our ideal server—a so-called Golden Image, containing all of the customizations an ideal server would require to exist in a complex network infrastructure.

The installation media we have is used not only for installing the operating system but also to help us repair it after a disaster or major corruption. Although reinstalling a system using a Golden Image is relatively quick, it means a loss of some data stored in the operating system disks. We can try to affect a recovery of the operating system using the Recovery Shell available on the Install media. We can affect some complex recovery procedures that would normally render a system unusable. We look at scenarios where booting the system in maintenance mode boot fails and how we can attempt to recover the system using the Recovery Shell. As always with troubleshooting, there comes a time when a good administrator will say, “enough is enough.” With good backup and recovery procedures, no machine should be out of action for too long.

Using swinstall to Push Software across the Network

We look at the steps necessary to set up Software Distributor to push software across the network. I assume that you have already set up a software depot containing software, patches, or a combination of both; we looked at those issues in Chapter 12. The process of pushing software to a remote host is known in Software Distributor documentation as Remote Operations. This capability became available as of HP-UX 11i. In general, all Software Distributor features that apply to local operations also apply to Remote Operations. The limitations of Remote Operations include the following:

  • You cannot use Remote Operations to directly push an entire HP-UX operating system update to remote systems.

  • Remote operations do not apply to the following SD-UX commands:

    • install-sd

    • swpackage

    • swmodify

I am going to perform Remote Operations from the same machine that hosts the depots containing software products. This need not be the case: You could initiate a swinstall from one node that pushes software from a depot on some remote server onto distant Remote Operations clients. Setting up Remote Operations is relatively simple and can be summarized as follows:

  1. Set up a software/patches depot on a central server (we will call this server our depot server).

  2. Make a special Service Control Manager depot available on the depot server.

  3. Set up Remote Operations Agent software on each client machine.

  4. On the depot server, set up Remote Operations GUI (optional).

  5. Push software to remote clients.

Let's look at each of these steps in a little more detail.

Set up a software-and-patches depot on the depot server

Setting up software and associated patches can take some time and some considerable disk space. In Chapter 12, we looked at the pros and cons of setting up a depot that contained not only software but any associated patches as well. The default behavior for Software Distributor is to install any associated patches available in the same depot as the base software; Software Distributor utilizes the option autoselect_dependencies=true. This can make installing up-to-date software somewhat easier and more efficient. In this example, I have a number of depots available to me; I have spent some considerable time setting up these depots:

root@hpeos004[] swlist -l depot
# Initializing...
# Target "hpeos004" has the following depot(s):
  /software/11i-PA/FooProd
  /software/11i-PA/patches
  /software/11i-PA/core
  /software/11i-PA/IPv6
  /software/11i-PA/SG11.14
root@hpeos004[]

To demonstrate Remote Operations, I utilize the IPv6 depot that contains IPv6 software including additional IPv6-enabled utilities:

root@hpeos004[] swlist -d @ /software/11i-PA/IPv6
# Initializing...
# Contacting target "hpeos004"...
#
# Target:  hpeos004:/software/11i-PA/IPv6
#

#
# Bundle(s):
#

  DHCPv6                B.11.11.01     DHCPv6 web release
  IPv6NCF11i            B.11.11.0109.5D IPv6 11i product bundle
  IPv6Patches           B.11.11        Patches to enable IPv6 functionality in standard OS software
  Sendmail-811          B.11.11.01.005 Sendmail-8.11.1 special release upgrade
  WU-FTP-261            B.11.11.01.003 WU-FTPD-2.6.1 special release upgrade
root@hpeos004[]

My aim is to install these products and related patches onto a number of nodes in my network. I need to ensure that these clients allow the depot server access to their system in order to allow an install to take place from a remote location.

Make Service Control Manager depot available on the depot server

Service Control Manager (SCM) is a software product made available in HP-UX 11i. SCM includes lot of the functionality of SAM. One major difference with SCM is that it is simple to include other nodes in a network into the SCM framework whereby management of these nodes can be controlled centrally. To make management of multiple nodes even easier, SCM allows for a central server to associate UNIX users with particular roles. These roles, e.g., the role of Operator, can be given access to specific tasks with the SCM framework. Part of that framework allows for tasks to be executed on remote machines. In this way, an Operator can perform specific tasks on multiple nodes from one central location: the SCM central server. Part of the SCM product is a Software Distributor depot. The depot can be installed on remote clients that allow Software Distributor to perform a push of software components over the network. We make this depot available to clients simply by registering the depot on the depot server:

root@hpeos004[] swreg -l depot @ /var/opt/mx/depot11

=======  09/29/03 12:19:44 BST  BEGIN swreg SESSION (non-interactive)

       * Session started for user "root@hpeos004".

       * Beginning Selection
       * Targets:                /var/opt/mx/depot11
       * Selection succeeded.



=======  09/29/03 12:19:44 BST  END swreg SESSION (non-interactive)

root@hpeos004[]

There is a depot for HP-UX 11.X clients as well as for HP-UX 10.X clients. There are two software filesets in this depot:

root@hpeos004[] swlist -l fileset -s /var/opt/mx/depot11
# Initializing...
# Contacting target "hpeos004"...
#
# Target:  hpeos004:/var/opt/mx/depot11
#

# AgentConfig                                  ServiceControl Agent Config
  AgentConfig.SCR-CONFIG                       agent configuration for SCR
  AgentConfig.SD-CONFIG                        Managed Node Agent Configuration for SD
root@hpeos004[]

We need only the AgentConfig.SD-CONFIG fileset to enable Remote Operations for Software Distributor. You can install the other fileset if you wish; it will enable Remote Operations for a utility known as System Configuration Repository. By installing the AgentConfig.SD-CONFIG software in this depot, we are actually modifying the Software Distributor ACLs in order for client machines to allow the depot server to install software onto those clients remotely.

Set up Remote Operations Agent software on each client machine

We will install the software on all client machines, from the SCM depot located on the depot server. The software is actually a single file called /usr/lbin/sw/setaccess. This script is run as part of the post-installation phase. This script actually manipulates the Software Distributor ACLs on the client machine. Here are the default ACL entries for one of our clients:

root@hpeos003[] swacl -l global_product_template
#
# swacl    Global Template for Product Access Control Lists
#
# For host:  hpeos003
#
# Date:  Mon Sep 29 12:44:31 2003
#

# Object Ownership:  User= root
#                    Group=sys
#                    Realm=hpeos003
#
# default_realm=hpeos003
object_owner:crwit
any_other:-r---
root@hpeos003[]

We will install the AgentConfig.SD-CONFIG fileset on this node:

root@hpeos003[]swinstall -s hpeos004:/var/opt/mx/depot11 AgentConfig.SD-CONFIG

=======  09/29/03 12:51:41 BST  BEGIN swinstall SESSION
         (non-interactive) (jobid=hpeos003-0043)

       * Session started for user "root@hpeos003".

       * Beginning Selection
       * Target connection succeeded for "hpeos003:/".
       * Source connection succeeded for
         "hpeos004:/var/opt/mx/depot11".
       * Source:                 hpeos004:/var/opt/mx/depot11
       * Targets:                hpeos003:/
       * Software selections:
             AgentConfig.SD-CONFIG,a=HP-UX_B.11.00_32/64,v=HP
       * Selection succeeded.


       * Beginning Analysis and Execution
       * Session selections have been saved in the file
         "/.sw/sessions/swinstall.last".
       * The analysis phase succeeded for "hpeos003:/".
       * The execution phase succeeded for "hpeos003:/".
       * Analysis and Execution succeeded.


NOTE:    More information may be found in the agent logfile using the
         command "swjob -a log hpeos003-0043 @ hpeos003:/".

=======  09/29/03 12:51:53 BST  END swinstall SESSION (non-interactive)
         (jobid=hpeos003-0043)

root@hpeos003[]

Let's see what has happened to my Software Distributor ACL entries:

root@hpeos003[] swacl -l global_product_template
#
# swacl    Global Template for Product Access Control Lists
#
# For host:  hpeos003
#
# Date:  Mon Sep 29 12:53:37 2003
#

# Object Ownership:  User= root
#                    Group=sys
#                    Realm=hpeos003
#
# default_realm=hpeos003
object_owner:crwit
user:root@hpeos004:crwit
any_other:-r---
root@hpeos003[]

As you can see, my depot server now has full access to this machine in order to install and manage Software Distributor objects.

Some people would say that, technically, you don't need to install the AgentConfig.SD-CONFIG fileset to enable remote operations. If you know what you are doing, you could simply manipulate the Software Distributor ACLs by hand. Please be very careful if you adopt this mindset.

REMOTE OPERATIONS AND SOFTWARE DISTRIBUTOR ACLS

Software Distributor Access Control Lists (ACLs) offer a greater degree of selectivity than do permission bits. An ACL extends the concept of the HP-UX file system's permission bits by letting you specify different access rights to several individuals and groups instead of just one of each.

The ACLs manipulated during the swinstall process are those protecting the source host (the host ACL), the host's template ACLs used in subsequent operations to produce ACLs for products (the global_product_template), and depot/root containers (the global_soc_template). When you copy these ACLs, users on the source host are immediately granted the same permissions on the destination host as they have locally on the source host. In addition, an entry for the superuser at the source host was added. This lets the root user on the depot server perform software distribution tasks on the remote system without having to reconfigure ACLs.

If you need to change security, the following tasks can be performed (i.e., to understand and modify the default setup):

  • Listing user access

  • Allowing user to manage products in a depot

  • Allowing user to manage roots

  • Restricting read access to a depot

  • Adding target hosts

  • Restricting access to a depot temporarily

  • Closing the SD-UX network

Above, we can see that the depot server (hpeos004) has been included in the product's (global_product_template) ACL. Similar output would be achieved if we specified a level of global_soc_template or host.

If the AgentConfig.SD-CONFIG fileset is not available or it's installation failed in some way, we would have to ensure that the ACLs were set up accordingly. In this case, the following commands would have to be run on the client node hpeos003:

Allow access to the host/root:

# swacl -l host -M user:root@hpeos004:a
# swacl -l root -M user:root@hpeos004:a

Ensure access to future products and depots:

# swacl -l global_product_template -M user:root@hpeos004:a
# swacl -l global_soc_template -M user:root@hpeos004:a

We may have to manage the default ACLs on the depot server itself, e.g., to enable access to existing depots and products in those depots:

# swacl -l depot -M user:root@hpeos004:a @ /software/11i-PA/IPv6
# swacl -l product_template -M user:root@hpeos004:a @ /software/11i-PA/IPv6

You need to be careful if you change the hostname of an existing depot server. There is a concept called a default realm, which is defined as follows:

“An ACL defines a default realm for an object. The realm is currently defined as the name of the host system on which the object resides. When using swacl to view an ACL, the default realm is printed as a comment in the header.”

If we were to change the hostname of our server, this header stating the default realm would be wrong. In such a situation, you will need to edit the files in the directory /var/adm/sw/security:

root@hpeos004[security] pwd
/var/adm/sw/security
root@hpeos004[security] grep -i realm *
_ACL:# default_realm=hpeos004
_OWNER:# default_realm=hpeos004
_PROD_DFLT_ACL:# default_realm=hpeos004
_SOC_DFLT_ACL:# default_realm=hpeos004
root@hpeos004[security]

For more information on Software Distributor's ACLs, refer to document B2355-90699: Software Distributor Administration Guide for HP-UX 11i available at http://docs.hp.com.

On the depot server, set up Remote Operations GUI (optional)

The Software Distributor commands swinstall, swcopy, and swremove have enhanced GUI interfaces relating to Remote Operations. To provide access to these enhanced GUI interfaces, we simply perform the following command on our depot server:

root@hpeos004[security] touch /var/adm/sw/.sdkey
root@hpeos004[security] ll /var/adm/sw/.sdkey
-rw-rw-r--   1 root       sys              0 Sep 29 13:51 /var/adm/sw/.sdkey
root@hpeos004[security]

This step is not required when you use Software Distributor from within Service Control Manager.

Push software to remote clients

I have performed the necessary steps to set up three machines as Remote Operations clients: hpeos001, hpeos002, and hpeos003. I can now use a single swinstall command to install all the product/patches from my IPv6 depot onto all of these Remote Operations clients:

root@hpeos004[] swinstall -x patch_match_target=true -x autoreboot=true -s /
software/11i-PA/IPv6 * @ hpeos001 hpeos002 hpeos003

=======  09/29/03 14:13:34 BST  BEGIN swinstall SESSION
         (non-interactive) (jobid=hpeos004-0193)

       * Session started for user "root@hpeos004".

       * Beginning Selection
       * Target connection succeeded for "hpeos001:/".
       * Source connection succeeded for
         "hpeos004:/software/11i-PA/IPv6".
NOTE:    The software "IPV6AA" was successfully marked, but it depends
         on the following software items which could not be found in
         the source. However, these items may already be in the target.
         This will be checked during the Analysis Phase:
         PHNE_25644.NET2-KRN,fa=HP-UX_B.11.11_32 |
         PHNE_25644.NET2-KRN,fa=HP-UX_B.11.11_64
         PHNE_25644.CORE2-KRN,fa=HP-UX_B.11.11_32 |
         PHNE_25644.CORE2-KRN,fa=HP-UX_B.11.11_64
ERROR:   Could not apply the software selection "PHKL_25233" because
         there are no product variations that are compatible with the
         destination host(s).
...
NOTE:    More information may be found in the agent logfile using the
         command "swjob -a log hpeos004-0194 @ <host>:<path>".

=======  09/29/03 14:16:07 BST  END swinstall SESSION (non-interactive)
         (jobid=hpeos004-0193)

root@hpeos004[]

As with any swinstall process, we need to monitor any ERRORS and correct them if they will stop an individual installation on a specific node. Once complete, we need to check the swagent.log file on all the client nodes to ensure that each installation was successful. We need to check that the software itself was installed and in good working order. Just because we issued a single swinstall command does not mean that we have less of a job to check up on all the affected client nodes.

root@hpeos003[] swlist -l product |grep -i -e dhcp -e send -e wu -e ipv6
  DHCPV6                B.11.11.01     DHCPv6 Web release
  IPV6AA                A.01.01.5D     IPv6 11i product
  PHSS_24261            1.0            HP DCE/9000 1.8 DCE Client IPv6 patch
  SMAIL-811             B.11.11.01.005 sendmail(1m) 811 special release upgrade
  WUFTP-26              B.11.11.01.003 wu-ftpd 2.6.1 special release upgrade
root@hpeos003[]

In this instance, it looks like the IPv6 software was loaded successfully, as was a selection of the patches from the depot server.

Installing a Complete Operating System Using Ignite-UX

Ignite-UX has been around for a number of years now. With HP-UX 11.0, we saw the product being shipped as a standard part of the operating system. Our installation media is in Ignite-UX format. Some people regard Ignite-UX as an extension to Software Distributor. I can understand why this misconception is prevalent. The only real relationship between Ignite-UX and Software Distributor is that Ignite-UX can understand and interpret Software Distributor software depots. One of the main differences is that Software Distributor only knows how to interpret Software Distributor depots, while Ignite-UX can understand other software formats, e.g., tar and gzip to name a few. As a result, Ignite-UX could be used to distribute not only HP-UX operating system software but also third-party software in a non-SD format.

There are various configurations we will look at:

  • Set up an Ignite-UX server to utilize a Core OS depot.

  • Add additional products and/or patches into a Core OS depot.

  • Set up a Golden Image to ignite future clients with.

Set up an Ignite-UX server to utilize an existing Core OS depot

Here, we look at the steps necessary to set up an Ignite-UX server in order to allow for the installation of a complete operating system. Initially, we look at using a Software Distributor depot that is an swcopy of the Core OS Install and Recovery Media. Ignite-UX can be managed via the intuitive GUI /opt/ignite/bin/ignite. There is a command called /opt/ignite/lbin/setup_server that can help you in setting up some of the one-time configuration changes (see man setup_server for details). We look at the individual tasks in the setup procedure and perform them by hand:

  • Install the Ignite-UX software.

  • Set up temporary IP addresses for boot clients.

  • Set up tftp and instl_bootd services in /etc/inetd.conf.

  • Set up /etc/exports to give NFS access to the /var/opt/ignite/clients directory.

  • Set up Ignite-UX parameters to be used during the installation of the operating system.

  • Set up a DHCP server (optional).

Because these tasks don't take long, I will perform them now.

INSTALL THE IGNITE-UX SOFTWARE

Ignite-UX is part of the Basic Operating Environment for HP-UX 11i. As such, it should already be installed:

root@hpeos004[] swlist -a is_reboot Ignite-UX
# Initializing...
# Contacting target "hpeos004"...
#
# Target:  hpeos004:/
#

# Ignite-UX
  Ignite-UX.BOOT-KERNEL                         false
  Ignite-UX.BOOT-SERVICES                       false
  Ignite-UX.FILE-SRV-11-11                      false
  Ignite-UX.IGNITE                              false
  Ignite-UX.IGNT-ENG-A-MAN                      false
  Ignite-UX.MGMT-TOOLS                          false
  Ignite-UX.OBAM-RUN                            false
  Ignite-UX.RECOVERY                            false
root@hpeos004[]

As you can see, even if it isn't installed, it doesn't require a reboot when you do install it.

SET UP TEMPORARY IP ADDRESSES FOR BOOT CLIENTS

Clients wishing to perform an installation of the OS will be assigned a temporary IP address when they boot from the Ignite-UX server over the network. You need to assign enough temporary IP addresses for the maximum number of clients who will boot simultaneously over the network. The file that needs to be edited in order to set up temporary IP addresses for boot clients is the file /etc/opt/ignite/instl_boottab:

root@hpeos004[] vi /etc/opt/ignite/instl_boottab
#
# /etc/opt/ignite/instl_boottab:  Used by /opt/ignite/lbin/instl_bootd(1M)
#
# This file contains a list of IP addresses to be reserved for booting
# clients during an the HP-UX install process. These addresses are
# used only during the boot period and not at any other time, thus
# they are temporary.
#
# A list of (one or more) IP addresses should be entered below, one
# per line, beginning in the first column. The IP addresses will be
# cycled through for each consecutive client that boots. If many
# clients are booting at the same time, it may be necessary for you to
# enter several addresses to keep the server from denying any client
# access.
#
# When instl_bootd allocates an IP address to a client, it will
# change the line to include the clients network hardware address and
# the date/time that it booted (fields 2 and 3). This data is for use
# by instl_bootd when determining which address to use next time.
#
# File Syntax:
#
#    - Comments can be included as appropriate.  They are denoted
#      by the '#' character and end-of-line. They can appear at the
#      end of an IP address line, or on a line by themselves. Blank
#      lines are also allowed.
#
#   Non-comment lines can contain 1 or 4 fields. Fields are separated
#   by the ":" (colon) character. Each field is described as follows:
#
#       Field 1: Must start in the first column, and contain an IP
#                address in "dot" notation. This field is not optional.
#
#       Field 2: Can be empty, or can specify the LAN hardware address
#                of the system that last used the entry, or (depending
#                on field 4), the only system that is allowed to use it.
#                This field is updated automatically by instl_bootd.
#
#       Field 3: Can be empty, or can specify the date/time of the last
#                time that the IP address was used. This field is also
#                updated by instl_bootd. It should be left empty when
#                adding new entries.

#
#       Field 4: Can be empty, or the keyword "reserve" can be
#                specified to prevent an IP from being allocated to
#                any client not matching the hardware address value in
#                field 2. If field 2 is empty ("::"), then when the
#                entry is issued to a client, that entry/IP-Address
#                will become reserved for that system and will not be
#                allocated to any other systems.
#
# Example: (lines are intentionally commented out)
# 15.1.54.125                             # IP address usable by any client
# 15.1.54.126:080009123456:19960116132331 # Entry usable by all (used already)
# 15.1.54.127:::reserve                   # Reserve this entry once used.
# 15.1.54.138:080009123457::reserve       # Reserve an IP-Addr for specific host
#
192.168.0.45:::
192.168.0.46:::
192.168.0.47:::
192.168.0.48:::
192.168.0.49:::
192.168.0.75:::
192.168.0.76:::
192.168.0.77:::
192.168.0.78:::
192.168.0.79:::
root@hpeos004[]

This file does exist by default, but does not contain any valid entries. The comments describe the necessary fields. As you can see, I have set up five IP address for both subnets that my server is connected to (it is important to remember to include all subnet addresses that a client can boot from).

We should ensure that these IP addresses are not disallowed by the file /var/adm/inetd.sec.

The file /etc/opt/ignite/inst_boottab is used by the instl_bootd process that we set up next.

SET UP TFTP AND INSTL_BOOTD SERVICE IN /ETC/INETD.CONF.

We need to ensure that the following lines are included in the file /etc/inetd.conf:

root@hpeos004[] vi /etc/inetd.conf
...
# Before uncommenting the "tftp" entry below, please make sure
# that you have a "tftp" user in /etc/passwd. If you don't
# have one, please consult the tftpd(1M) manual entry for
# information about setting up this service.

tftp        dgram  udp wait   root /usr/lbin/tftpd    tftpd
        /opt/ignite
        /var/opt/ignite
...
instl_boots dgram udp wait root /opt/ignite/lbin/instl_bootd instl_bootd
...
root@hpeos004[] inetd -c
root@hpeos004[]
root@hpeos004[] pwget -n tftp
tftp:*:510:1:Trivial FTP user:/home/tftpdir:/usr/bin/false
root@hpeos004[]

I have included the comment lines relating to tftp to remind you about the need for a tftp user in the file /etc/passwd. Most administrators I know will use either the Ignite-UX GUI or SAM to set up these services.

SET UP /ETC/EXPORTS TO GIVE NFS ACCESS TO THE /VAR/OPT/IGNITE/CLIENTS DIRECTORY

The Ignite-UX mini-kernel is NFS-enabled in order to access configuration information stored on the Ignite-UX server. Client information is stored under individual subdirectories in /var/opt/ignite/clients. We need to ensure that this directory is part of our NFS exported files/directories. We need to ensure that the anonymous user is equivalenced to the bin user. Here's the line from my /etc/exports file:

root@hpeos004[] vi /etc/exports
/var/opt/ignite/clients -anon=2
root@hpeos004[]
root@hpeos004[] exportfs -a
root@hpeos004[] showmount -e
export list for hpeos004:
/var/opt/ignite/clients (everyone)
root@hpeos004[]

SET UP IGNITE-UX PARAMETERS TO BE USED DURING THE INSTALLATION OF THE OPERATING SYSTEM

When a client boots over the network, one of the files it downloads from the server is the file /opt/ignite/data/INSTALLFS. The first 8KB of this file contains default parameters that control the installation of software. This 8KB area is managed by the command instl_adm:

root@hpeos004[] instl_adm -d
# instl_adm defaults:
# NOTE: Manual additions between the lines containing "instl_adm defaults"
#       and "end instl_adm defaults" will not be preserved.
server="192.168.0.35"
netmask[]="0xffffffe0"
route_gateway[0]=""
route_destination[0]="default"
sd_server="192.168.0.35"
# end instl_adm defaults.
root@hpeos004[]

We can add to and/or modify these parameters. The first time we run through an installation, we are asked many questions relating to, for example, the IP configuration for this client machine. These parameters will be stored in a file on the server called /var/opt/ignite/clients/0x[LLA]/config. This file will be used in future installations from that client. We can influence some of those parameters at this time via the instl_adm command:

root@hpeos004[] instl_adm -d > /tmp/instl.cfg
root@hpeos004[]
root@hpeos004[] vi /tmp/instl.cfg
# instl_adm defaults:
# NOTE: Manual additions between the lines containing "instl_adm defaults"
#       and "end instl_adm defaults" will not be preserved.
server="192.168.0.35"
netmask[]="0xffffffe0"
route_gateway[0]=""
route_destination[0]="default"
sd_server="192.168.0.35"
# end instl_adm defaults.
run_ui=false
control_from_server=true
disable_dhcp=true
root_password="sv.epmVgln4pU,.."
timezone="GMT0BST"
is_net_info_temporary=false
_hp_keyboard="PS2_DIN_US_English"
root@hpeos004[]
root@hpeos004[] instl_adm -f /tmp/instl.cfg
root@hpeos004[]
root@hpeos004[] instl_adm -d
# instl_adm defaults:
# NOTE: Manual additions between the lines containing "instl_adm defaults"
#       and "end instl_adm defaults" will not be preserved.
server="192.168.0.35"
netmask[]="0xffffffe0"
route_gateway[0]=""
route_destination[0]="default"
sd_server="192.168.0.35"
# end instl_adm defaults.
run_ui=false
control_from_server=true
disable_dhcp=true
root_password="sv.epmVgln4pU,.."
timezone="GMT0BST"
is_net_info_temporary=false
_hp_keyboard="PS2_DIN_US_English"
root@hpeos004[]

As you can see, some of these parameters are true/false expressions while others take string values. What I am trying to do here is to anticipate some of the inane questions you always get asked during these installations. This file, as well as the file under /var/opt/ignite/clients/0x[LLA]/config, is appended to the configurations listed in the Ignite-UX INDEX file we see later.

SET UP A DHCP SERVER (OPTIONAL)

If we want the entire IP configuration for our boot clients to be handled by a DHCP server, we can set up the DHCP server at this time if we wish. We cover setting up a DHCP server in Chapter 15, Basic IP Configuration. Because our boot clients will be real HP-UX servers, we will not be using a DHCP server in this instance.

We can now look at the additional steps to setting up an Ignite-UX server. We repeat some of the tasks whenever we add or modify software to our Ignite-UX configuration. Here are the steps we perform:

  1. Set up a software depot(s).

  2. Create an Ignite-UX configuration file that represents the contents of the software depot(s).

  3. Update the Ignite-UX INDEX file to reflect the new configurations that are now available.

  4. Ensure that the Ignite-UX server recognizes all clients.

Let's look at each step in turn.

SET UP SOFTWARE DEPOT(S)

We discussed setting up software depots that contain software and/or patches in Chapter 12, HP-UX Patches. I assume that you have spent the necessary resources in setting up your software depot(s). The only problem is we need to ensure that Ignite-UX has an appropriate understanding of what those software depot(s) are and what software is contained within them. That is our next step.

CREATE AN IGNITE-UX CONFIGURATION FILE THAT REPRESENTS THE CONTENTS OF THE SOFTWARE DEPOT(S)

In order for Ignite-UX to be able to interpret the software loaded in a Software Distributor depot, we must use an Ignite-UX command called make_config. This will analyze the content of a software depot and make an appropriate configuration file that represents its contents. We need to tell make_config whether to analyze software for a server (800), a workstation (700), or both. We also need to specify the name of the configuration file to use. Ignite-UX comes with some appropriately named directories for this task.

root@hpeos004[] ll /var/opt/ignite/data
total 0
drwxr-xr-x   2 bin        bin             96 Feb 18  2003 Rel_B.11.11
root@hpeos004[]

You don't need to use these directories if you don't want to, but it seems such a waste. I will create a configuration file called Core_OS.cfg and store it in the directory listed above. The last piece of information that make_config needs is the location of the software depot. The command can take some time to run, depending on the content of the depot. Here's the output from my system:

root@hpeos004[] make_config -a both -c /var/opt/ignite/data/Rel_B.11.11/
Core_OS.cfg -s /software/11i-PA/core
NOTE:    make_config can sometimes take a long time to complete. Please be
         patient!

root@hpeos004[]
root@hpeos004[] more /var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg
...
######################################################
##  Operating Environments
#####################################################

sw_sel "HPUX11i-OE-MC" {
    description = "HP-UX Mission Critical Operating Environment Component"
    sw_source = "core"
    sw_category = "OpEnvironments"
    sd_software_list = "HPUX11i-OE-MC,r=B.11.11.0209,a=HP-UX_B.11.11_32/64,v=HP"
    (_hp_os_bitness == "32") {
        impacts = "/usr" 26445Kb
        impacts = "/sbin" 61Kb
        impacts = "/opt" 450725Kb
        impacts = "/etc" 10319Kb
        impacts = "/var" 28910Kb
        impacts = "/" 6Kb
    }
    (_hp_os_bitness == "64") {
        impacts = "/usr" 26445Kb
        impacts = "/sbin" 61Kb
        impacts = "/opt" 450750Kb
        impacts = "/etc" 10319Kb
        impacts = "/var" 28910Kb
        impacts = "/" 6Kb
    }
}
...

The configuration file is quite detailed. I have highlighted some interesting areas of the file above, for example, the impact this software will have on certain filesystems. Whenever we add additional software to a depot, we need to ensure that the configuration file reflects these changes with relevant impact statements.

UPDATE THE IGNITE-UX INDEX FILE TO REFLECT THE NEW CONFIGURATIONS THAT ARE NOW AVAILABLE

The heart of the Ignite-UX configuration is the file /var/opt/ignite/INDEX. This file contains a list of valid configurations, each of which is made up of one of more configuration files. The list of available configurations is presented in the user interface when we are installing a client. The command manage_index needs to know the name of the configuration file to reference as well as the name of the operating system release. By default, Ignite-UX knows about the current OS release:

root@hpeos004[] manage_index -l
HP-UX B.11.11 Default
root@hpeos004[]

Now look at the INDEX file that comes with Ignite-UX:

root@hpeos004[] more /var/opt/ignite/INDEX
# /var/opt/ignite/INDEX
# This file is used to define the Ignite-UX configurations
# and to define which config files are associated with each
# configuration.  See the ignite(5), instl_adm(4), and
# manage_index(1M) man pages for details.
#
# NOTE: The manage_index command is used to maintain this file.
#       Comments, logic expressions and formatting changes are not
#       preserved by manage_index.
#
# WARNING: User comments (lines beginning with '#' ), and any user
#          formatting in the body of this file are _not_ preserved
#          when the version of Ignite-UX is updated.
#
cfg "HP-UX B.11.11 Default" {
        description "This selection supplies the default system configuration
that HP supplies for the B.11.11 release."
        "/opt/ignite/data/Rel_B.11.11/config"
        "/opt/ignite/data/Rel_B.11.11/hw_patches_cfg"
        "/var/opt/ignite/config.local"
}

The configuration file /opt/ignite/data/Rel_B.11.11/config details the default disk and filesystem layouts. If we wanted to create a config file for an existing machine, we could use the save_config command. If we were to create our own configuration, we would probably include this configuration file (and /opt/ignite/data/Rel_B.11.11/hw_patches_cfg, which details the behavior of installing any available patches) along with our own configuration files, e.g., to add additional software after the Core OS is installed. We see this later. We add the configuration file created by make_config into the description of our B.11.11 release:

root@hpeos004[] manage_index -a -f /var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg
–r "B.11.11"
root@hpeos004[]
root@hpeos004[] more /var/opt/ignite/INDEX
# /var/opt/ignite/INDEX
# This file is used to define the Ignite-UX configurations
# and to define which config files are associated with each
# configuration. See the ignite(5), instl_adm(4), and
# manage_index(1M) man pages for details.
#
# NOTE: The manage_index command is used to maintain this file.
#       Comments, logic expressions and formatting changes are not
#       preserved by manage_index.
#
# WARNING: User comments (lines beginning with '#' ), and any user
#          formatting in the body of this file are _not_ preserved
#          when the version of Ignite-UX is updated.
#
cfg "HP-UX B.11.11 Default" {
        description "This selection supplies the default system configuration
that HP supplies for the B.11.11 release."
        "/opt/ignite/data/Rel_B.11.11/config"
        "/opt/ignite/data/Rel_B.11.11/hw_patches_cfg"
        "/var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg"
        "/var/opt/ignite/config.local"
}
root@hpeos004[]

We can see our configuration file listed alongside the other configuration files. This is a simple configuration, but it is enough to demonstrate the basic requirements for an Ignite-UX server.

The last step we need to perform is to ensure that the Ignite-UX server recognizes the client as a valid Ignite-UX client.

ENSURE THAT THE IGNITE-UX SERVER RECOGNIZES ALL CLIENTS

This part of the process is where we boot a client from the server over the network. This process will register the client with the Ignite-UX server, creating a series of subdirectories on the server to hold the client's configuration. An alternative to rebooting the client is to have the client run the command /opt/ignite/bin/add_new_client –s <Ignite server>. In order to run this command, the client must have the fileset Ignite-UX.MGMT-TOOLS already installed (in reality, if the client is an HP-UX 11.X machine, Ignite-UX is loaded by default anyway). We will use the server command /opt/ignite/bin/bootsys (requires remsh capability; otherwise, we are asked for the root password for the client), which will boot the client and (possibly) start the installation depending on the options used. The option –a will automatically start the installation with no user interaction, utilizing the parameters in the configuration files. The –w option causes the client to boot and wait for user input from the server. If we specify neither –a nor –w, the client will boot depending on the options specified in the INSTALLFS file (remember, we set the control_from_server and run_ui options earlier). The bootsys command copies the Ignite-UX kernel (INSTALL) and the Ignite-UX filesystem (INSTALLFS) to the client and then modifies the client AUTO file to boot from the Ignite-UX kernel on the next reboot. Once booted, the Ignite-UX kernel will read any options specified in the INSTALLFS 8KB header that can affect whether the installation starts automatically or needs further user input. Let's have a look at bootsys in action:

root@hpeos004[] bootsys hpeos003
        Rebooting hpeos003 now.
root@hpeos004[]

And on the client itself:

To discontinue, press any key within 10 seconds.

10 seconds expired.
Proceeding...

Trying Primary Boot Path
------------------------
Booting...
Boot IO Dependent Code (IODC) revision 1


HARD Booted.

ISL Revision A.00.43  Apr 12, 2000

ISL booting  hpux  (;0)/stand/WINSTALL

Boot
: disk(0/0/1/1.15.0.0.0.0.0;0)/stand/WINSTALL
9777152 + 1687552 + 2602664 start 0x2012e8



alloc_pdc_pages: Relocating PDC from 0xf0f0000000 to 0x3fb01000.

                                  Ignite-UX

  Waiting for installation instructions from server: 192.168.0.35

  Icon Name Shown in GUI:  hpeos003
  Active System Name/IP:   hpeos003/192.168.0.33


  You may now complete the installation using the "ignite" graphical
  interface on the Ignite-UX server (See ignite(1M)). If you are not
  already running "/opt/ignite/bin/ignite" on the server, do so now.

              No further action is required at this console.



                 [ Perform Installation from this Console ]

                    [ View Active Network Parameters ]

                     [ Change Icon Name Shown in GUI ]
  Are you sure you want to switch to run the UI locally?[n]

As you can see, I can proceed with the installation from the server. On the server, I can now see the client from within the Ignite-UX GUI. By right-clicking on the client, I can start a New Install (Figure 13-1).

Ignite-UX GUI after client discovery.

Figure 13-1. Ignite-UX GUI after client discovery.

Once we select a New (or Repeat) Install, we will be presented with the Ignite-UX itool interface where we can select the options for that individual client (Figure 13-2).

Ignite-UX itool interface.

Figure 13-2. Ignite-UX itool interface.

An interesting feature here is that we can modify our installation choices via navigating the screens, choosing to add additional software components, add filesystems, add disks to vg00, and so on. Before pressing the “Go!” button, we can save this configuration by using the “Save As…” button. We will give the configuration a name, e.g., Custom_Config:

root@hpeos004[saved_cfgs] pwd
/var/opt/ignite/saved_cfgs
root@hpeos004[saved_cfgs] ll
total 10
-rw-rw-r--   1 bin        bin           4797 Sep 30 17:23 Custom_Config
root@hpeos004[saved_cfgs]

This selection can be used for other clients in the future in addition to the default configuration file = /opt/ignite/data/Rel_B.11.11/config.

In this case, I have added additional filesystem options (I could have modified existing filesystem options and/or included additional software components as well) that will be added to the filesystem choices listed in the default configuration.

root@hpeos004[saved_cfgs] pwd
/var/opt/ignite/saved_cfgs
root@hpeos004[saved_cfgs] more Custom_Config
...
                logical_volume {
                        mount_point="/data"
                        usage=VxFS
                        size=311296K
                } # end logical_volume
...
root@hpeos004[saved_cfgs]

Another alternative for this client is that once installed, we can subsequently use bootsys –a hpeos003 to start the installation automatically and use the previous settings for this client.

Adding additional software to a Core OS configuration

As well as loading Core operating system software, we want to commonly load additional software to a client. To achieve this, we need to add additional configuration lines to the Ignite-UX index file. In fact, we may want to generate a new release to signify that this is the Core OS + Applications. In this way, we can select which release to install for each client. To add additional software to a Core OS installation, we would perform the following steps:

  1. Set up software depot(s).

  2. Create an Ignite-UX configuration file that represents the contents of the software depot(s).

  3. Update the Ignite-UX INDEX file to reflect the new configurations that are now available.

  4. Use the new configuration to install a client.

This looks similar to setting up a Core OS configuration. And it is; all we need to ensure is that we have included all the necessary configuration files to reflect our Core OS + Applications installation. Let's look at each step in turn.

SET UP SOFTWARE DEPOT(S)

I am assuming that you have spent the necessary resources to set up your software depots. As we saw with setting up a Core OS configuration, we had to create a configuration file that allowed Ignite-UX to interpret what software was housed in the depot. In this instance, we may have an additional step to undertake. We may have to create bundle specifications for our application software depot(s). Ignite-UX expects software to be in a bundle; if not, it will not be able to analyze and create a proper configuration file for it:

root@hpeos004[] make_config -a both -c /var/opt/ignite/data/Rel_B.11.11/FooProd
-s /software/11i-PA/FooProd
NOTE:    make_config can sometimes take a long time to complete. Please be
         patient!
WARNING: No bundles were processed for the "/software/11i-PA/FooProd" depot. No
         config file will be generated for this depot. This may be because the
         depot does not contain any bundles. To find out, run "swlist -d -l
         bundle @ /software/11i-PA/FooProd". If there are no bundles in the
         depot, run the make_bundles command before re-running make_config.

SUMMARY: 0 config files were created correctly.
         1 config file could not be created due to errors.

We can use the make_bundles command to create a bundle specification for our applications:

root@hpeos004[] make_bundles /software/11i-PA/FooProd
Generating list of unbundled filesets...
Generating swpackage PSF...

=======  09/30/03 18:11:13 BST  BEGIN swpackage SESSION

       * Session started for user "root@hpeos004".

       * Source:        hpeos004:/var/tmp/psf.3544
       * Target:        hpeos004:/software/11i-PA/FooProd
       * Software selections:
             *


       * Beginning Selection Phase.
       * Reading the Product Specification File (PSF)
         "/var/tmp/psf.3544".
       * Reading the bundle "b_FooProd" at line 11.
       * Reading the bundle "b_PHCO_3000" at line 18.
       * Reading the bundle "b_PHCO_4000" at line 25.

       * Selection Phase succeeded.


       * Beginning Analysis Phase.
       * Analysis Phase succeeded.


       * Beginning Package Phase.

       * Packaging the bundle "b_FooProd,r=1.0,a=HP-UX_B.11.00_32/64".
       * Packaging the bundle
         "b_PHCO_3000,r=1.0,a=HP-UX_B.11.00_32/64".
       * Packaging the bundle
         "b_PHCO_4000,r=1.0,a=HP-UX_B.11.00_32/64".
       * Package Phase succeeded.

=======  09/30/03 18:11:13 BST  END swpackage SESSION

root@hpeos004[] swlist -l bundle -d @ /software/11i-PA/FooProd
# Initializing...
# Contacting target "hpeos004"...
#
# Target:  hpeos004:/software/11i-PA/FooProd
#

  b_FooProd     1.0            (FooProd) This is an example 11.X product.
  b_PHCO_3000   1.0            (PHCO_3000) Foo Cumulative Patch
  b_PHCO_4000   1.0            (PHCO_4000) Foo Cumulative Patch
root@hpeos004[ignite]

Now we can make a configuration file for my applications.

CREATE AN IGNITE-U UX CONFIGURATION FILE THAT REPRESENTS THE CONTENTS OF THE SOFTWARE DEPOT(S)

We have seen this process before, so it should be of little surprise to us here. We are going to use the make_config command to create a configuration file that represents our application depot:

root@hpeos004[] make_config –a both -c /var/opt/ignite/data/Rel_B.11.11/
FooProd.cfg –s /software/11i-PA/FooProd
NOTE:    make_config can sometimes take a long time to complete. Please be
         patient!
root@hpeos004[]

You might want to manually edit this configuration file to ensure that it is automatically selected as part of the installation process. Here, you can see that I have included a line in the configuration file to ensure that specific Software Distributor command line options are used; these are especially useful if the additional software we are loading includes patches (see sd_command_line statement). I have also used a load_order statement to ensure that this is one of the last pieces of software that is loaded, a load_order=6 being the last software to be installed (I have not used 6 in case I add more patches at a later date). As you can also see toward the bottom of the file, I have ensured that the FooProd product is selected for installation, by default:

root@hpeos004[Rel_B.11.11] pwd
/var/opt/ignite/data/Rel_B.11.11
root@hpeos004[Rel_B.11.11] vi FooProd.cfg
#########################################################
##  Software Sources
#########################################################

sw_source "/software/11i-PA/FooProd" {
    source_type = "NET"
    sd_server = "192.168.0.35"
    sd_depot_dir = "/software/11i-PA/FooProd"
    sd_command_line="-x autoselect_dependencies=true -x autoselect_patches=true
-x patch_match_target=true -x autoreboot=true"
    source_format = SD
    load_order = 5
}



######################################################
##  Other Software
#####################################################

sw_sel "b_PHCO_4000" {
    description = "(PHCO_4000) Foo Cumulative Patch"
    sw_source = "/software/11i-PA/FooProd"
    sw_category = "Uncategorized"
    sd_software_list = "b_PHCO_4000,r=1.0,a=HP-UX_B.11.00_32/64"
    impacts = "/usr" 4Kb
}

sw_sel "b_PHCO_3000" {
    description = "(PHCO_3000) Foo Cumulative Patch"
    sw_source = "/software/11i-PA/FooProd"
    sw_category = "Uncategorized"
    sd_software_list = "b_PHCO_3000,r=1.0,a=HP-UX_B.11.00_32/64"
    impacts = "/usr" 3Kb
}

sw_sel "b_FooProd" {
    description = "(FooProd) This is an example 11.X product."
    sw_source = "/software/11i-PA/FooProd"
    sw_category = "Uncategorized"
    sd_software_list = "b_FooProd,r=1.0,a=HP-UX_B.11.00_32/64"
    impacts = "/usr" 6Kb
}=TRUE

root@hpeos004[Rel_B.11.11]

NOTEI can include this software by other methods than those used above; for example, I could use the load_with_any= statement in the sw_sel section.

I can now add this configuration to my Ignite-UX INDEX file.

UPDATE THE IGNITE-UX INDEX FILE TO REFLECT THE NEW CONFIGURATIONS THAT ARE NOW AVAILABLE

If you look at my INDEX file, I have cut and pasted the Default configuration and given it a new name. Notice that the Default configuration has been marked as the default choice: =TRUE. Also notice that I have included my Custom_Config.cfg file to include the creation of my additional filesystem:

root@hpeos004[] cat /var/opt/ignite/INDEX
# /var/opt/ignite/INDEX
# This file is used to define the Ignite-UX configurations
# and to define which config files are associated with each
# configuration. See the ignite(5), instl_adm(4), and
# manage_index(1M) man pages for details.
#
# NOTE: The manage_index command is used to maintain this file.
#       Comments, logic expressions and formatting changes are not
#       preserved by manage_index.
#
# WARNING: User comments (lines beginning with '#' ), and any user
#          formatting in the body of this file are _not_ preserved
#          when the version of Ignite-UX is updated.
#
cfg "HP-UX B.11.11 Default" {
        description "This selection supplies the default system configuration
that HP supplies for the B.11.11 release."
        "/opt/ignite/data/Rel_B.11.11/config"
        "/opt/ignite/data/Rel_B.11.11/hw_patches_cfg"
        "/var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg"
        "/var/opt/ignite/config.local"
}=TRUE
cfg "HP-UX B.11.11 FooProd" {
        description "HP-UX B.11.11 plus FooProd applications"
        "/opt/ignite/data/Rel_B.11.11/config"
        "/opt/ignite/data/Rel_B.11.11/hw_patches_cfg"
        "/var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg"
        "/var/opt/ignite/config.local"
        "/var/opt/ignite/saved_cfgs/Custom_Config"
}
root@hpeos004[]

I can now use the manage_index command to add the newly created FooPrd.cfg file to this configuration:

root@hpeos004[] manage_index -a -f /var/opt/ignite/data/Rel_B.11.11/FooProd.c fg
-c "HP-UX B.11.11 FooProd"
root@hpeos004[] cat /var/opt/ignite/INDEX
# /var/opt/ignite/INDEX
# This file is used to define the Ignite-UX configurations
# and to define which config files are associated with each
# configuration.  See the ignite(5), instl_adm(4), and
# manage_index(1M) man pages for details.
#
# NOTE: The manage_index command is used to maintain this file.
#       Comments, logic expressions and formatting changes are not
#       preserved by manage_index.
#
# WARNING: User comments (lines beginning with '#' ), and any user
#          formatting in the body of this file are _not_ preserved
#          when the version of Ignite-UX is updated.
#
cfg "HP-UX B.11.11 Default" {
        description "This selection supplies the default system configuration
that HP supplies for the B.11.11 release."
        "/opt/ignite/data/Rel_B.11.11/config"
        "/opt/ignite/data/Rel_B.11.11/hw_patches_cfg"
        "/var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg"
        "/var/opt/ignite/config.local"
}=TRUE
cfg "HP-UX B.11.11 FooProd" {
        description "HP-UX B.11.11 plus FooProd applications"
        "/opt/ignite/data/Rel_B.11.11/config"
        "/opt/ignite/data/Rel_B.11.11/hw_patches_cfg"
        "/var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg"
        "/var/opt/ignite/config.local"
        "/var/opt/ignite/saved_cfgs/Custom_Config"
        "/var/opt/ignite/data/Rel_B.11.11/FooProd.cfg"
}
root@hpeos004[]

I should test this new configuration just to ensure that it is syntactically correct:

root@hpeos004[] instl_adm -T
       * Checking file: /opt/ignite/data/Rel_B.11.11/config
       * Checking file: /opt/ignite/data/Rel_B.11.11/hw_patches_cfg
       * Checking file: /var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg
       * Checking file: /var/opt/ignite/config.local
       * Checking file: /var/opt/ignite/saved_cfgs/Custom_Config
       * Checking file: /var/opt/ignite/data/Rel_B.11.11/FooProd.cfg
root@hpeos004[]

This is now ready to be used by a client.

USE THE NEW CONFIGURATION TO INSTALL A CLIENT

I am going to use the new configuration to install a client. I will use the bootsys command to override the previous configuration setting and to install this configuration automatically:

root@hpeos004[] bootsys -f -a -i "HP-UX B.11.11 FooProd" hpeos003
        Rebooting hpeos003 now.
root@hpeos004[]

Here are some features of the new installation we set up in our configuration files; to start with, the root password immediately expires (root_password=sv.epmVgln4pU,.. in INSTALLFS):

     Start CDE login server .............................................. OK

The system is ready.

GenericSysName [HP Release B.11.11] (see /etc/issue)
Console Login: root
Password:
Your password has expired. Choose a new one
Changing password for root
New password:

Our /data filesystem has been created (see Custom_Config.cfg):

# bdf
Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvol3     204800   78180  118737   40% /
/dev/vg00/lvol1     303125   27478  245334   10% /stand
/dev/vg00/lvol9    2613248  149876 2310439    6% /var
/dev/vg00/lvol8    1089536  784768  285745   73% /usr
/dev/vg00/lvol5     204800    1242  190903    1% /tmp
/dev/vg00/lvol7     950272  703978  230948   75% /opt
/dev/vg00/lvol6      24576    1109   22008    5% /home
/dev/vg00/lvol4     311296    1181  290740    0% /data
#

And the software FooProd has automatically been installed (including patches for the product as well).

# swlist -l patch FooProd
# Initializing...
# Contacting target "hpeos003"...
#
# Target:  hpeos003:/
#

# FooProd                       1.0            This is an example 11.X product.
# FooProd.FOO-HELP                 1.0               On-line Help for Foo
# FooProd.FOO-MIN                  1.0               Minimal stuff for Foo 32-bit
  PHCO_3000.FOO-MIN        1.0               Minimal stuff for Foo    applied
  PHCO_4000.FOO-MIN        1.0               Minimal stuff for Foo    applied
#

An alternative to having Core OS depots and additional software components loaded onto each client is to take a snapshot of an existing client: This is known as a Golden Image. This will include all current software and hardware settings. This image can then be used to install an entire network of similarly configured machines.

Setting Up a Golden Image

A Golden Image is a compressed archive of a current system. It contains all the software and hardware configurations on the existing system. This can be deployed to clients on the network who have similar configurations. The beauty of this model is that we can maintain multiple images based on the types of clients we are supporting. Should one of our clients fail in some way, it may be quicker to re-deploy the client than to try to fix it. I have seen many sites use this idea where the data stored on the client is relatively static and part of the archive, or there is no data on the client at all; it is purely a network client. If you are going to use this model for data servers, you will need to maintain your archives as often as you would maintain your normal backups. I am sure you understand the old adage, “You're only as good as your last backup.” This applies to a Golden Image as well.

There are many ways to set up a Golden Image, but one of the keys is to ensure that the system from which the image will be taken has been fully configured with as much software, kernel, and patch updates as you see fit. Any changes to such a system, i.e., adding more patches, should trigger a process that updates the Golden Image. Here is a process you could use to create a Golden Image:

  1. Identify a suitable client machine.

  2. Install the Core OS.

  3. Install all relevant patches from the Support Plus media.

  4. Install all additional patches, e.g., using Custom Patch Manager and security_patch_check.

  5. Install all/any site-specific patches.

  6. Install any required applications and application patches.

  7. Perform all necessary customizations including kernel configuration changes.

  8. Use make_sys_image to create the Golden Image.

  9. Create an Ignite-UX configuration file that represents the contents of the Golden Image.

  10. Update the Ignite-UX INDEX file to reflect the new configurations that are now available.

  11. Test the Golden Image configuration.

This is only one possible solution. One drawback with this approach is that maintaining this archive is a little more time-consuming because everything a client needs is in the archive. The benefit of this solution is that the installation of a client is a simple affair; it is loaded from one source, and once complete, the client can quickly rejoin the network. Obviously, we could take a different approach and have a simple archive that is augmented with additional software loads from different software sources, much like the configuration we saw in the section 13.2.2, “Adding additional software to a Core OS configuration.” There are no hard-and-fast rules here; you choose the solution that is best for you.

I assume that you have performed steps 13.3.1 through 13.3.7 and are ready to create the Golden Image.

Use make_sys_image to create the Golden Image

There are a couple of tasks we need to undertake on the server before we actually run the make_sys_image command on the client:

  • If we are going to store the Golden Image directly onto the server, we will need to ensure that the $HOME/.rhosts file allows remote access to the client:

    root@hpeos004[ignite] cat /.rhosts
    hpeos003 root
    root@hpeos004[ignite]
    
  • Create a directory on the server to store the archives:

    root@hpeos004[ignite] pwd
    /var/opt/ignite
    root@hpeos004[ignite] mkdir archives
    root@hpeos004[ignite]
    
  • Ensure that there is enough disk space on the server to store the archive:

    root@hpeos004[ignite] bdf /var
    Filesystem          kbytes    used   avail %used Mounted on
    /dev/vg00/lvol8    4194304 1309990 2704110   33% /var
    root@hpeos004[ignite]
    

    This is highly dependent on the number of Golden Images you will create. I have over 2GB of space available. This should be enough.

  • Add the archive directory to the list of NFS exported directories on the server:

    root@hpeos004[ignite] vi /etc/exports
    /var/opt/ignite/clients -anon=2
    /var/opt/ignite/archives -anon=2
    root@hpeos004[ignite]
    root@hpeos004[ignite] exportfs -a
    root@hpeos004[ignite]
    
  • Run make_sys_image on the client.

The script make_sys_image comes as part of Ignite-UX. As such, we need to ensure Ignite-UX is installed on our clients before we are able to create a Golden Image. Because it's a script, we can modify it to suit our needs. We might want to modify the files that are reset during the make_sys_image process; these are configuration files such as our network configuration files under /etc and /etc/rc.config.d. We might want to exclude/include some additional files in the archive; make_sys_image does not include log or device files because they are unique to an individual machine. In essence, we may want to customize the make_sys_image script. If we do, it would be a good idea to copy it to some other location because a future installation of Ignite-UX could overwrite any changes we make in the original.

When I first looked at this, I was concerned because my client is a trusted system. The make_sys_image script is clever enough to understand trusted systems; in such a situation, it will not reset the /etc/passwd file to a default /etc/passwd file. If you have similar site-specific configurations, it is worth reviewing make_sys_image and ensuring that the files that are included/excluded from the archive are appropriate.

I am going to run make_sys_image such that the archive is stored on the Ignite-UX server (-s <IP|local>) under the directory /var/opt/ignite/archives (-d <dir>). I will check that there is enough space on the server to store the archive (-u). I will use the default compression, that is a compressed tar (pax is used as the archive utility, but it writes the archive in tar (alternatively cpio) format) archive. Because there is a considerable amount of file manipulation during a make_sys_image, I should avoid too much activity on the client while it is running:

root@hpeos003[scripts] ./make_sys_image -s 192.168.0.35 -d /var/opt/ignite/
archives -u
       * Preparing to create a system archive
       * Testing pax for needed patch
       * Passed pax tests.

WARNING: CLEAN_LEVEL set to 2: (see -l option for make_sys_image(1m))
         While this command is running at clean level 2, the system
         should be as quiet as possible.  The host and/or networking
         information on the system are temporarily set to newconfig
         values.  After the command is complete these files are put
         back as they were.


....................
       * NOTE:
         The following core file(s) was/were found on your system
         and will be archived in your system image.
/var/adm/cmcluster/core
/core
       * The archive is estimated to reach 1362177 kbytes.
       * Free space on 192.168.0.35:/var/opt/ignite/archives
         after archive should be about 1341898 kbytes.

       * Archiving contents of hpeos003 via tar to
         192.168.0.35:/var/opt/ignite/archives/hpeos003.gz.

       * Archiving contents of hpeos003 via tar to
         192.168.0.35:/var/opt/ignite/archives/hpeos003.gz.
       * Creation of system archive complete
       * Cleanup: Do Not interrupt, restoring files, kernel, and transition links.

root@hpeos003[scripts]

The next part of this configuration is to try to ensure that I have a configuration file that describes this compressed tar archive.

Create an Ignite-UX configuration file that represents the contents of the Golden Image

Unfortunately, we are going to have to get our hands dirty with this part of the configuration. There are no easy ways around this because the archive is in a non-Software Distributor format, so we simply can't use a make_config command. We will have to create a configuration file from scratch; well, not really. Those lovely people at HP have given us some example configuration files that we can use as a template:

root@hpeos004[examples] pwd
/opt/ignite/data/examples
root@hpeos004[examples] ll
total 50
-r--r--r--   1 bin        bin           1273 Jan 23  2002 README
-r--r--r--   1 bin        bin           8551 Jan 23  2002 core.cfg
-r--r--r--   1 bin        bin           7824 Jan 23  2002 core11.cfg
dr-xr-xr-x   2 bin        bin           1024 Feb 18  2003 networking
-r--r--r--   1 bin        bin           4725 Jan 23  2002 noncore.cfg
root@hpeos004[examples]

In our case, because we have an archive that is essentially a Core operating system, we can use the core11.cfg file as a template. I will copy this to the directory where my other configuration files are stored. Once there, I can edit it to reflect the configuration of the archive:

root@hpeos004[examples] cp core11.cfg /var/opt/ignite/data/Rel_B.11.11/archive11.cfg
root@hpeos004[examples]
root@hpeos004[examples] cd /var/opt/ignite/data/Rel_B.11.11
root@hpeos004[Rel_B.11.11] ll
total 102
-rw-rw-r--   1 root       sys          33440 Sep 29 16:18 Core_OS.cfg
-rw-rw-r--   1 root       sys           1330 Oct  1 09:46 FooProd.cfg
-r--r--r--   1 root       sys           7824 Oct  1 12:36 archive11.cfg
root@hpeos004[Rel_B.11.11]

Part of the configuration file is the impact statements. Impact statements describe the amount of space required in a given filesystem when installing software. When managing other Ignite-UX configurations, the impact statements are calculated automatically (make_config calculates the size of each sw_sel software product and simply adds them up). This is not the case when managing a Golden Image; we need to perform this step manually. I can use a command called archive_impact to work out the impact statements for me:

root@hpeos004[archives] pwd
/var/opt/ignite/archives
root@hpeos004[archives] ll
total 2055614
-rw-rw-rw-   1 root       sys        1052435218 Oct  1 12:44 hpeos003.gz
-rw-rw-rw-   1 root       sys          30125 Oct  1 12:44 make_sys_image.log
root@hpeos004[archives]
root@hpeos004[archives] /opt/ignite/lbin/archive_impact -t -g $PWD/hpeos003.gz > /tmp/GOLDEN.impacts
root@hpeos004[archives]
root@hpeos004[archives] cat /tmp/GOLDEN.impacts
    impacts = "/" 1896Kb
    impacts = "/.dt" 70Kb
    impacts = "/.netscape" 21Kb
    impacts = "/depots" 67102Kb
    impacts = "/dev" 14Kb
    impacts = "/etc" 27310Kb
    impacts = "/home" 4640Kb
    impacts = "/ignite" 90Kb
    impacts = "/mcsg" 200Kb
    impacts = "/opt" 689746Kb
    impacts = "/sbin" 36015Kb
    impacts = "/stand" 1148Kb
    impacts = "/u01" 926619Kb
    impacts = "/usr" 774742Kb
    impacts = "/ux" 5Kb
    impacts = "/var" 206207Kb
root@hpeos004[archives]

I will use these impact statements in creating my configuration file. There are a number of example entries in the core11.cfg. You may have to spend some time to get used to the layout of the file. It's not too difficult and requires few changes. I have removed all comments to make it easier to read and underlined the lines I modified or added. I have included the impact statements from the archive_impact command. Here is the resulting configuration file:

root@hpeos004[Rel_B.11.11] cat archive11.cfg
sw_source "core archive" {
    description = "HP-UX Core Operating System Archives"
    load_order = 0
    source_format = archive
    source_type="NET"

    post_load_script = "/opt/ignite/data/scripts/os_arch_post_l"
    post_config_script = "/opt/ignite/data/scripts/os_arch_post_c"

    nfs_source = "192.168.0.35:/var/opt/ignite/archives"

}

init sw_sel "golden image - 32 bit OS" {
    description = "English HP-UX 11.11 CDE - 32 Bit OS"
    sw_source = "core archive"
    sw_category = "HPUXEnvironments"
    archive_type = gzip tar

    archive_path = "Some32-bitArchive.gz"

    impacts = "/" 1898Kb
    impacts = "/.dt" 70Kb
    impacts = "/.netscape" 21Kb
    impacts = "/.secure" 1Kb
    impacts = "/depots" 67102Kb
    impacts = "/dev" 14Kb
    impacts = "/etc" 27312Kb
    impacts = "/home" 4640Kb
    impacts = "/ignite" 90Kb
    impacts = "/mcsg" 200Kb
    impacts = "/opt" 689746Kb
    impacts = "/sbin" 36015Kb
    impacts = "/stand" 1148Kb
    impacts = "/tcb" 102Kb
    impacts = "/u01" 926619Kb
    impacts = "/usr" 774742Kb
    impacts = "/ux" 5Kb
    impacts = "/var" 207120Kb
    exrequisite += "golden image - 64 bit OS"
    visible_if  = can_run_32bit
} = (can_run_32bit)


init sw_sel "golden image - 64 bit OS" {
    description = "English HP-UX 11.11 CDE - 64 Bit OS"
    sw_source = "core archive"
    sw_category = "HPUXEnvironments"
    archive_type = gzip tar

    archive_path = "hpeos003.gz"

    exrequisite += "golden image - 32 bit OS"
    impacts = "/" 1898Kb
    impacts = "/.dt" 70Kb
    impacts = "/.netscape" 21Kb
    impacts = "/.secure" 1Kb
    impacts = "/depots" 67102Kb
    impacts = "/dev" 14Kb
    impacts = "/etc" 27312Kb
    impacts = "/home" 4640Kb
    impacts = "/ignite" 90Kb
    impacts = "/mcsg" 200Kb
    impacts = "/opt" 689746Kb
    impacts = "/sbin" 36015Kb
    impacts = "/stand" 1148Kb
    impacts = "/tcb" 102Kb
    impacts = "/u01" 926619Kb
    impacts = "/usr" 774742Kb
    impacts = "/ux" 5Kb
    impacts = "/var" 207120Kb
    visible_if  = can_run_64bit
} = (!can_run_32bit)

(sw_sel "golden image - 32 bit OS") {
    _hp_os_bitness = "32"
}

(sw_sel "golden image - 64 bit OS") {
    _hp_os_bitness = "64"
}

sw_source "no select" {
    source_format = cmd
}

init sw_sel "English" {
    description = "English Language Environment"
    sw_source = "no select"
    sw_category = "Languages"
    locale = { "SET_NULL_LOCALE:English", "C:English" }
} = TRUE


has_ps2 {
  _hp_keyboard = {
    "Not_Applicable",
    "PS2_DIN_US_English",
    "PS2_DIN_US_English_Euro"
  }
  init _hp_keyboard = "PS2_DIN_US_English"
}

has_usb {
  _hp_keyboard = {
    "Not_Applicable",
    "USB_PS2_DIN_US_English",
    "USB_PS2_DIN_US_English_Euro"
  }
  init _hp_keyboard = "USB_PS2_DIN_US_English"
}
root@hpeos004[Rel_B.11.11]

You may notice that I have included statements relating to the bitness of the operating system and whether clients will be able to see this archive, i.e., if they can support a 64-bit operating system. This is important if you have different types of clients in your network. It may be that you have two archives: one for 32-bit clients and one for 64-bit clients.

POST-CONFIGURE AND POST-LOAD SCRIPTS

In the configuration file above, I have mentioned two scripts (see Table 13-1):

Table 13-1. Post-Load/Post-Configure Scripts

Type of Script

Script Name

Post-Configure script

/opt/ignite/data/scripts/os_arch_post_c

Post-Load script

/opt/ignite/data/scripts/os_arch_post_l

The idea behind these scripts is to perform additional functionality once the archive has been installed onto a client. In the case of the Post-Configure script, we hope we don't need to include it at all. Most people will include it for completeness. It comes in useful in the following situations:

  • In some cases, the archive creation/extraction tools don't do a complete job, so we account for that here.

  • Some SD configure scripts make changes based on the hardware of the machine. Since the machine where the archive is created may have different hardware than the target machine, we need to account for those actions here.

  • Defects, which were found too late to fix in the Software Distributor control scripts, are sometimes handled here.

With the Post-Load script, it is more likely that you will want to make some modifications to it. The biggest job of the Post-Load script is to merge, remove, or save the configuration files (primarily the networking configuration files) obtained during the extraction of the archive and the networking configuration obtained during the final part of the installation process. Here are some changes I made to the Post-Load script for my configuration:

Default behavior:

root@hpeos004[scripts] pwd
/opt/ignite/data/scripts
root@hpeos004[scripts] vi os_arch_post_l
#save_file /etc/hosts
#merge_file /etc/hosts
rm -f /etc/resolv.conf
#save_file /etc/resolv.conf
#merge_file /etc/resolv.conf
#save_file /etc/rc.config.d/namesvrs
#merge_file /etc/rc.config.d/namesvrs
...
#save_file /etc/fstab
...
# save_file /etc/nsswitch.conf

Changed to:

...
#save_file /etc/hosts
merge_file /etc/hosts
#rm -f /etc/resolv.conf
save_file /etc/resolv.conf
#merge_file /etc/resolv.conf
save_file /etc/rc.config.d/namesvrs
#merge_file /etc/rc.config.d/namesvrs
...
save_file /etc/fstab
...
save_file /etc/nsswitch.conf
...

NOTEIf you are going to make any changes to these files, you should store them in a separate location because a new/reinstallation of Ignite-UX will overwrite any changes you have made.

Update the Ignite-UX INDEX file to reflect the new configurations that are now available

I can now update the Ignite-UX INDEX file to reflect my new Golden Image archive. There is one potential issue here. Previously, I have used the default disk/volume configuration file /opt/ignite/data/Rel.B.11.11/config file. One good aspect of this configuration file is that it has built-in logic to work out the size of volumes such as primary swap whose size can depend on the amount of memory a client has installed. If I wanted to truly emulate the client system, I would have to create a configuration file by hand or by using the save_config command on the client machine:

root@hpeos003[scripts] save_config -f /tmp/save_config.out vg00
root@hpeos003[scripts]

I would need to edit the resulting file (/tmp/save_config.out) to remove the network and hardware specific entries for this client. Here is the resulting configuration for my client:

root@hpeos003[] more /tmp/save_config.out
cfg "HP-UX System Recovery"=TRUE
_hp_saved_detail_level="vfph"
#
# Variable assignments
#
init _hp_root_disk="0/0/1/1.15.0"
init _hp_root_grp_disks=1
init _hp_root_grp_striped="NO"
init _hp_pri_swap=2097152KB
_hp_locale                visible_if false
_hp_cfg_detail_level      visible_if false
_hp_pri_swap              visible_if false
_hp_min_swap              visible_if false
_hp_disk_layout           visible_if false
_hp_default_cur_lan_dev   visible_if false
_hp_default_final_lan_dev visible_if false
_hp_keyboard              visible_if false
_hp_root_disk             visible_if false
_hp_boot_dev_path         visible_if false
_hp_saved_detail_level    visible_if false
_hp_root_grp_disks        visible_if false
_hp_root_grp_striped      visible_if false
init _hp_disk_layout="HP-UX save_config layout"
#
# Disk and Filesystems
#
_hp_disk_layout+={"HP-UX save_config layout"}
(_hp_disk_layout=="HP-UX save_config layout") {
        # Disk/Filesystem Layout:
        volume_group "vg00" {
                max_physical_extents=4350
                max_logical_vols=255
                max_physical_vols=16
                physical_extent_size=8
                minor_number=0x00
                usage=LVM
                physical_volume disk[_hp_root_disk] {
                } # end pv_options
                logical_volume "lvol1" {
                        usage=HFS
                        size=114688KB
                        mount_point="/stand"
                        minfree=10
                        file_length=LONG
                        blksize=8192
                        fragsize=1024
                        ncpg=16
                        nbpi=6334
                        rotational_delay=0
                        largefiles=FALSE
                        bad_block_relocate=false
                        contiguous_allocation=true
                        stripes=0
                        stripe_size=0KB
                        minor_number=0x01
                        disk[_hp_root_disk]
                } # end logical_volume
                logical_volume "lvol2" {
                        usage=SWAP_DUMP
                        size=2097152KB
                        bad_block_relocate=false
                        contiguous_allocation=true
                        stripes=0
                        stripe_size=0KB
                        minor_number=0x02
                        disk[_hp_root_disk]
                } # end logical_volume
                logical_volume "lvol3" {
                        usage=VxFS
                        size=1335296KB
                        blksize=1024
                        mount_point="/"
                        largefiles=FALSE
                        bad_block_relocate=false
                        contiguous_allocation=true
                        stripes=0
                        stripe_size=0KB
                        minor_number=0x03
                        disk[_hp_root_disk]
                } # end logical_volume
                logical_volume "lvol4" {
                        usage=VxFS
                        size=65536KB
                        blksize=1024
                        mount_point="/tmp"
                        largefiles=FALSE
                        bad_block_relocate=true
                        contiguous_allocation=false
                        stripes=0
                        stripe_size=0KB
                        minor_number=0x04
                        disk[_hp_root_disk]
                } # end logical_volume
                logical_volume "lvol5" {
                        usage=VxFS
                        size=24576KB
                        blksize=1024
                        mount_point="/home"
                        largefiles=FALSE
                        bad_block_relocate=true
                        contiguous_allocation=false
                        stripes=0
                        stripe_size=0KB
                        minor_number=0x05
                        disk[_hp_root_disk]
                } # end logical_volume
                logical_volume "lvol6" {
                        usage=VxFS
                        size=851968KB
                        blksize=1024
                        mount_point="/opt"
                        largefiles=FALSE
                        bad_block_relocate=true
                        contiguous_allocation=false
                        stripes=0
                        stripe_size=0KB
                        minor_number=0x06
                        disk[_hp_root_disk]
                } # end logical_volume
                logical_volume "lvol7" {
                        usage=VxFS
                        size=1122304KB
                        blksize=1024
                        mount_point="/usr"
                        largefiles=FALSE
                        bad_block_relocate=true
                        contiguous_allocation=false
                        stripes=0
                        stripe_size=0KB
                        minor_number=0x07
                        disk[_hp_root_disk]
                } # end logical_volume
                logical_volume "lvol8" {
                        usage=VxFS
                        size=614400KB
                        blksize=1024
                        mount_point="/var"
                        largefiles=FALSE
                        contiguous_allocation=false
                        stripes=0
                        stripe_size=0KB
                        minor_number=0x07
                        disk[_hp_root_disk]
                } # end logical_volume
        } # end volume_group "vg00"
} # end "HP-UX save_config layout"
release="B.11.11"
timezone="GMT0BST"
root@hpeos003[]

NOTEYou need to ensure that any hardware paths mentioned in this file are relevant for your Golden Image clients.

I copied this to my Ignite-UX server to use as part of my Golden Image configuration.

root@hpeos003[] rcp /tmp/save_config.out hpeos004:/var/opt/ignite/data/
Rel_B.11.11/archive_disk.cfg
root@hpeos003[]

I am now ready to add a new configuration to my Ignite-UX INDEX file. Here is my complete INDEX file:

root@hpeos004[ignite] pwd
/var/opt/ignite
root@hpeos004[ignite]
root@hpeos004[ignite] vi INDEX
# /var/opt/ignite/INDEX
# This file is used to define the Ignite-UX configurations
# and to define which config files are associated with each
# configuration.  See the ignite(5), instl_adm(4), and
# manage_index(1M) man pages for details.
#
# NOTE: The manage_index command is used to maintain this file.
#       Comments, logic expressions and formatting changes are not
#       preserved by manage_index.
#
# WARNING: User comments (lines beginning with '#' ), and any user
#          formatting in the body of this file are _not_ preserved
#          when the version of Ignite-UX is updated.
#
cfg "HP-UX B.11.11 Default" {
        description "This selection supplies the default system configuration
that HP supplies for the B.11.11 release."
        "/opt/ignite/data/Rel_B.11.11/config"
        "/opt/ignite/data/Rel_B.11.11/hw_patches_cfg"
        "/var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg"
        "/var/opt/ignite/config.local"
}=TRUE
cfg "HP-UX B.11.11 FooProd" {
        description "HP-UX B.11.11 plus FooProd applications"
        "/opt/ignite/data/Rel_B.11.11/config"
        "/opt/ignite/data/Rel_B.11.11/hw_patches_cfg"
        "/var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg"
        "/var/opt/ignite/config.local"
        "/var/opt/ignite/saved_cfgs/Custom_Config"
        "/var/opt/ignite/data/Rel_B.11.11/FooProd.cfg"
}
cfg "Golden Image" {
        description "HP-UX B.11.11 Golden Image"
        "/var/opt/ignite/data/Rel_B.11.11/archive11.cfg"
        "/var/opt/ignite/data/Rel_B.11.11/archive_disk.cfg"
        "/var/opt/ignite/config.local"
}
root@hpeos004[ignite]

I will check this complete configuration for syntax errors:

root@hpeos004[ignite] instl_adm -T
       * Checking file: /opt/ignite/data/Rel_B.11.11/config
       * Checking file: /opt/ignite/data/Rel_B.11.11/hw_patches_cfg
       * Checking file: /var/opt/ignite/data/Rel_B.11.11/Core_OS.cfg
       * Checking file: /var/opt/ignite/config.local
       * Checking file: /var/opt/ignite/saved_cfgs/Custom_Config
       * Checking file: /var/opt/ignite/data/Rel_B.11.11/FooProd.cfg
       * Checking file: /var/opt/ignite/data/Rel_B.11.11/archive11.cfg
       * Checking file: /var/opt/ignite/data/Rel_B.11.11/archive_disk.cfg
root@hpeos004[ignite]
root@hpeos004[ignite] manage_index -l
HP-UX B.11.11 Default
HP-UX B.11.11 FooProd
Golden Image
root@hpeos004[ignite]

The only consideration I have is the content of the first 8KB of the INSTALLFS file. Previously, I set up a root password in this file. To ensure that I don't use that password for my Golden Image, which is a trusted system and has a root password already established, I will build some logic into my INSTALLFS file:

root@hpeos004[] instl_adm -d > /tmp/instl.out
root@hpeos004[] vi /tmp/instl.out
# instl_adm defaults:
# NOTE: Manual additions between the lines containing "instl_adm defaults"
#       and "end instl_adm defaults" will not be preserved.
server="192.168.0.35"
netmask[]="0xffffffe0"
route_gateway[0]=""
route_destination[0]="default"
sd_server="192.168.0.35"
# end instl_adm defaults.
run_ui=false
control_from_server=true
disable_dhcp=true
!( cfg "Golden Image" ) {
root_password="sv.epmVgln4pU,.."
}
timezone="GMT0BST"
is_net_info_temporary=false
_hp_keyboard="PS2_DIN_US_English"
root@hpeos004[]
root@hpeos004[] instl_adm -f /tmp/instl.out
root@hpeos004[]

This logic means that the installation will not set up a root password. This is okay because we are extracting from the archive the trusted systems database.

I am now ready to test the Golden Image.

Test the Golden Image configuration

I could now attempt to install a client using the Golden Image. In my case, I will attempt to reinstall the system that acted as the Golden System. First, I will reset some attribute to test that it was the Golden Image that was actually installed:

root@hpeos003[] /usr/lbin/tsconvert -r
Restoring /etc/passwd...
/etc/passwd restored.
Deleting at and crontab audit ID files...
At and crontab audit ID files deleted.
root@hpeos003[]
root@hpeos003[] bdf
/dev/vg00/lvol3    1335296 1056096  261777   80% /
/dev/vg00/lvol1     111637   53265   47208   53% /stand
/dev/vg00/lvol8     614400  338839  258352   57% /var
/dev/vg00/lvol7    1122304  773682  326888   70% /usr
/dev/vg00/lvol4      65536   30153   33235   48% /tmp
/dev/vg00/lvol6     851968  686803  154858   82% /opt
/dev/vg00/lvol5      24576    5765   17678   25% /home
root@hpeos003[]
root@hpeos003[] lvextend -L 200 /dev/vg00/lvol5
Logical volume "/dev/vg00/lvol5" has been successfully extended.
Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/vg00.conf
root@hpeos003[] fsadm -F vxfs -b 200M /home
vxfs fsadm: /dev/vg00/rlvol5 is currently 24576 sectors - size will be increased
root@hpeos003[] bdf
Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvol3    1335296 1056368  261522   80% /
/dev/vg00/lvol1     111637   53265   47208   53% /stand
/dev/vg00/lvol8     614400  338839  258352   57% /var
/dev/vg00/lvol7    1122304  773682  326888   70% /usr
/dev/vg00/lvol4      65536   30153   33235   48% /tmp
/dev/vg00/lvol6     851968  686803  154858   82% /opt
/dev/vg00/lvol5     204800    5813  186593    3% /home
root@hpeos003[]

I will now reinstall this system, and I expect it to return to its former configuration once the installation is complete. I will use bootsys to boot the client and use the Golden Image archive:

root@hpeos004[] bootsys -i "Golden Image" -f hpeos003
        Rebooting hpeos003 now.
root@hpeos004[]

As you can see in Figure 13-3, I have picked up the Golden Image configuration from the Ignite-UX server.

Installing a Golden Image.

Figure 13-3. Installing a Golden Image.

Once the installation is complete, I will test to ensure that we are a trusted system again, and that the /home filesystem has been configured correctly.

root@hpeos003[] cat /tcb/files/auth/r/root
root:u_name=root:u_id#0:
        :u_pwd=9ea83MEzCNwmI:
        :u_bootauth:u_auditid#0:
        :u_auditflag#1:
     :u_succhg#1065026597:u_pswduser=root:u_suclog#1065026597:u_suctty=consol
e:
        :u_lock@:chkent:
root@hpeos003[]
root@hpeos003[] bdf
Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvol3    1335296 1056853  261063   80% /
/dev/vg00/lvol1     111637   27030   73443   27% /stand
/dev/vg00/lvol8     614400  206161  382782   35% /var
/dev/vg00/lvol7    1122304  774080  326483   70% /usr
/dev/vg00/lvol4      65536    1184   60400    2% /tmp
/dev/vg00/lvol6     851968  685277  156289   81% /opt
/dev/vg00/lvol5      24576    5765   17678   25% /home
root@hpeos003[]
root@hpeos003[] swlist -l patch FooProd
# Initializing...
# Contacting target "hpeos003"...
#
# Target:  hpeos003:/
#

# FooProd               1.0            This is an example 11.X product.
# FooProd.FOO-HELP         1.0               On-line Help for Foo
# FooProd.FOO-MIN          1.0               Minimal stuff for Foo 32-bit
  PHCO_3000.FOO-MIN        1.0               Minimal stuff for Foo    applied

  PHCO_4000.FOO-MIN        1.0               Minimal stuff for Foo    applied

root@hpeos003[]

This all looks great. I would say that we have had success with our Golden Image.

The last configuration we look at is in some ways similar to a Golden Image, except it is unique to an individual node; it is known as a Recovery Archive.

Making a Recovery Archive

A Recovery Archive is similar in some ways to a Golden Image. The major difference is that a Recovery Archive is unique to an individual machine. When used to perform an installation, it will recover that system to exactly the way it was configured when the Recovery Archive was created with no user intervention. As such, it can be viewed as a customized Ignite-UX installation device.

A Recovery Archive can be used to clone systems, in a similar way to a Golden Image, but user interaction will be required at the beginning of the installation to stop the Recovery Archive from using the hostname/IP address configuration of the node that created the Recovery Archive.

There are three options in creating a Recovery Archive. The commands are similar but subtly different:

make_recoveryNot many options to it; not highly configurable and as such not used as much these days.

make_tape_recoveryUsed to create a Recovery Archive to a local tape device.

make_net_recoveryUsed to create a Recovery Archive that is stored on an Ignite-UX server located on the network.

In essence, these commands are a simple interface into the make_sys_image command. We see this in the output to commands later. We look at make_net_recovery. The other commands are either similar or are not as complicated; as such, you should find them easy to navigate.

Allowing clients access to the configuration files

When creating a Recovery Archive, the clients will store configuration files on the Ignite-UX server under the directory /var/opt/ignite/clients while the actually Recovery Archive itself will be stored (by default) under the directory /var/opt/ignite/recovery/archives/<client>. In my experience, the Ignite/UX server and the server storing the Recovery Archive (the Archive Server) are usually the same machine, although technically they don't have to be. Both these directories need to be NFS exported to the client. In many cases, I have seen the /var/opt/ignite/recovery directory exported to everyone. While this is easier to set up, it has security implications. Ideally, we would export individual client directories to individual clients. We just need to make sure that when we create individual client directories, they are owned by user and group bin:bin:

root@hpeos004[archives] pwd
/var/opt/ignite/recovery/archives
root@hpeos004[archives] mkdir hpeos003
root@hpeos004[archives] chown bin:bin hpeos003
root@hpeos004[archives] ll
total 0
drwxrwxr-x   2 bin        bin             96 Oct  1 17:41 hpeos003
root@hpeos004[archives]
root@hpeos004[archives] cat /etc/exports
/var/opt/ignite/recovery/archives/hpeos003 -anon=2,access=hpeos003
/var/opt/ignite/clients -anon=2
/var/opt/ignite/archives -anon=2
root@hpeos004[archives]
root@hpeos004[archives] exportfs -a
root@hpeos004[archives]

Again, we need to ensure that there is adequate disk space under /var to accommodate an entire tar archive of vg00 for all the clients on the network.

Ensure that the clients have the most up-to-date recovery commands

It is a good idea that the clients are using the most up-to-date versions of the Recovery Commands loaded on our Ignite-UX server. To assist in this, we have some commands that we can run to create a depot of the necessary Recovery Commands required on the clients. We do this on our Ignite-UX server:

root@hpeos004[] swlist -l depot
# Initializing...
# Target "hpeos004" has the following depot(s):
  /software/11i-PA/FooProd
  /software/11i-PA/patches
  /software/11i-PA/core
  /software/11i-PA/IPv6
  /software/11i-PA/SG11.14
  /var/opt/mx/depot11
root@hpeos004[]

This tells me that we haven't created the depot for the Recovery Commands. If we were to initiate a Network Recovery Archive from the Ignite-UX GUI running on the Ignite-UX server, it would automatically create the depot for me. Here is the command to create it by hand:

root@hpeos004[] /opt/ignite/lbin/pkg_rec_depot
       * Generating the product specification file.

=======  10/01/03 18:03:49 BST  BEGIN swreg SESSION (non-interactive)

       * Session started for user "root@hpeos004".

       * Beginning Selection
       * Targets:                hpeos004
       * Objects:                /var/opt/ignite/depots/recovery_cmds
       * Selection succeeded.



=======  10/01/03 18:03:49 BST  END swreg SESSION (non-interactive)

       * Creating depot: /var/opt/ignite/depots/recovery_cmds

=======  10/01/03 18:03:50 BST  BEGIN swpackage SESSION

       * Session started for user "root@hpeos004".

       * Source:        hpeos004:/var/tmp/rec_psf.5769
       * Target:        hpeos004:/var/opt/ignite/depots/recovery_cmds
       * Software selections:
             *



       * Beginning Selection Phase.
       * Reading the Product Specification File (PSF)
         "/var/tmp/rec_psf.5769".
       * Reading the product "Ignite-UX" at line 5.
       * Reading the fileset "BOOT-KERNEL" at line 16.
       * Reading the fileset "BOOT-SERVICES" at line 46.
       * Reading the fileset "FILE-SRV-11-11" at line 70.
       * Reading the fileset "IGNITE" at line 93.
       * Reading the fileset "IGNT-ENG-A-MAN" at line 248.
       * Reading the fileset "MGMT-TOOLS" at line 309.
       * Reading the fileset "OBAM-RUN" at line 391.
       * Reading the fileset "RECOVERY" at line 426.

NOTE:    Creating new target depot
         "/var/opt/ignite/depots/recovery_cmds".
       * Selection Phase succeeded.


       * Beginning Analysis Phase.
       * Analysis Phase succeeded.


       * Beginning Package Phase.
NOTE:    You have specified the "package_in_place" option.  The
         software you have selected will be packaged with references to
         the actual source files.  No source files will be copied into
         the target depot "/var/opt/ignite/depots/recovery_cmds".
       * Packaging the product "Ignite-UX".
       * Packaging the fileset "Ignite-UX.BOOT-KERNEL".
       * Packaging the fileset "Ignite-UX.BOOT-SERVICES".
       * Packaging the fileset "Ignite-UX.FILE-SRV-11-11".
       * Packaging the fileset "Ignite-UX.IGNITE".
       * Packaging the fileset "Ignite-UX.IGNT-ENG-A-MAN".
       * Packaging the fileset "Ignite-UX.MGMT-TOOLS".
       * Packaging the fileset "Ignite-UX.OBAM-RUN".
       * Packaging the fileset "Ignite-UX.RECOVERY".
       * Package Phase succeeded.


NOTE:    You must register the new depot
         "/var/opt/ignite/depots/recovery_cmds" to make it generally
         available as a source for swinstall and swcopy tasks.  To
         register it, execute the command

                swreg -l depot /var/opt/ignite/depots/recovery_cmds


=======  10/01/03 18:03:51 BST  END swpackage SESSION

       * Registering depot: /var/opt/ignite/depots/recovery_cmds

=======  10/01/03 18:03:51 BST  BEGIN swreg SESSION (non-interactive)

       * Session started for user "root@hpeos004".

       * Beginning Selection
       * Targets:                hpeos004
       * Objects:                /var/opt/ignite/depots/recovery_cmds
       * Selection succeeded.



=======  10/01/03 18:03:51 BST  END swreg SESSION (non-interactive)

       * Creating IUX Recovery bundles.

=======  10/01/03 18:03:53 BST  BEGIN swpackage SESSION

       * Session started for user "root@hpeos004".

       * Source:        hpeos004:/var/tmp/psf.5792
       * Target:        hpeos004:/var/opt/ignite/depots/recovery_cmds
       * Software selections:
             *


       * Beginning Selection Phase.
       * Reading the Product Specification File (PSF)
         "/var/tmp/psf.5792".
       * Reading the bundle "Ignite-UX-11-11" at line 11.

WARNING: Converting software from a source with layout_version 1.0 into
         a target with layout_version 0.8 since the layout_version
         option is set to 0.8.
         Note by converting 1.0 software to layout_version 0.8, you
         will lose any new 1.0 attributes which can corrupt the
         software if it depends on 1.0 attributes.
       * Selection Phase succeeded.


       * Beginning Analysis Phase.
       * Analysis Phase succeeded.


       * Beginning Package Phase.

       * Packaging the bundle
         "Ignite-UX-11-11,r=B.3.6.82,a=HP-UX_B.11.11_32/64".
       * Package Phase succeeded.

=======  10/01/03 18:03:53 BST  END swpackage SESSION


=======  10/01/03 18:03:54 BST  BEGIN swpackage SESSION

       * Session started for user "root@hpeos004".

       * Source:        hpeos004:/var/tmp/psf.5814
       * Target:        hpeos004:/var/opt/ignite/depots/recovery_cmds
       * Software selections:
             *


       * Beginning Selection Phase.
       * Reading the Product Specification File (PSF)
         "/var/tmp/psf.5814".
       * Reading the bundle "IUX-Recovery" at line 11.

WARNING: Converting software from a source with layout_version 1.0 into
         a target with layout_version 0.8 since the layout_version
         option is set to 0.8.
         Note by converting 1.0 software to layout_version 0.8, you
         will lose any new 1.0 attributes which can corrupt the
         software if it depends on 1.0 attributes.
       * Selection Phase succeeded.


       * Beginning Analysis Phase.
       * Analysis Phase succeeded.


       * Beginning Package Phase.

       * Packaging the bundle
         "IUX-Recovery,r=B.3.6.82,a=HP-UX_B.11.11_32/64".
       * Package Phase succeeded.

=======  10/01/03 18:03:54 BST  END swpackage SESSION

root@hpeos004[]

We can now use this depot to install the Recovery Commands onto all the clients in the network. We could use this script periodically on all the clients to automatically update the Recovery Commands if the server has a newer version than the client:

root@hpeos003[] ll /usr/local/bin/check_rec_cmds.sh
-rwx------   1 root       sys            181 Oct  1 18:09 /usr/local/bin/check_rec_cmds.sh
root@hpeos003[] cat /usr/local/bin/check_rec_cmds.sh
#!/sbin/sh

IUXServer=hpeos004

/opt/ignite/lbin/check_version -s ${IUXServer}

if [ $? != 0 ]
then
        swinstall -s ${IUXServer}:/var/opt/ignite/depots/recovery_cmds 
IUX-Recovery
fi

root@hpeos003[]

Once we have the updated Recovery Commands, we can proceed with using make_net_recovery.

When we run make_net_recovery, we can simply run it with a command line such as:

# make_net_recovery –s <IgniteServer>

This will archive a list of files contained in /opt/ignite/recovery/mnr_essentials (and /var/opt/ignite/recovery/mnr_essentials if we have set it up). The mnr_essentials file does not contain lots of files. As the name suggests, it would just be enough for you to boot your client and perform some basic recovery, e.g., recover all your vg00 files from a backup tape. Most of the time, administrators will want their Recovery Archive to be a complete archive or vg00 and possibly other volume groups (although if your other volume groups are on separate disks and backed up regularly, having them as part of a Recovery Archive might be overkill) I am going to use the –A option to make_net_recovery, which will include all the disk and volume groups that house the files mentioned in the mnr_essentials file(s). In most instances, this is a convenient way to have vg00 backed up in its entirety.

root@hpeos003[] make_net_recovery -A -s hpeos004
       * Creating NFS mount directories for configuration files.

=======  10/01/03 18:27:52 BST  Started make_net_recovery. (Wed Oct 01 18:27:52
BST 2003)
         @(#) Ignite-UX Revision B.3.6.82
         @(#) net_recovery (opt) $Revision: 10.567 $

       * Testing pax for needed patch
       * Passed pax tests.
       * Checking Versions of Recovery Tools
       * Creating System Configuration.
       * /opt/ignite/bin/save_config -f /var/opt/ignite/recovery/client_mnt/0x0
         0306E5C3FF8/recovery/2003-10-01,18:27/system_cfg vg00
NOTE:    File: /var/opt/ignite/recovery/client_mnt/0x00306E5C3FF8/recovery/2003
         -10-01,18:27/system_cfg is not world-readable, this may cause clients to
fail to read it during an installation.
       * Backing Up Volume Group /dev/vg00
       * /usr/sbin/vgcfgbackup /dev/vg00
Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/
vg00.conf
       * Creating Map Files for Volume Group /dev/vg00
       * /usr/sbin/vgexport -p -m /etc/lvmconf/vg00.mapfile /dev/vg00
vgexport: Volume group "/dev/vg00" is still active.

       * Creating Control Configuration.
NOTE:    File: /var/opt/ignite/recovery/client_mnt/0x00306E5C3FF8/recovery/2003
         -10-01,18:27/control_cfg is not world-readable, this may cause clients
to fail to read it during an installation.
       * Creating Archive File List
       * Creating Archive Configuration

       * /opt/ignite/bin/make_arch_config -c /var/opt/ignite/recovery/client_mn
         t/0x00306E5C3FF8/recovery/2003-10-01,18:27/archive_cfg -g /var/opt/ign
         ite/recovery/client_mnt/0x00306E5C3FF8/recovery/2003-10-01,18:27/flist
         -n 2003-10-01,18:27 -r 64 -d Recovery Archive -L
         /var/opt/ignite/recovery/arch_mnt -l
         hpeos004:/var/opt/ignite/recovery/archives/hpeos003 -i 1
NOTE:    File: /var/opt/ignite/recovery/client_mnt/0x00306E5C3FF8/recovery/2003
         -10-01,18:27/archive_cfg is not world-readable, this may cause clients
to fail to read it during an installation.
       * Saving the information about archive to
         /var/opt/ignite/recovery/previews
       * Creating The Networking Archive

       * /opt/ignite/data/scripts/make_sys_image -d
         /var/opt/ignite/recovery/arch_mnt -t n -s local -n 2003-10-01,18:27 -m
         t -w /var/opt/ignite/recovery/client_mnt/0x00306E5C3FF8/recovery/2003-
         10-01,18:27/recovery.log -u -R -g /var/opt/ignite/recovery/client_mnt/
         0x00306E5C3FF8/recovery/2003-10-01,18:27/flist -a 2929740

       * Preparing to create a system archive
       * The archive is estimated to reach 1464870 kbytes.
       * Free space on /var/opt/ignite/recovery/arch_mnt
         after archive should be about 1324738 kbytes.

       * Archiving contents of hpeos003 via tar to
             /var/opt/ignite/recovery/arch_mnt/2003-10-01,18:27.
       * Creation of system archive complete

NOTE: Could not read the /etc/resolv.conf file.
       * Creating CINDEX Configuration File

       * /opt/ignite/bin/manage_index -q -c 2003-10-01,18:27 Recovery Archive
         -i /var/opt/ignite/recovery/client_mnt/0x00306E5C3FF8/CINDEX -u
         Recovery Archive


=======  10/01/03 18:44:04 BST  make_net_recovery completed successfully!
root@hpeos003[]

I can include other files, directories, and volume groups by using options such as –x include=file|dir and –x inc_entire=dsk|vg. The archive will be created on the Ignite/Archive Server under a subdirectory named after the MAC address of my LAN card (the LAN card used can be modified using the –l <MAC> option). The configuration files generated are stored under a directory whose name reflects the time the last archive was created:

root@hpeos004[recovery] ll
total 4
drwxr-xr-x   2 bin        bin           1024 Oct  1 18:44 2003-10-01,18:27
-rw-------   1 bin        sys            290 Oct  1 18:44 client_status
lrwx------   1 bin        bin             16 Oct  1 18:28 latest -> 2003-10-01,18:27
root@hpeos004[recovery] ll 2003-10-01,18:27/
total 9110
-rw-------   1 bin        sys           3375 Oct  1 18:28 archive_cfg
-rw-------   1 bin        sys             17 Oct  1 18:28 archive_content
-rw-------   1 bin        sys            289 Oct  1 18:28 control_cfg
-rw-------   1 bin        sys        4637951 Oct  1 18:28 flist
-rw-------   1 bin        sys           8341 Oct  1 18:44 manifest
-rw-------   1 bin        sys           3467 Oct  1 18:44 recovery.log
-rw-------   1 bin        sys           5796 Oct  1 18:28 system_cfg
root@hpeos004[recovery]

Interestingly, make_net_recovery has created an Ignite-UX INDEX file for this client:

root@hpeos004[hpeos003] pwd
/var/opt/ignite/clients/hpeos003
root@hpeos004[hpeos003] cat CINDEX
# CINDEX
# This file is used to define the Ignite-UX configurations
# and to define which config files are associated with each
# configuration. See the ignite(5), instl_adm(4), and
# manage_index(1M) man pages for details.
#
# NOTE: The manage_index command is used to maintain this file.
#       Comments, logic expressions and formatting changes are not
#       preserved by manage_index.
#
# WARNING: User comments (lines beginning with '#' ), and any user
#          formatting in the body of this file are _not_ preserved
#          when the version of Ignite-UX is updated.
#
cfg "2003-10-01,18:27 Recovery Archive" {
        description "Recovery Archive"
        "recovery/2003-10-01,18:27/system_cfg"
        "recovery/2003-10-01,18:27/control_cfg"
        "recovery/2003-10-01,18:27/archive_cfg"
}=TRUE
root@hpeos004[hpeos003]

Every time a new archive is created, a new entry in this file will be created and the new archive is made the default choice. By default, make_net_recovery will maintain the last two archives per client; we can modify this with the –n <num of archives> option to make_net_recovery. We can view these configurations with manage_index command as long as we specify the location of the CINDEX file:

root@hpeos004[hpeos003] manage_index –l -i /var/opt/ignite/clients/hpeos003/CINDEX
2003-10-01,18:27 Recovery Archive
root@hpeos004[hpeos003]

An interesting addition to this would be to include the mirroring of your root disk after the installation was complete. Although we may install the disk mirroring software, it would take additional work to ensure that the functionality was added to the client once the archive was installed. Here, I have added an entry to the CINDEX file for this client:

root@hpeos004[hpeos003] vi CINDEX
# CINDEX
# This file is used to define the Ignite-UX configurations
# and to define which config files are associated with each
# configuration. See the ignite(5), instl_adm(4), and
# manage_index(1M) man pages for details.
#
# NOTE: The manage_index command is used to maintain this file.
#       Comments, logic expressions and formatting changes are not
#       preserved by manage_index.
#
# WARNING: User comments (lines beginning with '#' ), and any user
#          formatting in the body of this file are _not_ preserved
#          when the version of Ignite-UX is updated.
#
cfg "2003-10-01,18:27 Recovery Archive" {
        description "Recovery Archive"
        "recovery/2003-10-01,18:27/system_cfg"
        "recovery/2003-10-01,18:27/control_cfg"
        "recovery/2003-10-01,18:27/archive_cfg"
        "recovery/2003-10-01,18:27/config.local"
}=TRUE
root@hpeos004[hpeos003]

I need to create the config.local file. This script will make use of the post_config_cmd variable, which is one way of performing additional tasks after the installation has completed. Here's my interpretation of this for my client hpeos003:

root@hpeos004[hpeos003] vi recovery/ 2003-10-01,18:27/config.local
#########################################################
######## Begin user changes to add disk mirroring. ########
post_config_cmd +="
# Recreate a mirror of the boot disk.
# Make sure the disk is removed from the group by using
# vgreduce. Alternatively you could edit the vg00
# definition to remove the references to this disk.
vgreduce /dev/vg00 /dev/dsk/c3t15d0
# Make the disk contain a boot area.
pvcreate -f -B /dev/rdsk/c3t15d0
# Add the mirrored disk back to the group.
vgextend /dev/vg00 /dev/dsk/c3t15d0
# Copy the boot area to the disk.
mkboot /dev/rdsk/c3t15d0
# Turn off the quorum requirement on both disks
mkboot -a "hpux -lq" /dev/rdsk/c3t15d0
mkboot -a "hpux -lq" /dev/rdsk/c1t15d0
# Allocate the mirrors. Mirrors must be allocated for all
# logical volumes that were previously mirrored. This
# example illustrates primary swap and root. You should
# add others as needed. If /stand is in a separate volume, you
# should do an lvextend for it first.
for x in 1 2 3 4 5 6 7 8
do
lvextend -m 1 /dev/vg00/lvol${x} /dev/dsk/c3t15d0
done
# Update the BDRA and the LABEL file.
lvlnboot -vR
"
######## End user changes to add disk mirroring. ########
#########################################################
root@hpeos004[hpeos003]

This script would need tuning for your own clients. I can check the syntax of this file with the instl_adm command.

root@hpeos004[hpeos003] instl_adm -T -f recovery/2003-10-01,18:27/config.local
root@hpeos004[hpeos003]

I could include such a script for all my Recovery Archives, if appropriate.

At this point, I am now a little concerned that we still have some options in the INSTALLFS file that could affect a Recovery Archive. In particular, I am concerned with setting the root password even on a Recovery Archive. At this point, I would be looking at taking that option out of the INSTALLFS file and placing it in specific configuration files where it is appropriate.

root@hpeos004[] instl_adm -d
# instl_adm defaults:
# NOTE: Manual additions between the lines containing "instl_adm defaults"
#       and "end instl_adm defaults" will not be preserved.
server="192.168.0.35"
netmask[]="0xffffffe0"
route_gateway[0]=""
route_destination[0]="default"
sd_server="192.168.0.35"
# end instl_adm defaults.
run_ui=false
control_from_server=true
disable_dhcp=true
!( cfg "Golden Image" ) {
root_password="sv.epmVgln4pU,.."
}
timezone="GMT0BST"
is_net_info_temporary=false
_hp_keyboard="PS2_DIN_US_English"
root@hpeos004[]
root@hpeos004[] instl_adm -d > /tmp/instl_adm.out
root@hpeos004[]
root@hpeos004[] vi /tmp/instl_adm.out
# instl_adm defaults:
# NOTE: Manual additions between the lines containing "instl_adm defaults"
#       and "end instl_adm defaults" will not be preserved.
server="192.168.0.35"
netmask[]="0xffffffe0"
route_gateway[0]=""
route_destination[0]="default"
sd_server="192.168.0.35"
# end instl_adm defaults.
run_ui=false
control_from_server=true
disable_dhcp=true
timezone="GMT0BST"
is_net_info_temporary=false
_hp_keyboard="PS2_DIN_US_English"
root@hpeos004[]
root@hpeos004[] instl_adm -f /tmp/instl_adm.out
root@hpeos004[]

Consequently, we can use these configuration clauses in a bootsys command if we want to install a client from this archive:

root@hpeos004[hpeos003] bootsys -f -a -i "2003-10-01,18:27 Recovery Archive"
hpeos003
        Rebooting hpeos003 now.
root@hpeos004[hpeos003]

When the installation is complete, all the logical volumes in vg00 should be mirrored:

root@hpeos003[] lvlnboot -v
Boot Definitions for Volume Group /dev/vg00:
Physical Volumes belonging in Root Volume Group:
        /dev/dsk/c1t15d0 (0/0/1/1.15.0) -- Boot Disk
        /dev/dsk/c3t15d0 (0/0/2/1.15.0) -- Boot Disk
Boot: lvol1     on:     /dev/dsk/c1t15d0
                        /dev/dsk/c3t15d0
Root: lvol3     on:     /dev/dsk/c1t15d0
                        /dev/dsk/c3t15d0
Swap: lvol2     on:     /dev/dsk/c1t15d0
                        /dev/dsk/c3t15d0
Dump: lvol2     on:     /dev/dsk/c1t15d0, 0

root@hpeos003[]

This looks like it has been successful. I could perform a number of additional steps to check that the mirroring of all volumes in vg00 was completed successfully. You have to take my word for it that it worked perfectly well.

Chapter Review

We have looked at a number of configuration possibilities with Ignite-UX. Please do not think that we have covered every possibility. There is significantly more that you can accomplish if you want to really customize a configuration for individual clients on your network. We hinted at some of the logic you can include in your configuration files. This logic is where we could spend countless time in tuning specific configurations for specific clients with specific hardware configurations. Have a look at man 4 instl_adm if you want to take this further, as well as some excellent documentation under /opt/ignite/share/doc. Obviously, you can download the online manual B2355-90767: Ignite-UX Administration Guide from http://docs.hp.com. Have fun!

Test Your Knowledge

1:

I have set up Remote Operations in order to push software over the network to remote clients. I can use either the Remote Operations GUI or the swinstall command to push an entire HP-UX installation to my remote clients. True or False?

2:

Part of the process of setting up Remote Operations includes installing the AgentConfig.SD-CONFIG fileset from the Remote Operations server. This is an optional step, which technically is not necessary if you are able to set up the Software Distributor ACLs correctly on the remote clients. True or False?

3:

Ignite-UX is a superset of the Software Distributor command set. As such, Ignite-UX can be seen as an extension to Software Distributor. True or False?

4:

An Ignite-UX server needs to be an NFS server as well. True or False?

5:

If you have a large number of similarly configured systems, using a Golden Image is a quick way to reinstate a system after a major disaster requiring a reinstallation of the operating system. True or False?

Answers to Test Your Knowledge

A1:

False. You cannot use Remote Operations to push an entire HP-UX installation to remote clients.

A2:

True. Although it is always best to follow the process as specified, there is the possibility of running the swacl command manually. This can be technically dangerous; the administrator needs to be sure that the execution phase of installing the AgentConfig.SD-CONFIG does not perform any additional steps as well as running the swacl command.

A3:

False. There is no direct relationship between Ignite-UX and Software Distributor. The only connection is that Ignite-UX can understand Software Distributor software depots.

A4:

True. The /var/opt/ignite/clients directory is NFS exported to all Ignite-UX clients. The INSTALLFS kernel is NFS enabled in order to access configuration information used during the initial phases of the installation.

A5:

True.

Chapter Review Questions

1:

The bootsys command can be used to automatically boot an installation client into the Ignite-UX interface. As well as copying the Ignite-UX kernel and Ignite-UX filesystem to the install client, what must the bootsys command also do to ensure that the client starts the Ignite-UX kernel?

2:

What function does the file /etc/opt/ignite/instl_boottab play in a network installation? Which process uses this file? Is the information contained in the file unique for every install client?

3:

Why is the first 8KB of the Ignite-UX installation filesystem (/opt/ignite/data/INSTALLFS) important?

4:

Why might we have to use the make_bundles command when setting up an Ignite-UX server?

5:

When creating a Golden Image, we need to concern ourselves with impact statements. What are impact statements, what are they used for, and how do we create them when creating a Golden Image?

Answers to Chapter Review Questions

A1:

The bootsys command must update the AUTO file in the LIF area of the remote client. The command stored in the AUTO file will be similar to “hpux /stand/WINSTALL”, the /stand/WINSTALL file being the Ignite-UX kernel. Once this has been updated, the bootsys command will reboot the remote client in order to start the Ignite-UX kernel/interface.

A2:

The /etc/opt/ignite/instl_boottab file contains temporary IP addresses assigned to network installation clients when they boot across the network. The IP addresses are temporary addresses used simply to give the client an IP configuration in order for it to communicate with the installation server during the installation process. As such, the information in this file is not unique to every install client (although the IP addresses can be reserved for specific clients). The real IP address for the client will be supplied during the installation process itself. The IP process that uses the instl_boottab file is the instl_bootd server spawned by inetd.

A3:

The first 8KB of INSTALLFS is important because it contains default Ignite-UX parameters that control the installation of software. We can add to or modify the parameters in this 8KB header. In this way, we can perform additional tasks once the installation is complete.

A4:

We may have to use the make_bundles command, because software stored in a Software Distributor depot may not have a bundle specification describing the software in the depot. This is not a problem for Software Distributor itself, because it can understand software when described at the product level. Ignite-UX, however, needs software to be described in bundles. Consequently, make_bundles can understand products and will produce a suitable Product Specification File, from which it can produce a suitable bundle specification for the intended software.

A5:

Impact statements describe the amount of space required in a given filesystem when loading software. Ignite-UX will normally calculate the impact statements when creating a configuration file based on a software depot. When managing a Golden Image, this step needs to be performed manually. The command archive_impact is used to calculate the impact statements for a Golden Image.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.204.201