|  AIX 
              Network Install Manager
 Bill Wood
              When we replaced our old hardware platform with IBM AIX RS/6000 
              systems, a main concern was controlling how our new systems would 
              be installed. With the old platform, we ran into several instances 
              where the software (moving from our development group to QA and 
              into production) was not the same, which caused numerous build breaks. 
              We chose the AIX Network Installation Management (NIM) setup, because 
              we needed to ensure consistent, standard OS installations between 
              systems within our four separate data centers. Our company also 
              has a security rule that doesn't allow any one machine access 
              to all networks within our organization. Our four separate data 
              centers have four separate networks with no connection between them, 
              and each network is segmented into either inside or outside the 
              firewall. 
              NIM Resources
              NIM allows you to customize installations and maintain clients 
              on the network from a centralized location (the NIM master) or the 
              NIM client itself. The master contains the NIM database and can 
              serve resources. Resources in NIM are files or directories containing 
              data that NIM will use to install, customize, and maintain NIM clients. 
              A NIM client is any machine configured and defined in the NIM database. 
              Some key NIM resources used in our setup are:
              
			 
              Working with NIM Licensed Program Product Source Directory (lpp_source): 
                This directory contains backup file format (BFF) images, which 
                AIX installp uses to load software. One way to understand the 
                role of the lpp_source directory in a BOS installation 
                is to compare it to all the installation images needed to support 
                any configuration (specifically different device configurations) 
                along with a base core set of software (called simages) that are 
                on the BASE installation CDs. We created a base 433 lpp_source, 
                multiple lpp_sources containing different maintenance levels, 
                and separate lpp_sources for our 32-bit and 64-bit third-party 
                application software. 
               Shared Product Object Tree (SPOT): This directory is created 
                from an lpp_source and is equivalent in content to a 
                /usr file-system on AIX. The purpose of a SPOT in a NIM installation 
                is similar to the boot images and BOS installation scripts (bi_main, 
                rc.boot, and rc.bosinst) on volume 1 of the BASE 
                install CD. The SPOT must contain support for all boot environments 
                (platform, network type, kernel type). We created several different 
                SPOTs for the different data centers and maintenance levels we 
                use to support our systems. 
               bosinst_data: This data file contains information that 
                drives the BOS install (e.g., prompt vs. no-prompt, which disk 
                to install the OS on, and the type of installation (Overwrite, 
                Preservation, or Migration) to name a few). First, we created 
                separate bosinst_data resources for each machine type (S80, 
                H70, B50, M80, P680, and 43P). Then, by specifying two disks to 
                target in our bosinst_data resource and specifying copies 
                in the image_data resource, we could set up mirroring during 
                the initial load. 
               image_data: This data file contains information about 
                the characteristics of the OS being installed. For example, it 
                includes the size of file systems, whether or not to mirror, and 
                whether or not to disk stripe. We created separate image_data 
                resources for each machine type (S80, H70, B50, M80, P680 and 
                43P). 
               Script: This is a customization file the systems administrator 
                can create, which executes near the end of the BOS installation. 
                You can execute multiple NIM script resources during a BOS installation. 
                If you need to control the order of execution, I recommend putting 
                it all in one large script. We created one NIM script to set up 
                the OS environment and hardware parameters, configure certain 
                system files, set up security, install third-party software, create 
                and set up dump devices, customize paging space to correspond 
                to the system RAM, and help create a complete inventory by machine 
                type and serial number. I've included a copy of this script 
                at the end of this article (Listing 1). All listings for this 
                article are available from the Sys Admin Web site: http://www.sysadminmag.com
               Installp_bundles: This data file contains a customized 
                list of additional software to install after the base AIX software 
                is loaded. If you have different configurations that you need 
                to duplicate on a repeatable basis, this resource is very useful. 
                In our environment, we have different OS software requirements 
                for development, QA, and production above the minimal AIX software 
                needed to support different hardware systems. The easiest way 
                to facilitate and maintain these different requirements, which 
                need to be consistent, is to use installp_bundles. 
               mksysb: This is a backup archive file that contains 
                a system image of rootvg. Because of our network security 
                restrictions (no one machine could be connected to all the networks 
                within our organization), we used mksysb and savevg 
                tapes to replicate the NIM master to the other data centers. If 
                we had one machine connected to the different data centers, we 
                could have used NIM to replicate and update the NIM masters in 
                the different data centers by BOS-installing a NIM mksysb 
                resource and using a NIM script to restore the other volume group 
                data. 
               mac_group: This is a logical grouping of machine types 
                (standalone, diskless, or dataless) that enables the systems administrator 
                to target one or more machines with a single command or NIM operation. 
                We did not use this feature, but we could have taken advantage 
                of this by grouping all like systems and like configurations to 
                install to more than one machine at a time.
				  We used the 43P systems as our NIM masters for each data center 
              because they could complete remote installations of machines or 
              be moved and directly connected to a server for OS installations. 
              These NIM masters were also designated as the resource servers in 
              our environment. To ensure consistency and standardization of each 
              NIM master (for the different data centers), we created a standard 
              NIM master machine, which we cloned. We made a stacked tape containing 
              a mksysb image and a savevg image of the standard 
              NIM master to sync up and update the other NIM masters. Here are 
              the commands we ran on the standard NIM master to create this stacked 
              single tape:
              
              1. mksysb -i /dev/rmt0 2. tctl -f/dev/rmt0.1 fsf4
 3. savevg -i -m {volume_group_name} -f/dev/rmt0.1
 4. mt -f/dev/rmt0 rewind
  
              To restore the tape to the other NIM masters, we did the following:
              
              1. Booted and restored the mksysb image from the stacked 
              tape 2. tctl -f/dev/rmt0.1 fsf4
 3. restvg volume_group_name
 
              These NIM servers were placed throughout our environment and are 
              used by multiple operators with different training levels. Thus, 
              we developed a strict directory tree for storage of resources on 
              the NIM server, but this was our own restriction, not a restriction 
              created by NIM. I recommend creating either one large separate filesystem 
              or a few file systems that will contain your NIM resource files. 
              Also, use naming conventions that make sense to you in terms of 
              the resource name and directory structure. The following is a breakdown 
              of our directory structure and a description of what is contained 
              in the directory:
              
              Master directory of bundle lists:  
                  /export/installp_bundles 
                  
                  
              Master directory of all NIM resources:  
                  /export/nim 
                  
                  
              lpp sources for use by the NIM server during SPOT generation 
                and system installation:  
                  Installations/export/nim/aix433
                  
                  
              32-bit and 64-bit compiled third-party applications:  
                  /export/nim/aix433/32bit-lpp and
                  /export/nim/aix433/64bit-lpp
                  
                  
              Master bosinst.data files for each server type:  
                  /export/nim/bosinst
                  
                  
              Master image.data files for each server type:  
                  /export/nim/imagedata 
                  
                  
              In-house customization scripts:  
                  /export/nim/scripts 
                  
                  
              Master OS system files:  
                  /export/nim/system 
                  
                  
              Flat file inventories by serial number of each system installed 
                by the NIM server:  
                  /export/nim/system/{system type}/{serial number} 
                  
                  
              Master directories of additional special filesets:  
                  /export/nim/packages 
                  
                  
              Any mksysb file images of servers:  
                  /export/nim/mksysb 
                  
                  
              Master installable SPOT images:  
                  /export/nim/spot 
                  
                  
              NIM custom scripts:  
                  /export/nim/custom 
                  
                  
              Manual backups of the NIM configurations:  
                  /export/nim/nim-backup
                  
                  We used SPOT copies (customized to contain only the minimal 
                  OS software) to complete the initial loads of our NIM client 
                  systems to support our six different hardware platforms. To 
                  build a SPOT, we first loaded all AIX 4.3.3.0 filesets into 
                  a directory called raw-lpp_source. This directory essentially 
                  contained all volumes of the BASE install CDs, bonus pack CDs, 
                  and base and extended documentation CDs for 4.3.3. We also had 
                  an equivalent raw-lpp_source for each maintenance level 
                  we needed to support. We made sure that every fix for that maintenance 
                  level was present. Once completed, we generated a listing of 
                  lpp's into a bundle format (an installp_bundle 
                  resource that contained our customized minimal OS software) 
                  to create the AIX433-base lpp_source. We then created 
                  an MLXX lpp_source containing only the maintenance level 
                  we approved for our standard. This was customized similar to 
                  the AIX433-base lpp_source except it contained only the 
                  ML fixes. After our customized SPOTs were created, we were ready 
                  to install a system from this base lpp_source with any 
                  ML level.
                  During the installation process, we used the bosinst.data 
                  and image.data files to control the layout of the rootvg 
                  onto the hard disks of the server. Using NIM has been facilitated 
                  by establishing strict hardware configuration standards for 
                  each each IBM server type at our site. This provides the ability 
                  to move machines around without conducting a hardware upgrade. 
                  It also makes installation easy, because we always know what 
                  kind of hardware we are using.
                  Customizing 
                  After the installation of the OS was complete, we had the 
                  NIM server automatically run a customization script to enforce 
                  more unique standards within our computing environment. This 
                  customization script (Listing 1) was written, in-house, to facilitate 
                  turning on and off selected functions. It uses these functions 
                  to control the flow of each operational section. Each command 
                  used was echoed to the NIM console log along with a description 
                  to aid in diagnostics in case something went wrong during the 
                  NIM installation. By defining this script as a NIM resource, 
                  NIM is able to perform the administrative tasks discussed below. 
                  Note that this script is designed to meet the objective of a 
                  system being 95% pre-configured for our operating environment 
                  after NIM has completed its operations. The other 5% is what 
                  our operations staff performs on the server to turn it into 
                  a Web server, ftp server, gateway, or even a database server. 
                  Also note that this script is good for teaching new AIX systems 
                  administrators about essential system commands in AIX. Each 
                  command executed is echoed to the screen with a description 
                  of what it's doing, it's command syntax, and it's 
                  output.
                  Set Up OS Environment Parameters 
                  During this phase of the script, we adjust AIX to meet our 
                  standards for items such as: 
                  
                 
                   Timezone 
                   Remote boot facility 
                   Network Options 
                   Starting certain demons on restart
                 Setup Hardware Parameters 
                  AIX will set the 10/100 NIC cards to "autonegotiate". 
                  We found this caused a network bottleneck in our infrastructure. 
                  We utilize these commands to force the adapter to 100/full duplex 
                  on startup of the server.
                  Configure System Files 
                  We have created a master directory of certain system files 
                  that are copied onto each system when a NIM installation takes 
                  place. Utilizing this repository allows control of what the 
                  initial system files will conform to. This is also the first 
                  time in the script that you see special programming for a particular 
                  platform. Note at the end of this function that we do not want 
                  the "httplite docsearch" utility running on 
                  anything other than a 43P workstation.
                  Setup Security 
                  Here we utilize the NIM server to create another script that 
                  will only run once on bootup and then remove itself, the /etc/firstboot. 
                  By placing commands in the /etc/firstboot script, the 
                  NIM-installed client will execute these commands and then remove 
                  the script after it gets an OS installed. This allows us to 
                  lock a system down to our security standards immediately. We 
                  do this after NIM is finished with the server, because you will 
                  lose connectivity to the NIM server and your install will hang 
                  if you run these commands before NIM has completed.
                  Install Third-Party Applications 
                  Here we have created our own "BFF"-formatted install 
                  packages for 32-bit and 64-bit compiled software. We keep these 
                  in separate directories and use this script to determine whether 
                  we are installing a 32-bit or 64-bit machine, and then to install 
                  the correct versions.
                  Create and Set Dump Devices 
                  Depending on the configuration of an AIX server, the initial 
                  dump space defined may not be big enough. The two main parts 
                  of this function are to calculate whether the dump space is 
                  big enough and to determine whether a mirror drive exists. If 
                  the function determines the dump space is too small, it will 
                  increase it automatically and set up a secondary dump file on 
                  the mirror drive if available.
                  Adjust Paging Space to Complement RAM 
                  Because AIX has changed its swap algorithms, it is no longer 
                  necessary to have swap space equal to size of RAM. (This really 
                  helps on a 64-Gig RAM system.) We use this function to calculate 
                  the size of RAM and then adjust the swap space to the values 
                  noted in the script.
                  Create a Hardware Inventory -- By Machine Type 
                  or by Serial Number 
                  This function calls another script that will create an exhaustive 
                  inventory of a NIM installed server (Listing 2). We use this 
                  to verify a server install or for disaster recovery of a down 
                  server. We could literally rebuild a like server from this listing.
                  Create a Complete Inventory -- By Machine Type 
                  or by Serial Number 
                  The purpose of this function is to call a smaller system inventory 
                  script (Listing 3) that will only give the amount of information 
                  about each NIM-installed server for our inventory-tracking database.
                  Conclusion
                  In summary, we needed to ensure consistent standard OS installations 
                  between four separate data centers. By using AIX 43P systems 
                  and NIM system software, we succeeded in our efforts. NIM allowed 
                  for remote installation and management of our networked systems. 
                  Specifically, the NIM script resource handled tedious and time-consuming 
                  tasks that cause systems administrators to dread post-install 
                  configuration. From setting up hardware parameters to creating 
                  inventory lists, NIM allowed complete customization while leaving 
                  us free to handle other vexing tasks...like resetting passwords.
                  Bill Wood is a co-author of three UNIX books and now works 
                  as a systems team lead in a UNIX shop. His primary function 
                  is the mentoring and coaching of the other UNIX administrators 
                  and engineers. He enjoys working with large IBM AIX SP Frames 
                  within supercomputing data centers with large server farms. 
                  The largest IBM AIX SP Frame he has worked on to date was 612 
                  nodes with 912 Terabytes of disk storage, and he's looking 
                  forward to working with his first Petabyte. This also explains 
                  why he is so adamant about standards -- without them 
                  in large data centers, you will quickly lose control, which 
                  is why he has chosen NIM to ensure these standards.
           |