=head1 NAME B - Update nodes in an xCAT cluster environment. =head1 SYNOPSIS B I [B<-V>|B<--verbose>] [B<-F>|B<--sync>] [B<-S>|B<--sw>] [B<-P>|B<--scripts> [I]] [B<-c>|B<--cmdlineonly>] [I [I]] B I [B<-V>|B<--verbose>] [I] B [B<-h>|B<--help>|B<-v>|B<--version>] =head1 DESCRIPTION The updatenode command is run on the xCAT management node and can be used to perform the following node updates: =over 3 =item 1 Distribute and synchronize files. =item 2 Install or update software on diskfull nodes. =item 3 Run postscripts. =back The default behavior of updatenode will be to attempt to perform all three types of updates. If you wish to limit updatenode to one or two specific actions you can use combinations of the "-S", "-P", and "-F" flags. For example, If you just want to synchronize configuration file you could specify the "-F" flag. If you want to synchronize files and update software you would specify the "-F" and "-S" flags. See the descriptions of these flags and examples below. Note: In a large cluster environment the updating of nodes in an ad hoc manner can quickly get out of hand, leaving the system administrator with a very confusing environment to deal with. The updatenode command is designed to encourage users to handle cluster updates in a manner that is recorded and easily repeatable. =head2 To distribute and synchronize files The basic process for distributing and synchronizing nodes is: =over 3 =item * Create a synclist file. =item * Indicate the location of the synclist file. =item * Run the updatenode command to update the nodes. =back Files may be distributed and synchronized for both diskless and diskfull nodes. However, since some filesystems are mounted read-only on AIX diskless nodes it my not be possible to update all files on AIX systems. For example, any files under /usr on AIX diskless nodes cannot be updated. More information on using the synchronization file function is in "xCAT2SyncFilesHowTo.pdf". =head3 Create the synclist file The synclist file contains the configuration entries that specify where the files should be synced to. In the synclist file, each line is an entry which describes the location of the source files and the destination location for the files on the target node. The basic entry format looks like following: path_of_src_file1 -> path_of_dst_file1 path_of_src_file1 path_of_src_file2 ... -> path_of_dst_directory The path_of_src_file* should be the full path of the source file on the Management Node. The path_of_dst_file* should be the full path of the destination file on target node. The path_of_dst_directory should be the full path of the destination directory. Since the synclist file is for common purpose, the target node need not be configured in it, it will be the noderange input to updatenode. The following formats are supported: =over 3 =item 1 sync file /etc/file1 to the file /etc/file1 on the node with the same file name. Note with one file, full path to file must be provide. /etc/file1 -> /etc/file1 =item 2 sync file /etc/file2 to the file /etc/file3 on the node (with different file name) /etc/file2 -> /etc/file3 =item 3 sync file /etc/file2 to the file /etc/tmp/file3 on the node with different file name, different directory) If the directory does not exist, it will be created. /etc/file2 -> /etc/tmp/file3 =item 4 sync the multiple files /etc/file1, /etc/file2, /etc/file3, ... to the directory /tmp/etc (/tmp/etc must be a directory when multiple files are sync'd at one time). If the directory does not exist, xdcp will create it. /etc/file1 /etc/file2 /etc/file3 -> /tmp/etc =back =head3 Indicate the location of the synclist file For Linux nodes, the path of the synclist should be following format: /install/custom///...synclist where: : "install", "netboot" : "rh", "centos", "fedora", "sles" , and are what you set for the node For AIX nodes, add a full path of the synclist file to the "synclists" attribute base on the xCAT osimage name used by the node in the osimage table. chdef -t osimage -o myosimage synclists=/mydir/syncfile1 =head3 Run updatenode to synchronize the files updatenode -F =head2 To install or update software The basic process for updating software on a node is: =over 3 =item * Copy the software to a directory. =item * Create a record of what software to install. =item * Run the updatenode command to update the nodes. =back =over 3 B =over 3 =item 1 Copy the extra rpms you are going to add on to /install/post/otherpkgs/// where and are defined in the table. =item 2 Add rpm names (without version number) into /install/custom///...otherpkgs.pkglist In the file path, the should be "install" if the node was installed in diskfull state, otherwise it should be "netboot" if it was installed in diskless state. is the operating system name without the version number.The following are recognized by xCAT: =over 1 =item centos =item fedora =item rh =item sles =item windows =back In the file name, the , , are defined in the table. And the and fields can be ignored if the pkglist file is available just depend on the attribute. =item 3 Type: updatenode -S =back B Note: The updatenode command is used to update AIX diskfull nodes only. For updating diskless AIX nodes refer to the xCAT for AIX update documentation and use the xCAT mknimimage command. The software packages that you wish to install on the nodes must be copied to the appropriate directory locations in the NIM lpp_source resource associated with the node. A simple way to do this is to use the "nim -o update" command. For example, assuming the software is in /images and the lpp_source resource used for this node is named "mylpp" then you could run: B Note: To find the correct lpp_source for the node get the name of the xCAT osimage definition from the "provmethod" attribute of the xCAT node definition and then get the name of the lpp_source resource from the osimage definition. You can use the xCAT lsdef command to display the node and osimage definitions. The software you wish to install or update must be specified to the updatenode command. There are two methods that may be used to specify the software to update. The first is to set the "installp_bundle" and/or the "otherpkgs" attributes of the xCAT osimage definition you are using for the node. The second is to specify one or both of these attribute values on the updatenode command line. Using the first method provides a record of what was updated which is stored in the xCAT database. This can be useful when managing a large cluster environment. The second method is more "ad hoc" but also can be more flexible. The updatenode command will either use the information in the database or the information on the command line - BUT NOT BOTH. If you specify infornmation on the command line it will use that, otherwise it will use what is in the database. The "installp_bundle" attribute value may be set to a comma separated list of one or more NIM installp_bundle resource names. These NIM resources must be created using standard NIM interfaces. See the AIX documentation for more information on creating NIM resources. Also, there are examples for creating installp_bundle resources in several of the xCAT for AIX documents. The "otherpkgs" attribute value may be set to a comma separated list of installp filesets or RPM packages. When specifying RPM names you must use a prefix of "R:". (ex. "R:foo.rpm"). Along with the names of the software to install you may also provide the specific installp and rpm flags you want used when those commands are run on the nodes. Use the "installp_flags" and "rpm_flags" attributes to provide this information. Make sure you specify the exact string you want used in quotes. For example: I. The default value for installp_flags is "-agQX" and the default value for rpm_flags is "-Uvh". When doing software maintenance on AIX nodes you may also find the "-c" flag useful. When you specify this flag on the updatenode command line the command will know to use the command line information ONLY, even if there is no software specified (i.e. It won't go look in the database.). This option would be needed when using installp or rpm options that do not require a list of software. If you wish to see the output from the installp or rpm commands that are run then you must specifiy "-V" on the updatenode command line. See the examples below for more details. When working in a hierarchical xCAT cluster the updatenode command will automatically take care of distributing the software to the appropriate service nodes. =back =head2 To run postscripts The scripts must be copied to the /install/postscripts directory on the xCAT management node. (Make sure they are executable.) To run scripts on a node you must either specify them on the command line or you must add them to the "postscripts" attribute for the node. To set the postscripts attribute of the node (or group) definition you can use the xCAT chdef command. Set the value to be a comma separated list of the scripts that you want to be executed on the nodes. The order of the scripts in the list determines the order in which they will be run. You could also set the postscripts value by directly editing the xCAT "postscripts" database table using the xCAT tabedit command. Scripts may be run on both diskless and diskfull nodes. To run all the customization scripts that have been designated for the nodes, (in the "postscripts" attribute), type: updatenode -P To run the "syslog" script for the nodes, type: updatenode -P syslog To run a list of scripts, type: updatenode -P script1,script2 The flag '-P' can be omitted when only postscripts parameters are specified. Note: script1,script2 may or may not be designated as scripts to automatically run on the node. However, if you want script1 and script2 to get invoked next time the nodes are deployed then make sure to add them to the "postscripts" attribute in the database for the nodes. =head1 PARAMETERS =over 10 =item I A set of comma delimited xCAT node names and/or group names. See the xCAT "noderange" man page for details on additional supported formats. =item I A comma-separated list of script names. The scripts must be executable and copied to the /install/postscripts directory. =item [I [I]] Specifies one or more "attribute equals value" pairs, separated by spaces. Attr=val pairs must be specified last on the command line. The currently supported attributes are: "installp_bundle", "otherpkgs", "installp_flags", and "rpm_flags". These attribute are only valid for AIX software maintenance support. =back =head1 OPTIONS =over 10 =item -c|cmdlineonly Specifies that the updatenode command should only use software maintenance information provided on the command line. This flag is only valid when using AIX software maintenance support. =item -F|--sync Specifies the file synchronization should be performed on the nodes. rsync and ssh must be installed and configured on the nodes. =item -h|--help Display usage message. =item -P|--scripts Specifies that postscripts should be run on the nodes. =item -S|--sw Specifies that node software should be updated. =item -v|--version Command Version. =item -V|--verbose Verbose mode. =back =head1 RETURN VALUE 0 The command completed successfully. 1 An error has occurred. =head1 EXAMPLES =over 3 =item 1 To perform all updatenode features for the Linux nodes in the group "compute": B The command will: run any scripts listed in the nodes "postscripts" attribute, install or update any software indicated in the /install/custom/install//profile.otherpkgs.pkglist (refer to the B), synchronize any files indicated by the synclist files specified in the osimage "synclists" attribute. =item 2 To perform a software update and file synchronization only on the node "clstrn01": B =item 3 To run the postscripts which indicated in the postscripts attribute on the node "clstrn01": B =item 4 To run the postscripts script1 and script2 on the node "clstrn01": B B Since flag '-P' can be omitted when only postscripts parameters are specified, the following command is equivalent: B =item 5 To synchronize the files on the node "clstrn01": Prepare the synclist file. For AIX, set the full path of synclist in the osimage table synclists attribute. For Linux, put the synclist file into the location: /install/custom///...synclist Then: B =item 6 To perform the software update on the Linux node "clstrn01": Copy the extra rpm into the /install/post/otherpkgs///* and add the rpm names into the /install/custom/install//profile.otherpkgs.pkglist . Then: B =item 7 To update the AIX node named "xcatn11" using the "installp_bundle" and/or "otherpkgs" attribute values stored in the xCAT database. Use the default installp ("-agQX") and rpm ("-Uvh") flags. B Note: The xCAT "xcatn11" node definition points to an xCAT osimage definition which contains the "installp_bundle" and "otherpkgs" attributes. =item 8 To update the AIX node "xcatn11" by installing the "bos.cpr" fileset using the "-agQXY" installp flags. Also display the output of the installp command. B =item 9 To uninstall the "bos.cpr" fileset that was installed in the previous example. B =item 10 To update the AIX nodes "xcatn11" and "xcatn12" with the "gpfs.base" fileset and the "rsync" rpm using the installp flags "-agQXY" and the rpm flags "-i --nodeps". B Note: Using the "-V" flag with multiple nodes may result in a large amount of output. =item 11 Update the AIX node "node01" using the software specified in the NIM "sslbnd" and "sshbnd" installp_bundle resources and the "-agQXY" installp flags. B =item 12 To get a preview of what would happen if you tried to install the "rsct.base" fileset on AIX node "node42". (You must use the "-V" option to get the full output from the installp command.) B =item 13 To check what rpm packages are installed on the AIX node "node09". (You must use the "-c" flag so updatenode does not get a list of packages from the database.) B =back =head1 FILES /opt/xcat/bin/updatenode