1. Home
  2. How do I build a RHEL 8 software image with cm-image on a SLES 15 or Ubuntu 20.04/22.04 headnode?

How do I build a RHEL 8 software image with cm-image on a SLES 15 or Ubuntu 20.04/22.04 headnode?

About

This article discusses building a RHEL 8.6 software image, specifically on multi-distribution clusters.
These steps were developed for Bright 9.2 and later releases on a SLES 15 SP4 / Ubuntu 20.04/22.04 headnode. 

For additional information on multi-distribution support in Bright Cluster Manager, please review the appropriate section in the administration guide

Prerequisites 

We recommend confirming the cluster is running the latest cluster tools and cm-image packages, before attempting to build the software image.

For SLES 15 based headnodes: 

# zypper update cluster-tools cm-image

For Ubuntu 20.04-based headnodes:

% apt update
% apt install cluster-tools cm-image

The RHEL8u6 tarball may be obtained from the ISO download area of the customer portal.
https://customer.brightcomputing.com/Download.php

After downloading the Bright 9.2 ISO for RHEL8u6, mount the ISO file on the headnode.
Copy the RHEL8u6.tar.gz file in the data directory of the Bright ISO to the headnode (for example /root).

Building the software image

Extract the tarball, apply a RHEL subscription, and enable the required repositories.

On the headnode:

cd /root
mkdir rhel8u6-sub
tar -xvzf RHEL8u6.tar.gz -C rhel8u6-sub/
cm-chroot-sw-img rhel8u6-sub/
subscription-manager register
subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms
subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms
subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms
subscription-manager repos --enable=rhel-8-for-x86_64-supplementary-rpms
dnf makecache
exit
tar -cvzf /root/RHEL8u6-sub.tar.gz rhel8u6-sub/

Create the image 

# module load cm-image
# cm-image --verbose create all -a x86_64 -d rhel8u6 --source /root/rhel8u6-sub.tar.gz

You may monitor the status of the software image build by running a tail of the cm-image log in another shell on the headnode.

# tail -f /var/log/cm-image.log

Once the build is complete, set a compute node to use the new category generated by cm-image.

On the headnode:

# cmsh
% device use node001
% set category default-rhel8-x86_64
% commit
% reboot

Example of the cm-image output.

:~ # module load cm-image
:~ # cm-image --verbose create all -a x86_64 -d rhel8u6 --source rhel8u6-sub.tar.gz
ArchOS is being added for the first time
Please make sure no process is using /cm/shared because it will be moved to a new location.
Do you want to continue?(y/n): y
Do you want to continue?(y/n):
Creating software image default-image-rhel8u6-x86_64...
running command: 'cm-create-image -a rhel8u6-sub.tar.gz --arch x86_64 --os rhel8 -f -i /cm/images/default-image-rhel8u6-x86_64 -n default-image-rhel8u6-x86_64 --no-progress -L /var/log/cm-image.log --verbose -g public'
Running validate base tar........................ [ OK ]
Running sanity check............................. [ OK ]
Running unpack base tar.......................... [ OK ]
Finalize base distribution....................... [ OK ]
Copying cm repo files............................ [ OK ]
Validating repo configuration.................... [ OK ]
Installing distribution packages................. [ OK ]
Finalizing image services........................ [ OK ]
Installing CM packages........................... [ OK ]
Finalizing cluster services...................... [ OK ]
Copying cluster certificate to image............. [ OK ]
Adding/Updating software image................... [ OK ]

Creating software image default-image-rhel8u6-x86_64..............[ OK ]

Creating node installer image node-installer-rhel8-x86_64...
running command: 'cm-create-image -a rhel8u6-sub.tar.gz --image-type node-installer --arch x86_64 --os rhel8 -f -i /cm/node-installer-rhel8-x86_64 -n node-installer-rhel8-x86_64 --no-progress -L /var/log/cm-image.log --verbose -g public'

Running validate base tar........................ [ OK ]
Running sanity check............................. [ OK ]
Running unpack base tar.......................... [ OK ]
Finalize base distribution....................... [ OK ]
Copying cm repo files............................ [ OK ]
Validating repo configuration.................... [ OK ]
Installing distribution packages................. [ OK ]
Installing CM packages........................... [ OK ]
Finalizing node-installer........................ [ OK ]
Updating fspart for node-installer

Creating node installer image node-installer-rhel8-x86_64.........[ OK ]

Creating cm-shared image at /cm/shared-rhel8-x86_64...
running command: 'mount --bind /cm/shared-rhel8-x86_64 /cm/images/default-image-rhel8u6-x86_64/cm/shared'
running command: 'cm-create-image --image-type cmshared -f -n default-image-rhel8u6-x86_64 -d /cm/images/default-image-rhel8u6-x86_64 -u -s --no-progress -L /var/log/cm-image.log --verbose -g public'

Running validate image dir....................... [ OK ]
Running sanity check............................. [ OK ]
Copying cm repo files............................ [ OK ]
Validating repo configuration.................... [ OK ]
Installing CM packages........................... [ OK 
Unmounting /cm/images/default-image-rhel8u6-x86_64/cm/shared
running command: 'umount /cm/images/default-image-rhel8u6-x86_64/cm/shared'
Adding cmshared entry /cm/shared-rhel8-x86_64

Creating cm-shared image at /cm/shared-rhel8-x86_64...............[ OK ]

Updating cmd entities
Changing fsmount $localnfsserver:/cm/shared to $localnfsserver:$cmshared
Changing fspart /cm/shared to /cm/shared-sles15-x86_64
Changing fspart /cm/node-installer to /cm/node-installer-sles15-x86_64

Creating ramdisk..................................................[ OK ]

Finished first_run_setup:
Added new category: default-rhel8-x86_64
Use this category for adding nodes

Creating ramdisk..................................................[ OK ]
Updated on February 13, 2024

Leave a Comment