Chapter 4. Installing RHEL AI on IBM cloud


For installing and deploying Red Hat Enterprise Linux AI on IBM Cloud, you must first convert the RHEL AI image into an IBM Cloud image. You can then launch an instance using the IBM Cloud image and deploy RHEL AI on an IBM Cloud machine.

To create a bootable image in IBM Cloud you must configure your IBM Cloud accounts, set up a Cloud Object Storage (COS) bucket, and create a IBM Cloud image using the RHEL AI image.

Prerequisites

Procedure

  1. Log in to IBM Cloud with the following command:

    $ ibmcloud login
    Copy to Clipboard Toggle word wrap

    When prompted, select your desired account to log in to.

    Example output of the login

    $ ibmcloud login
    API endpoint: https://cloud.ibm.com
    Region: us-east
    
    Get a one-time code from https://identity-1.eu-central.iam.cloud.ibm.com/identity/passcode to proceed.
    Open the URL in the default browser? [Y/n] >
    One-time code >
    Authenticating...
    OK
    
    Select an account:
    1. <account-name>
    2. <account-name-2>
    
    API endpoint:     https://cloud.ibm.com
    Region:           us-east
    User:             <user-name>
    Account:          <selected-account>
    Resource group:   No resource group targeted, use 'ibmcloud target -g RESOURCE_GROUP'
    Copy to Clipboard Toggle word wrap

  2. You need to set up various IBM Cloud configurations and create your COS bucket before generating a QCOW2 image.

    1. You can install the necessary IBM Cloud plugins by running the following command:

      $ ibmcloud plugin install cloud-object-storage infrastructure-service
      Copy to Clipboard Toggle word wrap
    2. Set your preferred resource group, the following example command sets the resource group named Default.

      $ ibmcloud target -g Default
      Copy to Clipboard Toggle word wrap
    3. Set your preferred region, the following example command sets the us-east region.

      $ ibmcloud target -r us-east
      Copy to Clipboard Toggle word wrap
    4. You need to select a deployment plan for your service instance. Ensure you check the properties and pricing on the IBM cloud website.

      1. You can list the available deployment plans by running the following command:

        $ ibmcloud catalog service cloud-object-storage --output json | jq -r '.[].children[] | select(.children != null) | .children[].name'
        Copy to Clipboard Toggle word wrap
      2. The following example command uses the premium-global-deployment plan and puts it in the environment variable cos_deploy_plan:

        $ cos_deploy_plan=premium-global-deployment
        Copy to Clipboard Toggle word wrap
      3. Create a Cloud Object Storage (COS) service instance and save the name in an environment variable named cos_si_name and create the cloud-object-storage and by running the following commands:

        $ cos_si_name=THE_NAME_OF_YOUR_SERVICE_INSTANCE
        Copy to Clipboard Toggle word wrap
        $ ibmcloud resource service-instance-create ${cos_si_name} cloud-object-storage standard global -d ${cos_deploy_plan}
        Copy to Clipboard Toggle word wrap
    5. Get the Cloud Resource Name (CRN) for your Cloud Object Storage (COS) bucket in a variable named cos_crn by running the following commands:

      $ cos_crn=$(ibmcloud resource service-instance ${cos_si_name} --output json| jq -r '.[] | select(.crn | contains("cloud-object-storage")) | .crn')
      Copy to Clipboard Toggle word wrap
      $ ibmcloud cos config crn --crn ${cos_crn} --force
      Copy to Clipboard Toggle word wrap
    6. Create your Cloud Object Storage (COS) bucket named as the environment variable bucket_name with the following commands:

      $ bucket_name=NAME_OF_MY_BUCKET
      Copy to Clipboard Toggle word wrap
      $ ibmcloud cos bucket-create --bucket ${bucket_name}
      Copy to Clipboard Toggle word wrap
    7. Allow the infrastructure service to read the buckets that are in the service instance ${cos_si_guid} variable by running the following commands:

      $ cos_si_guid=$(ibmcloud resource service-instance ${cos_si_name} --output json| jq -r '.[] | select(.crn | contains("cloud-object-storage")) | .guid')
      Copy to Clipboard Toggle word wrap
      $ ibmcloud iam authorization-policy-create is cloud-object-storage Reader --source-resource-type image --target-service-instance-id ${cos_si_guid}
      Copy to Clipboard Toggle word wrap
  3. Now that your IBM Cloud Object Storage (CoS) service instance bucket is set up, you need to download the QCOW2 image from Red Hat Enterprise Linux AI download page
  4. Copy the QCOW2 image link and add it to the following command:

    $ curl -Lo disk.qcow2 "PASTE_HERE_THE_LINK_OF_THE_QCOW2_FILE"
    Copy to Clipboard Toggle word wrap
  5. Set the name you want to use as the RHEL AI IBM Cloud image

    $ image_name=rhel-ai-20240703v0
    Copy to Clipboard Toggle word wrap
  6. Upload the QCOW2 image to the Cloud Object Storage (COS) bucket with your selected region by running following command:

    $ ibmcloud cos upload --bucket ${bucket_name} --key ${image_name}.qcow2 --file disk.qcow2 --region <region>
    Copy to Clipboard Toggle word wrap
  7. Convert the QCOW2 you just uploaded to an IBM Cloud image with the following commands:

    $ ibmcloud is image-create ${image_name} --file cos://<region>/${bucket_name}/${image_name}.qcow2 --os-name red-ai-9-amd64-nvidia-byol
    Copy to Clipboard Toggle word wrap
  8. Once the job launches, set the IBM Cloud image configurations into a variable called image_id by running the following command:

    $ image_id=$(ibmcloud is images --visibility private --output json | jq -r '.[] | select(.name=="'$image_name'") | .id')
    Copy to Clipboard Toggle word wrap
  9. You can view the progress of the job with the following command:

    $ while ibmcloud is image --output json ${image_id} | jq -r .status | grep -xq pending; do sleep 1; done
    Copy to Clipboard Toggle word wrap
  10. You can view the information of the newly created image with the following command:

    $ ibmcloud is image ${image_id}
    Copy to Clipboard Toggle word wrap

