After initial node deployment, you may need to make changes/updates to your nodes. The
updatenode command is for this purpose. It allows you to add or modify the followings on your nodes:
- Add additional software
- Re-run postscripts or run additional postscripts
- Synchronize new/updated configuration files
- Update ssh keys and xCAT certificates
Each of these will be explained in the document. The basic way to use
updatenode is to set the definition of nodes on the management node the way you want it and then run
updatenode to push those changes out to the actual nodes. Using options to the command, you can control which of the above categories
updatenode pushes out to the nodes.
Most of what is described in this document applies to stateful and stateless nodes.
In addition to the information in this document, check out the
updatenode man page.
Add Additional Software¶
The packages that will be installed on the node are stored in the packages list files. There are two kinds of package list files:
- The package list file contains the names of the packages that come from the os distro. They are stored in .pkglist file.
- The other package list file contains the names of the packages that do NOT come from the os distro. They are stored in .otherpkgs.pkglist file.
Installing Additional OS Distro Packages¶
For packages from the OS distro, add the new package names (without the version number) in the .pkglist file. If you have newer updates to some of your operating system packages that you would like to apply to your OS image, you can place them in another directory, and add that directory to your osimage pkgdir attribute. How to add additional OS distro packages, go to Install Additional OS Packages for RHEL and SLES
Note:If the objective node is not installed by xCAT, make sure the correct osimage pkgdir attribute so that you could get the correct repository data.
Install Additional non-OS Packages¶
If you have additional packages (packages not in the distro) that you also want installed, make a directory to hold them, create a list of the packages you want installed, and add that information to the osimage definition. How to add Additional Other Packages, go to Install Additional Other Packages for RHEL and SLES
updatenode command to push the new software to the nodes:
updatenode <noderange> -S
The -S flag updates the nodes with all the new or updated packages specified in both .pkglist and .otherpkgs.pkglist.
If you have a configuration script that is necessary to configure the new software, then instead run:
cp myconfigscript /install/postscripts/ chdef -p -t compute postbootscripts=myconfigscript updatenode <noderange> ospkgs,otherpkgs,myconfigscript
The next time you re-install these nodes, the additional software will be automatically installed.
If you update stateless nodes, you must also do this next step, otherwise the next time you reboot the stateless nodes, the new software won’t be on the nodes. Run genimage and packimage to install the extra rpms into the image:
genimage <osimage> packimage <osimage>
Update the delta changes in Sysclone environment¶
Updatenode can also be used in Sysclone environment to push delta changes to target node. After capturing the delta changes from the golden client to management node, just run below command to push delta changes to target nodes. See Sysclone environment related section: Update Nodes Later On for more information.
updatenode <targetnoderange> -S
Rerun Postscripts or Run Additional Postcripts¶
You can use the
updatenode command to perform the following functions after the nodes are up and running:
- Rerun postscripts defined in the postscripts table.
- Run any additional postscript one time.
Go to Using Postscript to see how to configure postscript.
Go to Using Prescript to see how to configure prepostscript.
To rerun all the postscripts for the nodes. (In general, xCAT postscripts are structured such that it is not harmful to run them multiple times.)
updatenode <noderange> -P
To rerun just the syslog postscript for the nodes:
updatenode <noderange> -P syslog
To run a list of your own postscripts, make sure the scripts are copied to /install/postscripts directory, then:
updatenode <noderange> -P "script1,script2"
If you need to, you can also pass arguments to your scripts:
updatenode <noderange> -P "script1 p1 p2,script2"
mypostscript template for
You can customize what attributes you want made available to the postscript, using the shipped mypostscript.tmpl file Using the mypostscript template.
Synchronize new/updated configuration files¶
Syncfiles to the nodes¶
After compute node is installed, you would like to sync files to the nodes:
updatenode <noderange> -F
updatenode command the syncfiles postscript cannot be used to sync files to the nodes.Therefore, if you run
updatenode <noderange> -P syncfiles, nothing will be done. A message will be logged that you must use
updatenode <noderange> -F to sync files.
Update the ssh Keys and Credentials on the Nodes¶
If after node deployment, the ssh keys or xCAT ssl credentials become corrupted, xCAT provides a way to quickly fix the keys and credentials on your service and compute nodes:
updatenode <noderange> -K
Note: this option can’t be used with any of the other updatenode options.
Appendix : Debugging Tips¶
Internally updatenode command uses the xdsh in the following ways:
Linux: xdsh <noderange> -e /install/postscripts/xcatdsklspost -m <server> <scripts>>
where <scripts> is a comma separated postscript like ospkgs,otherpkgs etc.
- wget is used in xcatdsklspost/xcataixpost to get all the postscripts from the <server> to the node. You can check /tmp/wget.log file on the node to see if wget was successful or not. You need to make sure the /xcatpost directory has enough space to hold the postscripts.
- A file called /xcatpost/mypostscript (Linux) is created on the node which contains the environmental variables and scripts to be run. Make sure this file exists and it contains correct info. You can also run this file on the node manually to debug.
- For ospkgs/otherpkgs, if /install is not mounted on the <server>, it will download all the rpms from the <server> to the node using wget. Make sure /tmp and /xcatpost have enough space to hold the rpms and check /tmp/wget.log for errors.
- For ospkgs/otherpkgs, If zypper or yum is installed on the node, it will be used the command to install the rpms. Make sure to run createrepo on the source directory on the <server> every time a rpm is added or removed. Otherwise, the rpm command will be used, in this case, make sure all the necessary depended rpms are copied in the same source directory.
- You can append -x on the first line of ospkgs/otherpkgs to get more debug info.