Cannot build a RHEL 8.3 system from Satellite using Full Host Image or Discovery on Red Hat Satellite 6

Solution Verified - Updated

Environment

  • Red Hat Enterprise Linux (RHEL) 8.3
  • Red Hat Satellite 6

Issue

  • Cannot build an RHEL 8.3 system from Satellite using Full Host Image or Discovery on Red Hat Satellite 6

Resolution

Follow the steps below to change the "kexec", "PXELinux", "PXEGrub" and "PXEGrub2" template.

Note: This is specific for 'RedHat 8.3'.

  1. Copy the files to the directory /tmp/:

    1. For Satellite <= 6.7:

      kickstart_default_pxelinux_rhel83.txt, discovery_red_hat_kexec_rhel83.txt, kickstart_default_pxegrub_rhel83.txt and kickstart_default_pxegrub2_rhel83.txt.

    2. For Satellite >= 6.8:

      kickstart_default_pxelinux_rhel83_sat68.txt, discovery_red_hat_kexec_rhel83.txt, kickstart_default_pxegrub_rhel83_sat68.txt, kickstart_default_pxegrub2_rhel83_sat68.txt and kickstart_kernel_options_rhel83.txt.

  2. Set the shell variable to list all operating system:

    # OS_TITLES=$(hammer --csv --no-headers os list | awk -F',' '{print $2}'  | paste -s -d,)
    
  3. Clone the current template to a custom template:

    1. All versions:

      # hammer template clone --name 'Kickstart default PXELinux' --new-name 'Kickstart_default_PXELinux_RHEL83'
      # hammer template clone --name 'Discovery Red Hat kexec' --new-name 'Discovery_Red_Hat_kexec_RHEL83'
      # hammer template clone --name 'Kickstart default PXEGrub' --new-name 'Kickstart_default_PXEGrub_RHEL83'
      # hammer template clone --name 'Kickstart default PXEGrub2' --new-name 'Kickstart_default_PXEGrub2_RHEL83'
      
    2. For Satellite <= 6.7:

      # hammer template update --type PXELinux --name 'Kickstart_default_PXELinux_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/kickstart_default_pxelinux_rhel83.txt
      # hammer template update --type kexec --name 'Discovery_Red_Hat_kexec_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/discovery_red_hat_kexec_rhel83.txt
      # hammer template update --type PXEGrub --name 'Kickstart_default_PXEGrub_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/kickstart_default_pxegrub_rhel83.txt
      # hammer template update --type PXEGrub2 --name 'Kickstart_default_PXEGrub2_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/kickstart_default_pxegrub2_rhel83.txt
      
    3. For Satellite >= 6.8:

      # hammer template clone --name 'kickstart_kernel_options' --new-name 'kickstart_kernel_options_RHEL83'
      # hammer template update --type PXELinux --name 'Kickstart_default_PXELinux_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/kickstart_default_pxelinux_rhel83_sat68.txt
      # hammer template update --type kexec --name 'Discovery_Red_Hat_kexec_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/discovery_red_hat_kexec_rhel83.txt
      # hammer template update --type PXEGrub --name 'Kickstart_default_PXEGrub_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/kickstart_default_pxegrub_rhel83_sat68.txt
      # hammer template update --type PXEGrub2 --name 'Kickstart_default_PXEGrub2_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/kickstart_default_pxegrub2_rhel83_sat68.txt
      # hammer template update --type snippet --name 'kickstart_kernel_options_RHEL83' --operatingsystems "${OS_TITLES}" --file /tmp/kickstart_kernel_options_rhel83.txt
      
    4. All versions:

      # ID_PXELINUX_RHEL83=$(hammer --csv --no-headers template list --search 'name="Kickstart_default_PXELinux_RHEL83"' | awk -F',' '{print $1}')
      # ID_KEXEC_RHEL83=$(hammer --csv --no-headers template list --search 'name="Discovery_Red_Hat_kexec_RHEL83"' | awk -F',' '{print $1}')
      # ID_PXEGRUB_RHEL83=$(hammer --csv --no-headers template list --search 'name="Kickstart_default_PXEGrub_RHEL83"' | awk -F',' '{print $1}')
      # ID_PXEGRUB2_RHEL83=$(hammer --csv --no-headers template list --search 'name="Kickstart_default_PXEGrub2_RHEL83"' | awk -F',' '{print $1}')
      
  4. Check all operating system and change them with the new custom template:

    1. For Satellite <= 6.7:

      # for ID_RHEL83 in $(hammer --csv --no-headers os list --search 'major=8 and minor=3' | awk -F',' '{print $1}')
       do
           echo "ID: ${ID_RHEL83}"
           hammer os delete-default-template --id ${ID_RHEL83} --type kexec
           hammer os delete-default-template --id ${ID_RHEL83} --type PXELinux
           hammer os delete-default-template --id ${ID_RHEL83} --type PXEGrub
           hammer os delete-default-template --id ${ID_RHEL83} --type PXEGrub2
           hammer os set-default-template --id ${ID_RHEL83} --config-template-id ${ID_PXELINUX_RHEL83}
           hammer os set-default-template --id ${ID_RHEL83} --config-template-id ${ID_KEXEC_RHEL83}
           hammer os set-default-template --id ${ID_RHEL83} --config-template-id ${ID_PXEGRUB_RHEL83}
           hammer os set-default-template --id ${ID_RHEL83} --config-template-id ${ID_PXEGRUB2_RHEL83}
       done
      
    2. For Satellite >= 6.8:

      # for ID_RHEL83 in $(hammer --csv --no-headers os list --search 'major=8 and minor=3' | awk -F',' '{print $1}')
       do
           echo "ID: ${ID_RHEL83}"
           hammer os delete-default-template --id ${ID_RHEL83} --type kexec
           hammer os delete-default-template --id ${ID_RHEL83} --type PXELinux
           hammer os delete-default-template --id ${ID_RHEL83} --type PXEGrub
           hammer os delete-default-template --id ${ID_RHEL83} --type PXEGrub2
           hammer os set-default-template --id ${ID_RHEL83} --provisioning-template-id ${ID_PXELINUX_RHEL83}
           hammer os set-default-template --id ${ID_RHEL83} --provisioning-template-id ${ID_KEXEC_RHEL83}
           hammer os set-default-template --id ${ID_RHEL83} --provisioning-template-id ${ID_PXEGRUB_RHEL83}
           hammer os set-default-template --id ${ID_RHEL83} --provisioning-template-id ${ID_PXEGRUB2_RHEL83}
       done
      

