d6c051b34b
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@4566 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
536 lines
15 KiB
Plaintext
536 lines
15 KiB
Plaintext
=head1 NAME
|
|
|
|
B<updatenode> - Update nodes in an xCAT cluster environment.
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
B<updatenode> I<noderange> [B<-V>|B<--verbose>] [B<-F>|B<--sync>] [B<-S>|B<--sw>] [B<-P>|B<--scripts> [I<script1,script2...>]] [B<-c>|B<--cmdlineonly>] [I<attr=val> [I<attr=val...>]]
|
|
|
|
B<updatenode> I<noderange> [B<-V>|B<--verbose>] [I<script1,script2...>]
|
|
|
|
B<updatenode> [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/<inst_type>/<distro>/<profile>.<os>.<arch>.synclist
|
|
|
|
where:
|
|
|
|
<inst_type>: "install", "netboot"
|
|
<distro>: "rh", "centos", "fedora", "sles"
|
|
<profile>,<os> and <arch> 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 <noderange> -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<For Linux systems:>
|
|
|
|
=over 3
|
|
|
|
=item 1
|
|
|
|
Copy the extra rpms you are going to add on to
|
|
|
|
/install/post/otherpkgs/<os>/<arch>/
|
|
|
|
where <os> and <arch> are defined in the <nodetype> table.
|
|
|
|
=item 2
|
|
|
|
Add rpm names (without version number) into
|
|
|
|
/install/custom/<inst_type>/<ostype>/<profile>.<os>.<arch>.otherpkgs.pkglist
|
|
|
|
In the file path, the <inst_type> should be "install" if the
|
|
node was installed in diskfull state, otherwise it should be
|
|
"netboot" if it was installed in diskless state.
|
|
<ostype> is the operating system name without the version
|
|
number.The following <ostype> are recognized by xCAT:
|
|
|
|
=over 1
|
|
|
|
=item centos
|
|
|
|
=item fedora
|
|
|
|
=item rh
|
|
|
|
=item sles
|
|
|
|
=item windows
|
|
|
|
=back
|
|
|
|
In the file name, the <profile>, <os>, <arch> are defined in
|
|
the <nodetype> table. And the <os> and <arch> fields can be
|
|
ignored if the pkglist file is available just depend on the
|
|
<profile> attribute.
|
|
|
|
=item 3
|
|
|
|
Type:
|
|
|
|
updatenode <noderange> -S
|
|
|
|
=back
|
|
|
|
B<For AIX systems:>
|
|
|
|
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<nim -o update -a packages=all -a source=/images mylpp>
|
|
|
|
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<installp_flags="-apXY" rpm_flags="-i --nodeps">.
|
|
|
|
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 <noderange> -P
|
|
|
|
To run the "syslog" script for the nodes, type:
|
|
|
|
updatenode <noderange> -P syslog
|
|
|
|
To run a list of scripts, type:
|
|
|
|
updatenode <noderange> -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<noderange>
|
|
|
|
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<script1,script2...>
|
|
|
|
A comma-separated list of script names.
|
|
The scripts must be executable and copied
|
|
to the /install/postscripts directory.
|
|
|
|
=item [I<attr=val> [I<attr=val...>]]
|
|
|
|
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<updatenode compute>
|
|
|
|
The command will: run any scripts listed in the nodes "postscripts"
|
|
attribute, install or update any software indicated in the
|
|
/install/custom/install/<ostype>/profile.otherpkgs.pkglist (refer to the
|
|
B<To install or update software part>), 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<updatenode clstrn01 -F -P>
|
|
|
|
=item 3
|
|
|
|
To run the postscripts which indicated in the postscripts attribute on
|
|
the node "clstrn01":
|
|
|
|
B<updatenode clstrn01 -P>
|
|
|
|
=item 4
|
|
|
|
To run the postscripts script1 and script2 on the node "clstrn01":
|
|
|
|
B<cp script1,script2 /install/postscripts>
|
|
|
|
B<updatenode clstrn01 -P script1,script2>
|
|
|
|
Since flag '-P' can be omitted when only postscripts parameters are specified,
|
|
the following command is equivalent:
|
|
|
|
B<updatenode clstrn01 script1,script2>
|
|
|
|
=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/<inst_type>/<distro>/<profile>.<os>.<arch>.synclist
|
|
Then:
|
|
|
|
B<updatenode clstrn01 -F>
|
|
|
|
=item 6
|
|
|
|
To perform the software update on the Linux node "clstrn01": Copy the extra
|
|
rpm into the /install/post/otherpkgs/<os>/<arch>/* and add the rpm names into
|
|
the /install/custom/install/<ostype>/profile.otherpkgs.pkglist . Then:
|
|
|
|
B<updatenode clstrn01 -S>
|
|
|
|
=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<updatenode xcatn11 -S>
|
|
|
|
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<updatenode xcatn11 -V -S otherpkgs="bos.cpr" installp_flags="-agQXY">
|
|
|
|
=item 9
|
|
|
|
To uninstall the "bos.cpr" fileset that was installed in the previous example.
|
|
|
|
B<updatenode xcatn11 -V -S otherpkgs="bos.cpr" installp_flags="-u">
|
|
|
|
=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<updatenode xcatn11,xcatn12 -V -S otherpkgs="gpfs.base,R:rsync-2.6.2-1.aix5.1.ppc.rpm" installp_flags="-agQXY" rpm_flags="-i --nodeps">
|
|
|
|
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<updatenode node01 -V -S installp_bundle="sslbnd,sshbnd" installp_flags="-agQXY">
|
|
|
|
=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<updatenode node42 -V -S otherpkgs="rsct.base" installp_flags="-apXY">
|
|
|
|
=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<updatenode node09 -V -c -S rpm_flags="-qa">
|
|
|
|
=back
|
|
|
|
=head1 FILES
|
|
|
|
/opt/xcat/bin/updatenode
|