You can launch an instance with your new RHEL AI IBM Cloud image from the IBM Cloud web console or the CLI. You can use whichever method of deployment you want to launch your instance. The following procedure displays how you can use the CLI to launch an IBM Cloud instance with the custom IBM Cloud image

If you choose to use the CLI as a deployment option, there are several configurations you have to create, as shown in "Prerequisites".

Prerequisites

  • You created your RHEL AI IBM Cloud image. For more information, see "Converting the RHEL AI image to an IBM Cloud image".
  • You installed the IBM CLI on your specific machine, see Installing the stand-alone IBM Cloud CLI.
  • You configured your Virtual private cloud (VPC).
  • You created a subnet for your instance.

Procedure

  1. Log in to your IBM Cloud account and select the Account, Region and Resource Group by running the following command:

    $ ibmcloud login -c <ACCOUNT_ID> -r <REGION> -g <RESOURCE_GROUP>
    Copy to Clipboard Toggle word wrap
  2. Before launching your IBM Cloud instance on the CLI, you need to create several configuration variables for your instance.

    1. Install the infrastructure-service plugin for IBM Cloud by running the following command

      $ ibmcloud plugin install infrastructure-service
      Copy to Clipboard Toggle word wrap
    2. You need to create an SSH public key for your IBM Cloud account. IBM Cloud supports RSA and ed25519 keys. The following example command uses the ed25519 key types and names it ibmcloud.

      $ ssh-keygen -f ibmcloud -t ed25519
      Copy to Clipboard Toggle word wrap
    3. You can now upload the public key to your IBM Cloud account by following the example command.

      $ ibmcloud is key-create my-ssh-key @ibmcloud.pub --key-type ed25519
      Copy to Clipboard Toggle word wrap
    4. You need to create a Floating IP for your IBM Cloud instance by following the example command. Ensure you change the region to your preferred zone.

      $ ibmcloud is floating-ip-reserve my-public-ip --zone <region>
      Copy to Clipboard Toggle word wrap
  3. You need to select the instance profile that you want to use for the deployment. List all the profiles by running the following command:

    $ ibmcloud is instance-profiles
    Copy to Clipboard Toggle word wrap

    Make a note of your preferred instance profile, you will need it for your instance deployment.

  4. You can now start creating your IBM Cloud instance. Populate environment variables for when you create the instance.

    name=my-rhelai-instance
    vpc=my-vpc-in-us-east
    zone=us-east-1
    subnet=my-subnet-in-us-east-1
    instance_profile=gx3-64x320x4l4
    image=my-custom-rhelai-image
    sshkey=my-ssh-key
    floating_ip=my-public-ip
    disk_size=250
    Copy to Clipboard Toggle word wrap
  5. You can now launch your instance, by running the following command:

    $ ibmcloud is instance-create \
        $name \
        $vpc \
        $zone \
        $instance_profile \
        $subnet \
        --image $image \
        --keys $sshkey \
        --boot-volume '{"name": "'${name}'-boot", "volume": {"name": "'${name}'-boot", "capacity": '${disk_size}', "profile": {"name": "general-purpose"}}}' \
        --allow-ip-spoofing false
    Copy to Clipboard Toggle word wrap
  6. Link the Floating IP to the instance by running the following command:

    $ ibmcloud is floating-ip-update $floating_ip --nic primary --in $name
    Copy to Clipboard Toggle word wrap