Rollback process

  1. Remove the custom templates from RHEL 8.3:

    # for ID_RHEL83 in $(hammer --csv --no-headers os list --search 'major=8 and minor=3' | awk -F',' '{print $1}')
    do
      echo "ID: ${ID_RHEL83}"
      hammer os delete-default-template --id ${ID_RHEL83} --type kexec
      hammer os delete-default-template --id ${ID_RHEL83} --type PXELinux
      hammer os delete-default-template --id ${ID_RHEL83} --type PXEGrub
      hammer os delete-default-template --id ${ID_RHEL83} --type PXEGrub2
    done
    
  2. Delete the custom templates:

    1. All versions:

      # hammer template delete --name 'Kickstart_default_PXELinux_RHEL83'
      # hammer template delete --name 'Discovery_Red_Hat_kexec_RHEL83'
      # hammer template delete --name 'Kickstart_default_PXEGrub_RHEL83'
      # hammer template delete --name 'Kickstart_default_PXEGrub2_RHEL83'
      
  3. For Satellite >= 6.8:

    # hammer template delete --name 'kickstart_kernel_options_RHEL83'
    
  4. Release default templates to all operating system

    # hammer template update --type PXELinux --name 'Kickstart default PXELinux' --operatingsystems "${OS_TITLES}"
    # hammer template update --type kexec --name 'Discovery Red Hat kexec' --operatingsystems "${OS_TITLES}"
    # hammer template update --type PXEGrub --name 'Kickstart default PXEGrub' --operatingsystems "${OS_TITLES}"
    # hammer template update --type PXEGrub2 --name 'Kickstart default PXEGrub2' --operatingsystems "${OS_TITLES}"
    
  5. Rollback to default templates:

    1. All versions:

      # ID_PXELINUX=$(hammer --csv --no-headers template list --search 'name="Kickstart default PXELinux"' | awk -F',' '{print $1}')
      # ID_KEXEC=$(hammer --csv --no-headers template list --search 'name="Discovery Red Hat kexec"' | awk -F',' '{print $1}')
      # ID_PXEGRUB=$(hammer --csv --no-headers template list --search 'name="Kickstart default PXEGrub"' | awk -F',' '{print $1}')
      # ID_PXEGRUB2=$(hammer --csv --no-headers template list --search 'name="Kickstart default PXEGrub2"' | awk -F',' '{print $1}')
      
    2. For Satellite <= 6.7:

      # for ID_RHEL83 in $(hammer --csv --no-headers os list --search 'major=8 and minor=3' | awk -F',' '{print $1}')
       do
           echo "ID: ${ID_RHEL83}"
           hammer os set-default-template --id ${ID_RHEL83} --config-template-id ${ID_PXELINUX}
           hammer os set-default-template --id ${ID_RHEL83} --config-template-id ${ID_KEXEC}
           hammer os set-default-template --id ${ID_RHEL83} --config-template-id ${ID_PXEGRUB}
           hammer os set-default-template --id ${ID_RHEL83} --config-template-id ${ID_PXEGRUB2}
       done
      
    3. For Satellite >= 6.8:

      # for ID_RHEL83 in $(hammer --csv --no-headers os list --search 'major=8 and minor=3' | awk -F',' '{print $1}')
       do
           echo "ID: ${ID_RHEL83}"
           hammer os set-default-template --id ${ID_RHEL83} --provisioning-template-id ${ID_PXELINUX}
           hammer os set-default-template --id ${ID_RHEL83} --provisioning-template-id ${ID_KEXEC}
           hammer os set-default-template --id ${ID_RHEL83} --provisioning-template-id ${ID_PXEGRUB}
           hammer os set-default-template --id ${ID_RHEL83} --provisioning-template-id ${ID_PXEGRUB2}
       done
      

For more KB articles/solutions related to Red Hat Satellite 6.x Provisioning Issues, please refer to the Consolidated Troubleshooting Article for Red Hat Satellite 6.x Provisioning related Issues

Root Cause

In Red Hat Enterprise (RHEL) 8.3 has modified the instruction to BOOTIF, refer to the following Bugzilla related to this change:

SBR
Product(s)
Components
Category

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.