Enroll a bare metal node with Redfish Virtual Media

This procedure describes how to enroll and configure an Ironic bare metal node for fully automated UEFI provisioning using Redfish Virtual Media. Use this method when PXE is unavailable or when a more reliable HTTP-based boot process is required.

Prerequisites

Before starting the enrollment process, verify that the following images are available in the MOSK Image service (OpenStack Glance):

  • Deployment kernel

  • Deployment ramdisk

  • EFI System Partition (ESP) image

Prepare and enroll a Redfish node

  1. Locate the EFI System Partition (ESP) image.

    The ESP image is required to create a bootable ISO image with UEFI support. MOSK provides a prebuilt ESP image by default:

    1. Retrieve the UUID of the prebuilt ESP image:

      openstack image list --tag rockoon:managed-image --tag rockoon:baremetal-image-esp
      

      Example of a positive system response:

      +--------------------------------------+--------------------+--------+
      | ID                                   | Name               | Status |
      +--------------------------------------+--------------------+--------+
      | ad7adc69-5628-4980-8275-3411463b6c7b | ironic-esp-196c5fb | active |
      +--------------------------------------+--------------------+--------+
      
    2. Save the ID as an environment variable for use in the enrollment command. For example:

      export IRONIC_ESP_IMAGE=ad7adc69-5628-4980-8275-3411463b6c7b
      

    Note

    You can also use a custom ESP image. It must contain a GRUB2 image file and Shim for secure boot. For details, refer to OpenStack official documentation .

  2. Define the following enrollment parameters to establish communication between Ironic and Redfish controller and define the boot path:

    Parameter

    Requirement

    Description

    --driver

    Required

    The default driver to use for the newly enrolled nodes. It must be redfish for using Redfish Virtual Media.

    --driver-info deploy_kernel

    Required

    UUID (from Glance) of the deployment kernel.

    --driver-info deploy_ramdisk

    Required

    UUID (from Glance) of the ramdisk that is mounted at boot time.

    --driver-info redfish_password

    Optional

    Password for the Redfish account. Highly recommended for production.

    --driver-info redfish_username

    Optional

    Account with admin/server-profile access privilege. Highly recommended for production.

    --driver-info redfish_address

    Required

    The URL of the Redfish controller. It must include the authority portion of the URL. If the scheme is missing, https is assumed. If a path is added, it will be used as the API endpoint root_prefix.

    --driver-info redfish_system_id

    Optional

    The canonical path to the ComputerSystem resource that the driver will interact with. It must include the root service, version, and the unique resource path to ComputerSystem within the same authority as the redfish_address property. For example, /redfish/v1/Systems/1. This property is only required if the target BMC manages more than one ComputerSystem.

    --driver-info bootloader

    Optional

    Glance UUID, http:// or file:// URL of the EFI system partition image containing EFI boot loader. Required for UEFI boot mode.

    --boot-interface

    Required

    The boot interface name that manages booting of both the deployment ramdisk and the user instances on the bare metal node. Must be set to redfish-virtual-media.

    Note

    To view the full list of available Redfish driver properties, run:

    openstack baremetal driver property list redfish
    

    For example, to define the enrollment parameters in the node creation command:

    export IRONIC_ESP_IMAGE=ad7adc69-5628-4980-8275-3411463b6c7b
    openstack baremetal node create \
              --driver redfish \
              --driver-info deploy_kernel=<DEPLOY_KERNEL_IMAGE_ID> \
              --driver-info deploy_ramdisk=<DEPLOY_RAMDISK_IMAGE_ID> \
              --driver-info redfish_password=<REDFISH_PASSWORD> \
              --driver-info redfish_username=<REDFISH_USERNAME> \
              --driver-info redfish_address=http://10.10.0.101:8000 \
              --driver-info redfish_system_id=/redfish/v1/Systems/n1 \
              --driver-info bootloader=${IRONIC_ESP_IMAGE} \
              --boot-interface redfish-virtual-media
    

    Additionally, you can set the majority of these parameters after bare metal node creation:

    export IRONIC_ESP_IMAGE=ad7adc69-5628-4980-8275-3411463b6c7b
    openstack baremetal node create --driver redfish --name test_node_1
    openstack baremetal node set test_node_1 --driver-info bootloader=${IRONIC_ESP_IMAGE}
    openstack baremetal node set test_node_1 --boot-interface redfish-virtual-media
    ...
    

After successful enrollment, the node will be in the enroll state. You must move it to the manageable and then available state to make it ready for provisioning.