2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-21 11:12:04 +00:00

Support module installation on RHEL8

This commit is contained in:
Mark Gurevich 2022-08-23 16:31:56 -04:00
parent 9df17c8d00
commit f52c2aa7df
6 changed files with 111 additions and 15 deletions

View File

@ -77,31 +77,33 @@ where **/install/post/custom/<distro>/myotherlist** is another package list file
Note: the trailing **"#"** character at the end of the line. It is important to specify this character for correct pkglist parsing.
Group/Pattern Names
'''''''''''''''''''
Module/Group/Pattern Names
''''''''''''''''''''''''''
It is only supported for stateful deployment.
.. note:: On SLES pattern names are not supported for diskless deployment
In Linux, a groups of rpms can be packaged together into one package. It is called a group on RedHat, CentOS, Fedora and Scientific Linux. To get the list of available groups, run
On Linux, groups of rpms can be packaged together into one package. It can be a module or a group on RedHat, CentOS, Fedora and Scientific Linux. To get the list of available groups, run
* **[RHEL]** ::
yum grouplist
yum group list
yum module list
* **[SLES]** ::
zypper se -t pattern
You can specify in this file the group/pattern names by adding a **'@'** and a space before the group/pattern names. For example: ::
You can specify module/group/pattern names by adding a **'@'** before the module/group/pattern names. For example: ::
@ base
@base
@Security Tools
@ruby:2.6
Remove RPMs After Installing
''''''''''''''''''''''''''''
It is only supported for stateful deployment.
You can specify in this file that certain rpms to be removed after installing the new software. This is done by adding **'-'** before the rpm names you want to remove. For example: ::
You can specify that certain rpms to be removed after installing the new software. This is done by adding **'-'** before the rpm names you want to remove. For example: ::
-ntp
-@ruby:2.6

View File

@ -28,6 +28,7 @@ compare_postscripts
cleanup_postscripts_diskfull
reg_linux_diskless_installation_flat
reg_linux_diskless_installation_flat_squashfs
reg_linux_diskless_installation_flat_modules_and_groups
reg_linux_statelite_installation_flat
cleanup_postscripts_diskless
rmimage_diskless

View File

@ -28,6 +28,7 @@ compare_postscripts
cleanup_postscripts_diskfull
reg_linux_diskless_installation_flat
reg_linux_diskless_installation_flat_squashfs
reg_linux_diskless_installation_flat_modules_and_groups
reg_linux_statelite_installation_flat
cleanup_postscripts_diskless
rmimage_diskless

View File

@ -0,0 +1,39 @@
start:reg_linux_diskfull_installation_flat_modules_and_groups
description:Test provision and updatenode with yum groups and modules. Runs only on RH8
os:Linux
label:flat_cn_diskful,provision
cmd:cp /opt/xcat/share/xcat/install/rh/compute.rhels8.pkglist /opt/xcat/share/xcat/install/rh/compute.pkglist.modules
cmd:echo "@Security Tools" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules
cmd:echo "@ruby:2.6" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules
cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute pkglist=/opt/xcat/share/xcat/install/rh/compute.pkglist.modules
cmd:cat /opt/xcat/share/xcat/install/rh/compute.pkglist.modules
cmd:/opt/xcat/share/xcat/tools/autotest/testcase/commoncmd/retry_install.sh $$CN __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute
check:rc==0
check:output=~Provision node\(s\)\: $$CN
cmd:ping $$CN -c 3
check:rc==0
check:output=~64 bytes from $$CN
cmd:lsdef -l $$CN | grep status
check:rc==0
check:output=~booted
cmd:xdsh $$CN date
check:rc==0
# Verify group and module were installed
cmd:xdsh $$CN yum group list installed
check:output=~Security Tools
cmd:xdsh $$CN yum module list --installed
check:output=~ruby 2.6
# Verify group and module can be removed
cmd:cp /opt/xcat/share/xcat/install/rh/compute.rhels8.pkglist /opt/xcat/share/xcat/install/rh/compute.pkglist.modules
cmd:echo "-@Security Tools" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules
cmd:echo "-@ruby:2.6" >> /opt/xcat/share/xcat/install/rh/compute.pkglist.modules
cmd:updatenode $$CN -P ospkgs
check:rc==0
cmd:xdsh $$CN yum group list installed
check:output!~Security Tools
cmd:xdsh $$CN yum module list --installed
check:output!~ruby 2.6
# Cleanup
cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute pkglist=/opt/xcat/share/xcat/install/rh/compute.rhels8.pkglist
cmd:rm /opt/xcat/share/xcat/install/rh/compute.pkglist.modules
end

View File

@ -0,0 +1,52 @@
start:reg_linux_diskless_installation_flat_modules_and_groups
description:Test provision and updatenode with yum groups and modules. Runs only on RH7 and RH8
os:Linux
label:flat_cn_diskless,provision
cmd:a=`lsdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute -i osvers -c | cut -d":" -f2 | cut -d"=" -f2 | cut -d"." -f1`; cp /opt/xcat/share/xcat/netboot/rh/compute.$a.__GETNODEATTR($$CN,arch)__.pkglist /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
cmd:echo "yum" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
cmd:echo "@Security Tools" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
cmd:if [[ "__GETNODEATTR($$CN,os)__" =~ "rhels8" ]] ; then echo "@ruby:2.6" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules; fi
cmd:chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute pkglist=/opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
check:rc==0
cmd:cat /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
cmd:rmimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute
check:rc==0
cmd:genimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute
check:rc==0
cmd:packimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute
check:rc==0
cmd:/opt/xcat/share/xcat/tools/autotest/testcase/commoncmd/retry_install.sh $$CN __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute
check:rc==0
check:output=~Provision node\(s\)\: $$CN
cmd:ping $$CN -c 3
check:rc==0
check:output=~64 bytes from $$CN
cmd:lsdef -l $$CN | grep status
check:rc==0
check:output=~booted
cmd:xdsh $$CN date
check:rc==0
# Verify group and module (on RH8) were installed. Can not use "yum group"
# since .repo files are not setup at this point
cmd:xdsh $$CN rpm -q xml-common
check:rc==0
check:output=~xml-common
cmd:if [[ "__GETNODEATTR($$CN,os)__" =~ "rhels8" ]] ; then xdsh $$CN yum module list --installed; else echo "ruby 2.6"; fi
check:output=~ruby
check:output=~2.6
# Verify group and module (on RH8) can be removed
cmd:a=`lsdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute -i osvers -c | cut -d":" -f2 | cut -d"=" -f2 | cut -d"." -f1`; cp /opt/xcat/share/xcat/netboot/rh/compute.$a.__GETNODEATTR($$CN,arch)__.pkglist /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
cmd:echo "-@Security Tools" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
cmd:if [[ "__GETNODEATTR($$CN,os)__" =~ "rhels8" ]] ; then echo "-@ruby:2.6" >> /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules; fi
cmd:cat /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
cmd:updatenode $$CN -P ospkgs
check:rc==0
cmd:xdsh $$CN yum group list installed
check:output!~Security Tools
cmd:if [[ "__GETNODEATTR($$CN,os)__" =~ "rhels8" ]] ; then xdsh $$CN yum module list --installed; else echo ""; fi
check:output!~ruby
# Cleanup
cmd:a=`lsdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute -i osvers -c | cut -d":" -f2 | cut -d"=" -f2 | cut -d"." -f1`; chdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute pkglist=/opt/xcat/share/xcat/netboot/rh/compute.$a.__GETNODEATTR($$CN,arch)__.pkglist
cmd:rm /opt/xcat/share/xcat/netboot/rh/compute.pkglist.modules
end

View File

@ -436,9 +436,9 @@ do
#categorize the groups according to the action(install/remove)
if [ $remove -eq 0 ]; then
groups="$groups $tmp"
groups="$groups @$tmp"
else
groups_d="$groups_d $tmp"
groups_d="$groups_d @$tmp"
fi
else
if ( pmatch "$x" "cuda*" ); then
@ -945,8 +945,8 @@ else
#install new groups if any
if [ -n "$groups" ]; then
#cmd="echo $groups| $ENVLIST xargs yum -y groupinstall"
cmd="$ENVLIST yum -y groupinstall $groups"
#cmd="$ENVLIST yum -y groupinstall $groups"
cmd="$ENVLIST yum -y install $groups"
result=`eval $cmd 2>&1`
R=$?
if [ $R -ne 0 ]; then
@ -1005,7 +1005,8 @@ else
#remove some groups if specified
if [ -n "$groups_d" ]; then
cmd="$ENVLIST yum -y groupremove $groups_d"
#cmd="$ENVLIST yum -y groupremove $groups_d"
cmd="$ENVLIST yum -y remove $groups_d"
result=`eval $cmd 2>&1`
R=$?
if [ $R -ne 0 ]; then