User account

The default user account in the RHEL AI AMI is cloud-user. It has all permissions via sudo without password.

Verification

  • To verify that your Red Hat Enterprise Linux AI tools are installed correctly, run the ilab command:

    $ ilab
    Copy to Clipboard Toggle word wrap

    Example output

    $ ilab
    Usage: ilab [OPTIONS] COMMAND [ARGS]...
    
      CLI for interacting with InstructLab.
    
      If this is your first time running ilab, it's best to start with `ilab
      config init` to create the environment.
    
    Options:
      --config PATH  Path to a configuration file.  [default:
                     /home/<user>/.config/instructlab/config.yaml]
      -v, --verbose  Enable debug logging (repeat for even more verbosity)
      --version      Show the version and exit.
      --help         Show this message and exit.
    
    Commands:
      config    Command Group for Interacting with the Config of InstructLab.
      data      Command Group for Interacting with the Data generated by...
      model     Command Group for Interacting with the Models in InstructLab.
      system    Command group for all system-related command calls
      taxonomy  Command Group for Interacting with the Taxonomy of InstructLab.
    
    Aliases:
      chat      model chat
      generate  data generate
      serve     model serve
      train     model train
    Copy to Clipboard Toggle word wrap

In [ibm-c], there is a size restriction of 250 GB of storage in the main IBM Cloud disk. RHEL AI might require more storage for models and generation data.

You can add more storage by attaching an extra disk to your instance and using it to hold data for RHEL AI.

Prerequisites

  • You have a IBM Cloud RHEL AI instance.

Procedure

  1. Create an environment variable called name that has the name of your instance by running the following command:

    $ name=my-rhelai-instance
    Copy to Clipboard Toggle word wrap
  2. Set the size of the new volume by running the following command:

    $ data_volume_size=1000
    Copy to Clipboard Toggle word wrap
  3. Create and attach the instance volume by running the following command:

    $ ibmcloud is instance-volume-attachment-add data ${name} \
        --new-volume-name ${name}-data \
        --profile general-purpose \
        --capacity ${data_volume_size}
    Copy to Clipboard Toggle word wrap
  4. You can list all the disks with the following command:

    $ lsblk
    Copy to Clipboard Toggle word wrap
  5. Create a disk variable with the content of the disk path your using. The following example command uses the /dev/vdb path.

    $ disk=/dev/vdb
    Copy to Clipboard Toggle word wrap
  6. Create a partition on your disk by running the following command:

    $ sgdisk -n 1:0:0 $disk
    Copy to Clipboard Toggle word wrap
  7. Format and label the partition by running the following command:

    $ mkfs.xfs -L ilab-data ${disk}1
    Copy to Clipboard Toggle word wrap
  8. You can configure your system to auto mount to your preferred directory. The following example command uses the /mnt directory.

    $ echo LABEL=ilab-data /mnt xfs defaults 0 0 >> /etc/fstab
    Copy to Clipboard Toggle word wrap
  9. Reload the systemd service to acknowledge the new configuration on mounts by running the following command:

    $ systemctl daemon-reload
    Copy to Clipboard Toggle word wrap
  10. Mount the disk with the following command:

    $ mount -a
    Copy to Clipboard Toggle word wrap
  11. Grant write permissions to all users in the new file system by running the following command:

    $ chmod 1777 /mnt/
    Copy to Clipboard Toggle word wrap

Updating Red Hat Enterprise Linux AI

To update to the latest z-stream version of RHEL AI, follow the procedures in the Updating Red Hat Enterprise Linux AI documentation.

Back to top
Red Hat logoGithubredditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust. Explore our recent updates.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Theme

© 2025 Red Hat